Module: Cult::CLI::CommandExtensions
- Defined in:
- lib/cult/cli/cri_extensions.rb
Instance Attribute Summary collapse
-
#argument_spec ⇒ Object
Returns the value of attribute argument_spec.
Instance Method Summary collapse
-
#block ⇒ Object
This function returns a wrapped version of the block passed to ‘run`.
- #check_argument_spec!(args, range, cmd) ⇒ Object
- #project_required=(v) ⇒ Object
- #project_required? ⇒ Boolean
Instance Attribute Details
#argument_spec ⇒ Object
Returns the value of attribute argument_spec.
59 60 61 |
# File 'lib/cult/cli/cri_extensions.rb', line 59 def argument_spec @argument_spec end |
Instance Method Details
#block ⇒ Object
This function returns a wrapped version of the block passed to ‘run`
63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/cult/cli/cri_extensions.rb', line 63 def block lambda do |opts, args, cmd| if project_required? && Cult.project.nil? fail CLIError, "command '#{cmd.name}' requires a Cult project" end check_argument_spec!(args, argument_spec, cmd) if argument_spec super.call(opts, args, cmd) end end |
#check_argument_spec!(args, range, cmd) ⇒ Object
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 |
# File 'lib/cult/cli/cri_extensions.rb', line 75 def check_argument_spec!(args, range, cmd) range = (0..range) if range == Float::INFINITY range = (range..range) if range.is_a?(Integer) unless range.cover?(args.size) msg = case when range.size == 1 && range.begin == 0 "accepts no arguments" when range.size == 1 && range.begin == 1 "requires exactly one argument" when range.begin == range.end "requires exactly #{range.begin} arguments" else if range.end == Float::INFINITY words =%w(zero one two three) if range.begin < words.size "requires #{words[range.begin]} or more arguments" else "requires #{range.begin}+ arguments" end else "accepts #{range} arguments" end end fail CLIError, "command '#{cmd.name}' #{msg} (usage: #{cmd.usage})" end end |
#project_required=(v) ⇒ Object
54 55 56 |
# File 'lib/cult/cli/cri_extensions.rb', line 54 def project_required=(v) @project_required = v end |
#project_required? ⇒ Boolean
49 50 51 |
# File 'lib/cult/cli/cri_extensions.rb', line 49 def project_required? defined?(@project_required) ? @project_required : true end |