Module: Cult::CLI::CommandExtensions

Defined in:
lib/cult/cli/cri_extensions.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#argument_specObject

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

#blockObject

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

Returns:

  • (Boolean)


49
50
51
# File 'lib/cult/cli/cri_extensions.rb', line 49

def project_required?
  defined?(@project_required) ? @project_required : true
end