fun doLsStats()

in bunch-cli/src/main/kotlin/org/jetbrains/bunches/stats.kt [106:144]


fun doLsStats(path: String) {
    val (statsDir, gitRoot) = fetchStatsDirs(path)
    val extensions = readExtensionsFromFile(gitRoot).resultWithExit()

    val gitignoreParseResult = parseGitIgnore(gitRoot)

    var count = 0
    var total = 0

    statsDir
        .walkTopDown()
        .onEnter { dir ->
            val ignoreDir = shouldIgnoreDir(dir, gitRoot, gitignoreParseResult)
            if (ignoreDir) {
                val lsName = printLSDirName(dir, statsDir)
                if (lsName != null) {
                    println("%6s %s".format("ignore", lsName))
                    count = 0
                }
            }
            !ignoreDir
        }
        .onLeave { dir ->
            val lsName = printLSDirName(dir, statsDir)
            if (lsName != null) {
                println("%6d %s".format(count, lsName))
                count = 0
            }
        }
        .onEach { child ->
            if (child.extension in extensions) {
                count++
                total++
            }
        }.forEach { _ -> }

    println()
    println("Total: $total")
}