書籍 Build Awesome Command-Line Applications in Ruby2
Play Well with Others
CLIアプリケーションは、他のアプリケーション向けの「機械的に読み取りやすいデータ」と
「人間が読みやすいデータ」の両面をサポートすることが重要です。
この両面をサポートする最も簡単な方法は、コマンドラインオプションの
スイッチかフラグで両方の出力を切り替えることです。
下記記事のサンプルの仕様をベースにします。年齢の表示部分のみを利用します。
Ruby |CLI | Be Easy to Use | Thorを利用した使いやすいCommand suitインターフェース
http://d.hatena.ne.jp/tbpg/20140526/1401109675
require'csv'require'thor'require'pp'classPersonViewer <Thor package_name"person_viewer"VERSION ="0.0.1"PERSONALS ='./personals.csv' class_option:help,type::boolean,aliases:'-h',desc:'ヘルプを表示します' class_option:version,type::boolean,desc:'バージョンを表示します' desc"年齢を表示します","年齢を表示します" option:pretty_print, {type::boolean,aliases:'-p',desc:"人間向けの出力フォーマットにする"}defageif options[:pretty_print] read_csv.each { |row|puts"#{row[:firstname]}#{row[:lastname]}は#{row[:age]}歳です" }else read_csv.each { |row|puts row[:age] }endend desc'バージョンを表示します','バージョンを表示します'defversion putsVERSIONenddefself.banner(task, namespace =false, subcommand =true)superendprivatedefread_csvCSV.table(PERSONALS)endendPersonViewer.start(ARGV)
データ取得元csv
firstname,lastname,agekazuo,tanaka,34ken,sato,54ichiro,suzuki,45
出力
# p オプションなしでプログラム向けのフォーマットに$ ruby personal.rb age345445# p オプションで人間向けのフォーマットに$ ruby personal.rb age -pkazuo tanakaは34歳ですken satoは54歳ですichiro suzukiは45歳です
自分の内からでるモチベーション「内発的動機づけ」を支援するためのブログを開設しました。
sp.8a【ゲスト: tbpgr】楽しくない7次受けSIer引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。