首页 > 其他分享 >Go每日一库之172:go-prompt

Go每日一库之172:go-prompt

时间:2023-09-29 21:22:32浏览次数:46  
标签:shell prompt kafka 一库 交互式 go Go

简介

受python提示工具包的启发,在Go中构建强大的交互式提示

一、代码示例

package main

import (
	"fmt"
	"github.com/c-bata/go-prompt"
)

func completer(d prompt.Document) []prompt.Suggest {
	s := []prompt.Suggest{
		{Text: "users", Description: "Store the username and age"},
		{Text: "articles", Description: "Store the article text posted by user"},
		{Text: "comments", Description: "Store the text commented to articles"},
	}
	return prompt.FilterHasPrefix(s, d.GetWordBeforeCursor(), true)
}

func main() {
	fmt.Println("Please select table.")
	t := prompt.Input("> ", completer)
	fmt.Println("You selected " + t)
}

每日一库之172:go-prompt-0

二、使用go-prompt的项目

  • c-bata/kube-prompt:一个交互式的kubernetes客户机,以用Go编写的auto-complete为特色。
  • lancher/cli:rancher命令行界面(cli)是管理您的rancher服务器的统一工具
  • kubicorn/kubicorn:Kubernetes的简单的云本地基础设施。
  • cch123/asm-cli:基于unicorn和rasm2的交互式汇编语言shell(X86/X64)
  • ktr0731/evans:更具表现力的通用gRPC客户端
  • crushepixel/moshpit:一个Command-line数据拼接工具。
  • last-ent/testy-go:testygo:一个易于测试的工具!
  • tiagorlampert/CHAOS:允许生成有效负载和控制远程操作系统的PoC。
  • abs-lang/abs:ABS是一种脚本语言,在终端上运行得最好。它试图将Python或Ruby等语言的优雅与Bash的便利结合起来。
  • takashabe/btcli:btcli是Bigtable的CLI客户端。有很多读取选项和auto-completion。
  • ysn2233/kafka-prompt:在现有kafka命令客户机上构建的交互式kafka-prompt(kafka-shell)
  • fishi0x01/vsh:HashiCorp Vault交互式shell
  • mstrYoda/docker-shell:docker的简单交互式提示
  • c-bata/gh-prompt:一个交互式GitHub CLI,具有auto-complete。
  • docker-slim/docker-slim:不要更改Docker容器映像中的任何内容,并将其缩小到30倍(对于编译语言,甚至更大),使其更安全!(免费和开源)
  • rueyaa332266/ezcron:ezcron是一个CLI工具,可以帮助您更轻松地处理cron表达式。
  • qsctl:qingstor对象存储的高级命令行工具。

三、特性

1. 强大的自动完成

2. 灵活的功能选项

3. 快捷键

Emacs-like默认情况下可以使用键盘快捷键(这些也是bashshell中的默认快捷键)。您可以自定义和展开这些快捷方式。

4. 历史记录

可以使用向上箭头和向下箭头浏览已执行命令的历史记录。

5. 跨平台支持

我们确认go-prompt在以下终端正常工作:

iTerm2 (macOS)
Terminal.app (macOS)
命令提示符(Windows)
gnome-terminal (Ubuntu)

标签:shell,prompt,kafka,一库,交互式,go,Go
From: https://www.cnblogs.com/arena/p/17737363.html

相关文章

  • Go每日一库之133:lo(基于泛型的 Golang lodash 库)
    近日,Go核心开发团队终于宣布了Go1.18正式版本的发布!这是一个大家期待很久的版本!Go1.18包含大量新功能:模糊测试、性能改进、工作区等,以及Go语言开源以来最大的一次语法特性变更——支持泛型!支持泛型后,我们便不再需要写如下冗余的代码:现在只需要简单的一行即可:funcMi......
  • Go每日一库之132:wasm与tinygo
    WASM的概念,这几年还是挺火的,新的语言,比如Rust、Go、Swift等,都对WASM提供支持。相比之下,Go语言的简单性,使得对WASM的支持,使用起来也较简单。本文是目前公开资料中为数不多较完整的教程,希望能对你有帮助。WASM是什么标题说:“Golang中的Wasm太棒了。”,但请用几句话来说......
  • Go每日一库之131:caddy(轻量web服务器)
    一直以来,我都是使用Nginx作为Web服务器,但是配置可以说是非常麻烦了。每次我要新开一个域名,都要先使用acme.sh签发SSL证书,然后再写配置,大概要花上5分钟的时间。曾经想过写个脚本自动完成这些工作,但是苦于对Linux的了解不多,也就作罢了。最近看到了Caddy,一个用Go写的......
  • Go每日一库之130:go-humanize(人性化显示)
    go-humanize是一个「人性化」的Go语言库,人性化的意思不是形容这个Go语言库,而是这个Go语言库实现的功能,它可以把数字、时间、容量等转换为我们人类容易理解的词语,比如硬盘的容量是82854982bytes,我们可不太好理解,但是如果说容量是83M,那就好理解了,go-humanize干的就是这个事情。......
  • Go每日一库之129:promu(Prometheus构建发布工具)
    众所周知,Go语言中打包命令是gobuild。在项目中,你可以单独使用gobuild命令对项目进行编译打包,也可以根据自己的需要,在该命令后加各种参数。prometheus官方为了统一项目(包括prometheus、alertmanager和各种官方的exporter)的编译和打包,开发了promu工具。官方对promu工具......
  • Go每日一库之128:podinfo(k8s微服务模板)
    项目介绍官方Github:PodinfoPodinfo是一个用Go制作的小型web应用程序,它展示了在Kubernetes中运行微服务的最佳实践。它已实现的技术指标(截选自官方README.md):里面每一项技术指标的实现方式,其实都可以拿出来单独讲好久,相关理论也有好多。这里我只是讲针对这个项......
  • Go每日一库之145:MinIO(高性能对象存储)
    1.MinIO简介MinIO是一个基于Go实现的高性能、兼容S3协议的对象存储。它采用GNUAGPLv3开源协议,项目地址是https://github.com/minio/minio,官网是https://min.io。它适合存储海量的非结构化的数据,例如说图片、音频、视频等常见文件,备份数据、容器、虚拟机镜像等等,小......
  • Go每日一库之146:bbs-go(bbs框架)
    概要bbs-go是一款基于Go语言研发的开源、前后端分离、精美小巧、跨平台的社区系统。初期该项目仅用过学习和交流,开源之后越来越多的小伙伴儿开始喜欢和关注他,这也是我长期升级和维护的动力。bbs-go为前后端分离设计,后端接口服务使用简洁的Go语言进行开发,前端页面使用Vue.js进......
  • Go每日一库之144:go-obs-websocket(OBS连接器)
    推荐理由互联网的兴起带动了直播行业的火热,除了少数直播网站有自己的推流工具之外,OBS是主流的推流工具,广泛应用在直转播技术之上。简介go-obs-websocket是一个与OBS进行websocket通信的连接库,具备调用大部分OBS功能的接口,在互动直播和智能转播技术上广泛应用。快速开始安装g......
  • Go每日一库之143:servicegroup(进程内优雅管理多个服务)
    前言在go-zero社区里,经常会有同学问,把APIgateway和RPCservice放在同一个进程内可不可以?怎么弄?有时也会有同学把对外服务和消费队列放在一个进程内。咱们姑且不说此种用法合理与否,因为各个公司的业务场景和开发模式的差异,我们就只来看看此类问题怎么解比较优雅。问题举例......