
받아온 args에서 데이터를 추출하는 parseCommandLine 함수 추가
// parser/ParseCommandLine.kt
package parser
fun parseCommandLine(args: Array<String>): Map<String, String> {
if (args.isEmpty()) { // 아무 커맨드라인도 입력하지 않은 경우
return mapOf()
}
val parseData = mutableMapOf<String, String>()
parseData["command"] = args[0] // 추후 옵션에 관한 데이터도 추가할 예정
return parseData
}
Geet 명령어를 처리하는 processGeet 함수, 아무 커맨드도 입력하지 않은 경우 Geet 설명을 출력하는 guideGeet 함수 추가
// geet/ProcessGeet.kt
package geet
import geet.commands.*
fun processGeet(parseData: Map<String, String>): Unit {
when (parseData["command"]) {
"init" -> geetInit() // "init" 명령어 입력한 경우
null -> guideGeet() // 아무 명령어도 입력하지 않은 경우 설명 출력
else -> println("'geet ${parseData["command"]}'은 지원하는 명령어가 아닙니다.") // 지원하지 않는 명령어를 입력한 경우
}
}
fun guideGeet(): Unit {
println("<<<Geet - Git 따라 만들면서 파악하기>>>")
println()
println("현재 사용 가능한 명령어 목록") // 추후 계속 추가할 예정
println(" init 현재 디렉토리에 새로운 Geet 저장소를 초기화합니다.")
println()
println("----------------------------------------")
println("깃헙 저장소 링크 - https://github.com/SongJSeop/Geet")
println("학습 및 개발 기록 링크 - https://abyssinian-cherry-9fc.notion.site/Geet-Git-2442af8184ee48c6ae8eb5990ff7652d")
}
이제 init 명령어를 처리하는 geetInit 함수 추가
// geet/commands/GeetInit.kt
package geet.commands
import java.io.File
fun geetInit(): Unit {
if (File(".geet").exists()) {
println("이미 Geet 저장소가 초기화되어 있습니다.")
return
}
File(".geet").mkdir()
File(".geet/HEAD").writeText("ref: refs/heads/master")
File(".geet/config").writeText("""
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
""".trimIndent())
File(".geet/description").writeText("Unnamed geet repository; edit this file 'description' to name the repository.")
File(".geet/hooks").mkdir()
File(".geet/info").mkdir()
File(".geet/objects").mkdir()
File(".geet/objects/info").mkdir()
File(".geet/objects/pack").mkdir()
File(".geet/refs").mkdir()
File(".geet/refs/heads").mkdir()
File(".geet/refs/tags").mkdir()
println("Geet 저장소를 초기화했습니다.")
}
일단 여기까지 하고 빌드 후 실행해 보았음
.geet 폴더 및 하위 파일, 폴더들이 잘 생성된 모습
