
merge 명령어는 브랜치와 브랜치를 병합하는 역할을 한다.
내가 구현할 것은 다음과 같다.
일단 merge 명령어에 대한 옵션을 다음과 같이 얻어온다.
// geet/commands/porcelain/geetMerge.kt
package geet.commands.porcelain
import geet.exceptions.BadRequest
import geet.utils.commandutil.porcelainutil.merge
data class GeetMergeOptions(
val branchName: String? = null, // 브랜치 이름
val option: String? = null // --abort 또는 --continue
)
fun geetMerge(commandLines: Array<String>): Unit {
val geetMergeOptions = getGeetMergeOptions(commandLines)
merge(geetMergeOptions)
}
fun getGeetMergeOptions(commandLines: Array<String>): GeetMergeOptions {
if (commandLines.size == 1) {
throw BadRequest("병합할 브랜치 이름을 함께 입력하세요.")
}
if (commandLines.size > 3) {
throw BadRequest("옵션을 잘못 입력하셨습니다.")
}
when (val command = commandLines[1]) {
"--abort" -> return GeetMergeOptions(option = "abort")
"--continue" -> return GeetMergeOptions(option = "continue")
else -> return GeetMergeOptions(branchName = command)
}
}
그리고 옵션에 대해 merge 명령어를 구현하는 도중 많은 문제점을 느꼈다.
위와 같은 이유로 프로젝트를 처음부터 다시 시작하기로 마음 먹었다.
힘든 결정이었지만 내 정신 건강을 위해서, 그리고 다시 좀 더 완벽하게 구현하고 싶은 마음이 있어서 그렇게 하기로 했다..