ソースコードから理解する技術-UnderSourceCode

手を動かす(プログラムを組む)ことで技術を理解するブログ

survey を使ってインタラクティブなプロンプトを作ってみた

GitHub - AlecAivazis/survey: A golang library for building interactive prompts with full support for windows and posix terminals.

タイトルにあるように、surveyを使ってインタラクティブなプロンプトを作ってみました。
どんなことが出来るかやイメージは、先頭に載せたsurveyのURLのREADMEを見れば一発で分かるかと思いますw

使い方もREADMEに書かれているのですが、雰囲気を掴むために自分でも実装してみました。

以下、今回作ったものの簡単な解説になります。
作ったものの想定はシステムのインストーラのプロンプトとなり、以下の項目を入力 or 選択させます。
(見やすくするため各項目を一行ずつ開けてあります)

? What is this system name? sample system

? Input system detail. [Enter 2 empty lines to finish]
Sample
System
Installer

? Choose your OS.:  [Use arrows to move, space to select, type to filter]
> Windows
  Linux
  Mac
  Unix
  Other

? Select install functions:  [Use arrows to move, space to select, type to filter]
  [x]  Web Server
  [ ]  Application Server
  [x]  Slack Notification
  [ ]  Database Backup

? Please type your system password.: ********

? Would you like to insatll now?: (y/N) y

上から順に書くと

  • システム名 ・・・ 文字列
  • システム詳細 ・・・ システムの詳細。複数行文字列
  • OSの種類 ・・・ WindowsLinuxMacなどから一つを選択
  • インストール機能 ・・・ Web Server、Application Serverなどから複数選択
  • パスワード ・・・ パスワード入力
  • 確認 ・・・ y/Nでインストールするかの確認。

です。

最後まで入力すると、JSON形式で今回はターミナルに入力した内容を出力してみました。
よくあるターミナルからの入力は、大体これで作れるのではないかと思います。

今回私が作ったサンプルは以下に置いてあります。
先に書いたプロンプトの実装が知りたい場合は参考にしてみてください。
https://github.com/SrcHndWng/go-survey-sample