Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | CLI | Play Well with Others | Reporting Multiple Errors int the Exit

概要

書籍 Build Awesome Command-Line Applications in Ruby2

Play Well with Others

詳細

exit code は一つの数値しか取れません。
ビットマスクとして扱うことで各ビットに意味を持たせることができます、

サンプルコード

引数に応じて exit code を設定します。

param = ARGV.first

exit_status = 0b0000
case param.to_i
when 1
  # 警告1を設定
  exit_status |= 0b0001
when 2
  # 警告2を設定
  exit_status |= 0b0010
when 3
  # 警告1を設定
  exit_status |= 0b0001
  # 警告2を設定
  exit_status |= 0b0010
end
exit exit_status

出力

$ ruby 1.rb 1;echo $?
1
$ ruby 1.rb 2;echo $?
2
$ ruby 1.rb 3;echo $?
3
$ ruby 1.rb 4;echo $?
0