Skip to content

用Golang开发的交互式命令行组件库 #59

@fzdwx

Description

@fzdwx

推荐项目

  • 项目地址:https://github.com/fzdwx/infinite

  • 类别:Go

  • 项目标题:用Golang开发的交互式命令行组件库。

  • 项目描述:
    它提供了一些常用的交互式组件,比如说progress,progress group,mulit select,input text,confirm等.同时也提供了一些更基础的组件,方便用户进行组合使用。

  • 亮点:

    • 提供一系列开箱即用的组件
      • autocomplete
      • progress bar / progress-bar group
      • multi/single select
      • spinner
      • confirm
      • input
    • 支持 window/linux (我现在只有这两种操作系统)
    • 可定制,你可以替换组件中的某些选项或方法为你自己的实现
    • 可组合,你可以将一个或多个基础组件联合在一起使用
      • autocompleteinputselection 组成
      • selection 通过嵌入input 来实现过滤功能.
  • 示例代码
    这个 一个multi select的代码案例

package main

import (
	inf "github.com/fzdwx/infinite"
	"github.com/fzdwx/infinite/color"
	"github.com/fzdwx/infinite/components"
	"github.com/fzdwx/infinite/components/selection/multiselect"
	"github.com/fzdwx/infinite/style"
)

func main() {
	input := components.NewInput()
	input.Prompt = "Filtering: "
	input.PromptStyle = style.New().Bold().Italic().Fg(color.LightBlue)

	_, _ = inf.NewMultiSelect([]string{
		"Buy carrots",
		"Buy celery",
		"Buy kohlrabi",
		"Buy computer",
		"Buy something",
		"Buy car",
		"Buy subway",
	},
		multiselect.WithHintSymbol("x"),
		multiselect.WithUnHintSymbol("√"),
		multiselect.WithFilterInput(input),
	).Display("select your items!")
}
  • 截图:

autocomplete:
demo

print
demo

multi select
image

progress bar
image

confirm
image

Metadata

Metadata

Assignees

No one assigned

    Labels

    recommend每日一库推荐

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions