gist

2012年5月14日月曜日

promptを使ってみた

promptは、コマンドラインからプロンプト入力できる Node.jsのパッケージです。

$ npm install prompt
prompt@0.1.12 ../../../node_modules/prompt 
├── pkginfo@0.2.3
├── colors@0.6.0-1
├── async@0.1.18
└── winston@0.5.11

CoffeeScriptはこんな感じです。

prompt = require 'prompt'

prompt.start()

prompt.get ['username', 'email'], (err, result)->
 console.log 'コマンドラインからの入力値:'
 console.log '  username: ' + result.username
 console.log '  email   : ' + result.email

実行してみます。

$ coffee sample.coffee 
prompt: username: ニャルラトホテプ
prompt: email: nyaruko@Lovecraft.com
コマンドラインからの入力値:
  username: ニャルラトホテプ
  email   : nyaruko@Lovecraft.com

prompt.get() メソッドの第1引数に、プロンプトに入力するキーを配列で指定します。第2引数には、エラーと結果(result)を引数としたコールバックを渡します。入力値はresultにキーを指定して取得できます。

入力値のバリデーションやパスワード入力(非表示)も可能です。

prompt = require 'prompt'

props = [
 {
  name: 'email'
  validator: /^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/
  warning: '正しいEmailを入力して下さい'
  empty: false
 }
 {
  name: 'password'
  hidden: true
 }
]

prompt.start()

prompt.get props, (err, result)->
 console.log 'コマンドラインからの入力値:'
 console.log '  email   : ' + result.email
 console.log '  password: ' + result.password

変数propsを作成します。各キーをオブジェクトで指定し、プロパティを設定します。

  • name:キーの名前を指定します。ユーザからの入力値を取り出す場合に使います。
  • validator:入力チェックを正規表現で指定します。
  • warning:入力チェックでNGだった場合の警告メッセージを指定します。
  • empty:必須入力ならfalse。
  • hidden:パスワード入力のように入力値を隠すならtrue。

実行結果です。

$ coffee sample.coffee 
prompt: email:  a 
error:  Invalid input for email
error:  正しいEmailを入力して下さい
prompt: email: sample@sample.com
prompt: password: 
コマンドラインからの入力値:
  email   : sample@sample.com
  password: password

promptは、hook.ioやwizardなど、27のパッケージから使われています。shouldやjshintと同じくらいでしょうか。充分使えるようです。

0 件のコメント: