CLISpinner

Travis

终端中使用的 60 多种旋转动画

无耻地抄袭自 sindresorhus/cli-spinners

安装

.package(url: "https://github.com/kiliankoe/CLISpinner", from: "see latest release")

用法

只想显示一个简单的旋转动画两秒钟?

let s = Spinner(pattern: .dots)
s.start()
sleep(2)
s.stop()

想要一些变化的文本和图案?

let s = Spinner(pattern: .dots, text: "Foobar...", color: .lightCyan)
s.start()
sleep(2)
s.succeed(text: "Barfoo")
// will change the displayed text to '✔ Barfoo'

制作了自己的自定义图案?

let pattern = try Pattern.load(from: "/path/to/your/pattern.json")
let s = spinner(pattern: pattern)
s.start()
sleep(2)
s.stop()

想要来自 sindresorhus/cli-spinners 的所有图案?

let patterns = try Patterns(from: "/path/to/spinners.json")
let s = spinner(pattern: patterns["christmas"]!)
s.start()
sleep(2)
s.stop()

基本上就是这样 👌

创建自己的图案

Pattern 类型可以使用以下格式从 JSON 文件中读取图案

{
    "frames": [
        "1",
        "2",
        "3",
        "4",
        "5"
    ],
    "speed": 0.08
}

要将多个图案保存在一个文件中

{
    "pattern-name1": {
        "frames": [
            "<(**<)",
            "<(**)>",
            "(>**)>"
        ],
        "speed": 0.01
    },
    "pattern-name2": {
        "frames": [
            "1",
            "2",
            "3",
            "2"
        ],
        "speed": 0.12
    }
}

注意

为了看起来美观,旋转动画会在运行时隐藏用户的光标,并在停止时再次显示。 这样做的问题是,如果用户中断进程(例如通过 ctrl+c 发送 SIGINT),光标仍然会被隐藏。 最好的方法是在您的代码中设置一个信号处理程序,并在退出时调用 spinner.unhideCursor()。 此库特意不为您执行此操作,以免干扰您可能已设置的任何信号处理程序。

请参阅 IBM-Swift/BlueSignals,了解处理信号的干净安全的方法。 您的项目的适当信号处理程序可能如下所示。

import Signals

let spinner = Spinner(pattern: .dots)
// ...

Signals.trap(signal: .int) { _ in
    spinner.unhideCursor()
    exit(0)
}

使用者