fun doReduce()

in bunch-cli/src/main/kotlin/org/jetbrains/bunches/reduce.kt [133:158]


fun doReduce(settings: Settings) {
    if (settings.action == ReduceAction.COMMIT) {
        uncommittedChanges(settings.repoPath).checkAndExitIfNeeded {
            exitWithError(UNCOMMITTED_CHANGES_MESSAGE)
        }
    }

    val files = getReducibleFiles(settings.repoPath, settings.bunchPath)

    if (files.isEmpty()) {
        print(EMPTY_REDUCE_MESSAGE)
        return
    }

    if (settings.action == ReduceAction.PRINT) {
        files.sort()
        for (file in files) {
            println(File(settings.repoPath).absoluteFile.toPath().relativize(file.absoluteFile.toPath()))
        }
        return
    }

    assert(settings.action == ReduceAction.DELETE || settings.action == ReduceAction.COMMIT)

    deleteReducibleFiles(settings, files)
}