Class: Gitodo::CommandLineOptions

Inherits:
Object
  • Object
show all
Defined in:
lib/gitodo/command_line_options.rb

Class Method Summary collapse

Class Method Details

.parse(args) ⇒ Object



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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# File 'lib/gitodo/command_line_options.rb', line 6

def self.parse(args)
  options = OpenStruct.new

  explicit_command = false
  options.command = "add"
  # options.inplace = false
  # options.encoding = "utf8"
  # options.transfer_type = :auto
  # options.verbose = false

  opt_parser = OptionParser.new do |opts|
    opts.banner = "Usage: gitodo [options]"

    opts.separator ""
    opts.separator "Specific options:"

    # Commands
    opts.on("--done", "Finish one or more todo items!") do
      if explicit_command
        puts "Specified multiple commands"
        exit 1
      end

      options.command = "done"
      explicit_command = true
    end
    # opts.on_tail("--version", "Show version") do
    #   puts ::Version.join('.')
    #   exit
    # end

    opts.on("--list", "List the open todo items!") do
      if explicit_command
        puts "Specified multiple commands"
        exit 1
      end

      options.command = "list"
      explicit_command = true
    end

    opts.on("--check", "Check if there are any open todo items, and fail if there are any") do
      if explicit_command
        puts "Specified multiple commands"
        exit 1
      end

      options.command = "check"
      explicit_command = true
    end

    opts.on("--add", "(Default) Add a new todo item") do
      if explicit_command
        puts "Specified multiple commands"
        exit 1
      end

      options.command = "add"
      explicit_command = true
    end

    # Mandatory argument.
    # opts.on("-r", "--require LIBRARY",
    #         "Require the LIBRARY before executing your script") do |lib|
    #   options.library << lib
    # end
    #
    # # Optional argument; multi-line description.
    # opts.on("-i", "--inplace [EXTENSION]",
    #         "Edit ARGV files in place",
    #         "  (make backup if EXTENSION supplied)") do |ext|
    #   options.inplace = true
    #   options.extension = ext || ''
    #   options.extension.sub!(/\A\.?(?=.)/, ".")  # Ensure extension begins with dot.
    # end
    #
    # # Cast 'delay' argument to a Float.
    # opts.on("--delay N", Float, "Delay N seconds before executing") do |n|
    #   options.delay = n
    # end
    #
    # # Cast 'time' argument to a Time object.
    # opts.on("-t", "--time [TIME]", Time, "Begin execution at given time") do |time|
    #   options.time = time
    # end

    # Cast to octal integer.
    # opts.on("-F", "--irs [OCTAL]", OptionParser::OctalInteger,
    #         "Specify record separator (default \\0)") do |rs|
    #   options.record_separator = rs
    # end
    #
    # # List of arguments.
    # opts.on("--list x,y,z", Array, "Example 'list' of arguments") do |list|
    #   options.list = list
    # end

    # Keyword completion.  We are specifying a specific set of arguments (CODES
    # and CODE_ALIASES - notice the latter is a Hash), and the user may provide
    # the shortest unambiguous text.
    # code_list = (CODE_ALIASES.keys + CODES).join(',')
    # opts.on("--code CODE", CODES, CODE_ALIASES, "Select encoding",
    #         "  (#{code_list})") do |encoding|
    #   options.encoding = encoding
    # end

    # Optional argument with keyword completion.
    # opts.on("--type [TYPE]", [:text, :binary, :auto],
    #         "Select transfer type (text, binary, auto)") do |t|
    #   options.transfer_type = t
    # end

    # Boolean switch.
    # opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
    #   options.verbose = v
    # end

    # opts.separator ""
    # opts.separator "Common options:"

    # No argument, shows at tail.  This will print an options summary.
    # Try it and see!
    # opts.on_tail("-h", "--help", "Show this message") do
    #   puts opts
    #   exit
    # end

    # Another typical switch to print the version.
    # opts.on_tail("--version", "Show version") do
    #   puts ::Version.join('.')
    #   exit
    # end
  end

  opt_parser.parse!(args)
  options
end