Go 插件每日推荐之 go-promptui | Go 主题月命令行应用程序的交互式提示。 Promptui 是一个库,
大家好,我是 @洛竹
本文首发于 洛竹的官方网站
本文同步于公众号『洛竹早茶馆』,转载请联系作者。
创作不易,养成习惯,素质三连!
命令行应用程序的交互式提示。
我们之所以建立 Promptui,是因为我们想让使用 manifold cli 探索云服务变得简单而有趣
预览
Promptui 是一个库,提供了一个简单的界面来创建 go 的命令行提示符。它可以很容易地集成到 spf13/cobra、 urfave/cli 或任意 go CLI 程序。
Promptui 有两个输入模式:
Prompt
为用户提供了单行输入。提示支持可选的实时验证、确认和遮罩输入。Select
提供了可供选择的选项列表。选择支持分页、搜索、详细视图和自定义模板。
基础使用
Prompt
package main
import (
"errors"
"fmt"
"strconv"
"github.com/manifoldco/promptui"
)
func main() {
validate := func(input string) error {
_, err := strconv.ParseFloat(input, 64)
if err != nil {
return errors.New("Invalid number")
}
return nil
}
prompt := promptui.Prompt{
Label: "Number",
Validate: validate,
}
result, err := prompt.Run()
if err != nil {
fmt.Printf("Prompt failed %v\n", err)
return
}
fmt.Printf("You choose %q\n", result)
}
Select
package main
import (
"fmt"
"github.com/manifoldco/promptui"
)
func main() {
prompt := promptui.Select{
Label: "Select Day",
Items: []string{"Monday", "Tuesday", "Wednesday", "Thursday", "Friday",
"Saturday", "Sunday"},
}
_, result, err := prompt.Run()
if err != nil {
fmt.Printf("Prompt failed %v\n", err)
return
}
fmt.Printf("You choose %q\n", result)
}
confirm
package main
import (
"fmt"
"github.com/manifoldco/promptui"
)
func main() {
prompt := promptui.Prompt{
Label: "Delete Resource",
IsConfirm: true,
}
result, err := prompt.Run()
if err != nil {
fmt.Printf("Prompt failed %v\n", err)
return
}
fmt.Printf("You choose %q\n", result)
}
更多示例
查看完整列表 examples
转载自:https://juejin.cn/post/6946918810947420167