我最近正在開發一個用 Go 編寫的 CLI 工具,最近使用了 Cobra 工具,我有一個用例,我需要其中一個命令的巢狀提示。我使用 Promptui 作為提示,但找不到直接的方法來執行此操作。這篇短文將展示如何使用promptui 建立嵌套提示。完整的程式碼可以在這裡找到。
我們首先需要建立一個空的Go專案。我們稱之為嵌套提示:
然後我們將安裝 cobra、cobra-cli 和 Promptui 軟體包:
我們可以使用 cobra-cli 初始化一個新的 CLI 應用程序,並向我們的 CLI 添加命令
我們可以清理cmd/config.go檔案並刪除所有註解。應該是這樣的:
我們首先需要為我們的提示建立一個自訂類型。我們透過定義一個提示項目結構來做到這一點,如下所示
PromptType 枚舉可讓我們從提示中收集不同類型的輸入,我們可以提示使用者輸入文字或敏感值(例如密碼或 API 金鑰),或提示使用者從定義值清單中進行選擇
然後我們定義一個promptInput函數來提示使用者輸入。此函數傳回使用者輸入的字串值,如果提示失敗則傳回錯誤。
然後我們定義一個 PromptSelect 函數,允許使用者從選項清單中進行選擇。此函數傳回使用者選擇的字串值,如果提示失敗則傳回錯誤。
為了模擬巢狀提示,我們將建立一個 PromptNested 函數,該函數將允許我們提示使用者輸入值,並且提示將保持活動狀態,直到使用者選擇「完成」。此函數傳回布林值,表示提示成功。
函數中的註解解釋了每個主要程式碼區塊的職責
現在我們擁有了所需的所有方法,我們需要測試它們。在configCmd指令的Run函數中,我們將建立一個promptItem列表並呼叫promptNested函數來提示使用者輸入。 Run 函數應該如下所示:
如下建置並測試應用程式
結果如下
以上是使用promptui 在 Go 中嵌套提示的詳細內容。更多資訊請關注PHP中文網其他相關文章!