おそらくはそれさえも平凡な日々

Goでプロンプト簡単に出すやつ書いた

コマンドラインツールを書くときに、プロンプトを出したくなることありますよね?ただ、ちゃんとプロンプトを出すのは案外難しかったりもします。例えば以下の様な要求があるわけです。

  • 自動化の妨げになるからターミナルじゃない時はスキップして欲しい
  • とにかく簡単にプロンプトを表示させたい
  • パスワード入力では入力を隠したい
  • 複数の選択肢から上手いこと選択させたい
  • 単に(y/n)だけ入力させたい

ということで書いたのがこちら。

https://github.com/Songmu/prompter

以下のように、それぞれの要求を簡単に解決できます。

var twitterID string = prompter.Prompt("Enter your twitter ID", "default")
var passwd string = prompter.Password("Enter your password")
var lang string = prompter.Choose("Which language do you like the most?", []string{"Perl", "Golang", "Scala", "Ruby"}, "Perl")
var likeSushi bool = prompter.YN("Do you like sushi?", true)
var likeBeer bool = prompter.YesNo("Do you like beer?", false)

ターミナルに接続されていない場合には Default の値が使われるので自動化の妨げにならないという感じです。細かい制御をいろいろやりたい場合には、直接 &prompter.Prompter を直接作っていろいろやって下さい。

便利だと思うのでよろしくお使い下さい。まだまだ足りない機能もあると思うので、patches welcomeです!

created at
last modified at

2015-07-26T02:06:44+0900

comments powered by Disqus