fun doSwitch()

in bunch-cli/src/main/kotlin/org/jetbrains/bunches/switch.kt [99:134]


fun doSwitch(settings: Settings) {
    uncommittedChanges(settings.repoPath).checkAndExitIfNeeded {
        exitWithError("Can not do switch with uncommitted changes.")
    }

    checkLastCommitsNotContainSwitches(settings.repoPath)

    val parameterRuleStr = settings.rule
    val rule = if (parameterRuleStr.contains('_')) {
        parameterRuleStr
    } else {
        // Short rule format with destination bunch only
        readRuleFromFile(parameterRuleStr, settings.bunchPath)
    }

    val suffixes = rule.split("_")
    if (suffixes.isEmpty()) {
        exitWithError("Don't know how to switch to `$parameterRuleStr`")
    }

    if (suffixes.size != 1) {
        if (settings.step) {
            doStepByStepSwitch(suffixes, settings.repoPath, settings.commitTitle)
        } else {
            doOneStepSwitch(suffixes, settings.repoPath, settings.commitTitle)
        }
    }

    if (settings.doCleanup) {
        cleanup(
            org.jetbrains.bunches.cleanup.Settings(
                settings.repoPath, settings.bunchPath, extension = null, commitTitle = RESTORE_CLEANUP_COMMIT_TITLE, isNoCommit = false
            )
        )
    }
}