使用Promptui改善您的命令行Go应用程序

本文介绍如何使用promptui库提升Go语言编写的命令行应用程序的交互体验。通过示例展示如何创建提示输入界面、选择列表及显示数据等。

hintui是一个Go库,它提供了一个用于创建cli提示的简单界面。 该库有两种主要模式: 提示 -提供用户输入的一行; 选择 - 选择 ,显示要选择的项目列表。 两种模式都有几种自定义选项,并利用强大的读取线支持多个终端。

在本文中,我们将创建一个食品食谱命令行应用程序,该应用程序询问菜式,从API检索信息并显示相关食谱。

如果要跳至完整的应用程序源代码,请访问: https : //github.com/luizbranco/promptui-demo/

初始提示

在开始我们的应用程序之前,我们首先需要获取该库:

go get -u github.com/manifoldco/promptui

这样,我们就可以开始编写main.go文件了。

如果然后运行该程序,则应该看到提示要求搜索的提示:

go run main.go

看起来不错,但是如果我们只按Enter键而不输入信息,它仍然有效。 如果我们可以防止空搜索,那就太好了。 因此,让我们向提示添加验证:

这是一个非常简单的验证。 但是,例如,您可以使用regexp或govalidator创建更复杂的代码

检索数据

对于此cli应用程序,我们将使用超赞的RecipePuppy搜索食谱。 其API不需要身份验证,因此非常适合我们的实验

首先,我们定义如何请求数据:

这很容易! 现在,我们必须解析响应JSON。 首先,我们需要一个返回数据的示例:

如我们所见,每个标题都有一系列带有标题,链接和成分列表的结果。 这样,我们可以定义一些结构来解析主体:

显示数据

现在我们已经解析了配方列表,我们可以使用Select将其显示给用户。

好吧,这有点丑陋。 这里的问题是,提示符提示符通常希望显示一部分字符串。 但是我们有配方结构。 我们必须教提示如何显示它们。 那是模板方便的时候:

如果您使用过Go 模板/ html ,则应该熟悉语法。 现成的Promptui支持一些模板功能,例如颜色和样式,但是您可以定义自己的帮助器。

好多了! 注意那里的披萨unicode符号。 Go支持UTF-8源代码👍。

额外细节

由于我们还有成分列表,因此我们可以在用户使用“ Details模板选项将元素悬停在元素上时显示它。 但是首先,让我们成为好cli公民,避免使用大量配料!

这定义了一个自定义帮助函数,该函数将截断长度超过X个字符的字符串。 然后我们将模板更改为:

搜索

最后,允许用户在线搜索列表中的配方名称或配料:

与验证示例一样,这是一个简单的字符串搜索,但是您可以根据需要进行复杂的搜索。

最后的想法

promptui是我们命令行工具 Manifold的一部分,当用户没有输入命令所需的所有标志时,我们主要将它用作后备。 这个小应用程序显示了hintuiui的一些功能,但是该库提供了更多功能。 确保检查Github项目页面

From: https://hackernoon.com/improve-your-command-line-go-application-with-promptui-258ebe9eed1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值