module Cult::CLI::CommandExtensions

Attributes

argument_spec[RW]

Public Instance Methods

block() click to toggle source

This function returns a wrapped version of the block passed to `run`

Calls superclass method
# 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) click to toggle source
# 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) click to toggle source
# File lib/cult/cli/cri_extensions.rb, line 54
def project_required=(v)
  @project_required = v
end
project_required?() click to toggle source
# File lib/cult/cli/cri_extensions.rb, line 49
def project_required?
  defined?(@project_required) ? @project_required : true
end