-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp_option.rb
41 lines (35 loc) · 1.31 KB
/
app_option.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# まくまく Ruby ノート コマンドライン引数によるオプションに対応する (optparse)
# http://maku77.github.io/ruby/io/optparse.html
# コマンドラインツールのショートオプションをどの用途で使うべきか
# https://qiita.com/key-amb/items/9e53cf363407a379d17b
class AppOption
require 'optparse'
# インスタンス化と同時にコマンドライン引数をパース
def initialize
@options = {}
OptionParser.new do |o|
o.on('-n', '--dryrun', 'ファイルへの保存を行わない') { |v| @options[:dryrun] = v }
o.on('-s', '--short', 'レコードを1件だけ収集') { |v| @options[:short] = v }
# o.on('-n VALUE', '--num VALUE', 'レコードのプレイ履歴収集数') { |v| @options[:num] = v }
o.on('-h', '--help', 'show this help') {|v| puts o; exit }
o.parse!(ARGV)
end
end
# オプションが指定されたかどうか
def has?(name)
@options.include?(name)
end
# オプションごとのパラメータを取得
def get(name)
@options[name]
end
# オプションパース後に残った部分を取得
def get_extras
ARGV
end
end
return unless $0 == __FILE__
option = AppOption.new
p "dryrun:#{option.has?(:dryrun)}"
p "short:#{option.has?(:short)}"
p "get_extras:#{option.get_extras}"