使用 Promptui 裝修命令行 Go 應用程序

【導讀】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

轉自:dfsgwe1231

blog.csdn.net/dfsgwe1231/article/details/106008440

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/MhOm6EeOZxzi2FeZeVZIxA