optimistでコマンドライン引数

2021-02-25

ruby, gem, optimist

スクリプト書くとき、必須の引数1個や2個ならARGV[0] とかでいいけども
任意のパラメータ使いたいときとかしんどい

そんなときoptimist(旧名:trollop)というgemをよく使ってたけど、久しぶりに使おうとしたら使い方忘れてたので書いとく

OptionParserでも良さげ(存在を知らなかった)

optimist(rubygems)

使い方 みればいいんだけども

例えばこう書くだけで

1
2
3
4
5
6
7
8
9
require 'optimist'
opts = Optimist::options do
  version '0.0.1'
  opt :env, '環境', default: 'local', type: :string
  opt :num, '番号', short: :n, type: :string
  opt :dry_run, 'dry-run', short: :d
end

puts opts
  • バージョンの表示
1
2
$ ruby opt.rb -v
0.0.1
  • ヘルプの表示
1
2
3
4
5
6
7
8
$ ruby opt.rb -h
0.0.1
Options:
  -e, --env=<s>    環境 (default: local)
  -n, --num=<s>    番号
  -d, --dry-run    dry-run
  -v, --version    Print version and exit
  -h, --help       Show this message

dry_run が dry-run になる。注意
シンボルなのでハイフンは使えないけどパラメータにアンダースコアは使えないようです
キー名はストリングで揃えて opt 'dry-run', 'dry-run', short: :d としたほうがいいかも

  • なにも指定しないと
1
2
$ ruby opt.rb
{:env=>"local", :num=>nil, :dry_run=>false, :version=>false, :help=>false}
  • 指定すると
1
2
$ ruby opt.rb --env production -n 999 -d
{:env=>"production", :num=>"999", :dry_run=>true, :version=>false, :help=>false, :env_given=>true, :num_given=>true, :dry_run_given=>true}

指定したパラメータ名_given というキーが追加されているので何が渡されたかわかって良い
envに略名つけてないのは rails runner で動かしたときにrailsのオプションと勘違いされたから
railsのパッチとして動かすときは注意が必要かも

手軽で便利で好き。
こういうのをクールというのだろうか
クールなツール作れるようになりたいなぁ

コメント

投稿する

投稿したコメントはご自身で削除できません

不適切なコメントと判断した場合は管理側で削除することがあります