SwiftBar

用 Swift 编写的命令行工具进度条。

字体

强烈建议安装 Nerd Fonts。它可能无法与普通字体一起使用。

终端类型

不支持 Dumb 终端

安装

import PackageDescription

let package = Package(
        name: "Your Package",
        dependencies: [
            .package(url: "https://github.com/skunkrocker/SwiftBar.git", from: "1.0.2")
        ]
)

使用方法

未知持续时间

用于未知持续时间的任务,调用无限 (aeon) 功能块

print("Signal Type".bold)
let signalMsg = "🔥 Long Job".bold + " .signal ".blue + " type".bold
let signalCompleteMsg = "Long Job".bold + " .signal ".blue + "type done".bold
waitForAsync { stopWaiting in
    aeon(.signal, signalMsg, signalCompleteMsg) { start, complete in
       let wget = SwiftShell.run("which", "wget").stdout
        runAsync(wget,"-P", "/tmp" , "http://ipv4.download.thinkbroadband.com/20MB.zip").onCompletion { command in
            complete()
            stopWaiting()
        }
        start()
   }
}

使用 AeonType 中的一种来定义进度动画的外观。

enum AeonType {
    case led
    case led2
    case moon
    case signal
}
aeon-bar.mov

已知持续时间

显示具有已知持续时间的任务的进度条

print("Pac Bar".bold)
print()
        
var index = 0
        
barz(type: .pac, total: files.count) { update, complete in
    files.forEach { file in
        let  headerMessage = "Copying file ".blue.bold + TRAFIC_LIGHT + " " + file.green.bold
                
        update(index + 1, headerMessage)
                
        //Do the heavy lifting here
        
        index += 1
    }
    complete()
}

使用 BarType 中的一种来定义进度动画的外观。

public enum BarType {
    case pac
    case pac2
    case bars
}
known-progress.mov

建议

您可以建议新功能。请通过 Pull Request 提交。