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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/uur/args_parser.rb', line 6
def parse(args)
options = {}
OptionParser.new do |opts|
opts.banner = "Usage: uur [options]"
opts.separator ""
opts.separator "Reports:"
opts.on "-l", "--list", "List entries" do
options[:print_list] = true
end
opts.on "-s", "--summary [daily|weekly|monthly|yearly|all]", "Print summary" do |value|
options[:print_summary] = true
options[:summary_interval] = value
end
opts.separator ""
opts.separator "Filtering:"
opts.on "-w", "--within today|yesterday|this-week|last-week|this-month|last-month|this-year|last-year", String, "Time period (default: today)" do |value|
options[:within] = value
end
opts.separator ""
opts.separator "Common options:"
opts.on "-d", "--duration-format hours-minutes|hours-decimal", String, "Duration time format (default: hours-minutes)" do |value|
options[:duration_format] = value
end
opts.separator ""
opts.separator "Others:"
opts.on_tail "-h", "--help", "Show this help message" do
puts opts
exit
end
opts.on_tail "--version", "Show version" do
puts "uur version #{Uur::VERSION}"
exit
end
end.parse!(args)
options[:within ] ||= "today" if options[:summary_interval].nil?
options[:duration_format] ||= "hours-minutes"
options[:print_list ] = true if !options[:print_list] && !options[:print_summary]
set_default_summary_interval(options) if options[:print_summary] && options[:summary_interval].nil?
if options[:within]
time_mapper = TimeMapper.new(Time.now)
options[:since] = time_mapper.since(options[:within])
options[:to ] = time_mapper.to( options[:within])
end
options
end
|