class Idcf::Cli::Service::Base

model base

Constants

ARG_TYPE_OPT
ARG_TYPE_REQ
ARG_TYPE_REST
HELP_FORMAT

Attributes

options[R]
last_command[R]
last_command_args[R]

Public Class Methods

description() click to toggle source

descritpion

@return String

# File lib/idcf/cli/service/base.rb, line 42
def description
  ''
end
make_param_s() click to toggle source

make param string

@return String

# File lib/idcf/cli/service/base.rb, line 49
def make_param_s
  cp = []
  valid_params.each do |param|
    f = HELP_FORMAT[param[0]]
    next if f.nil?
    cp << format(f, name: param[1])
  end
  cp.join(' ')
end
new() click to toggle source
# File lib/idcf/cli/service/base.rb, line 82
def initialize
  @last_command      = ''
  @last_command_args = []
end
option(name, attr) click to toggle source

option

@param name [String] @param attr [Hash] @option attr [String] :type @option attr [Boolean] :required @option attr [String] :desc

# File lib/idcf/cli/service/base.rb, line 34
def option(name, attr)
  @options ||= {}
  @options[name] = attr
end
reset() click to toggle source

reset setting reset

# File lib/idcf/cli/service/base.rb, line 23
def reset
  @options = {}
end
valid_params() click to toggle source
# File lib/idcf/cli/service/base.rb, line 59
def valid_params
  [].tap do |result|
    new.method(:do).parameters.each do |param|
      result << param if target_param?(param[1])
    end
  end
end

Protected Class Methods

target_param?(name) click to toggle source

target param?

@param name [String] @return Boolean

# File lib/idcf/cli/service/base.rb, line 73
def target_param?(name)
  val            = name.to_s
  exclusion_list = %w[api o]
  return false if exclusion_list.include?(val)
  return false if val[0] == '_'
  true
end

Public Instance Methods

between_param?(arg_size) click to toggle source

between params

@param params [Array] @param arg_size [int] @raise

# File lib/idcf/cli/service/base.rb, line 103
def between_param?(arg_size)
  param = self.class.valid_params
  p_cnt = param.size
  return true if method_rest?(param)
  opt_cnt = method_option_cnt(param)

  min = p_cnt - opt_cnt
  msg = format('Argument: %<arg>s', arg: self.class.make_param_s)
  cli_error msg unless arg_size.between?(min, p_cnt)
  true
end
cli_error(msg) click to toggle source

cli error

@param msg [String] @raise

# File lib/idcf/cli/service/base.rb, line 150
def cli_error(msg)
  raise Idcf::Cli::Error::CliError, msg
end
do(_client, _o, *_args) click to toggle source

do

@param _client [Mixed] @param _o [Hash] options @param *_args [Array] @return Hash @raise

# File lib/idcf/cli/service/base.rb, line 94
def do(_client, _o, *_args)
  cli_error 'Require override'
end
method_option_cnt(params) click to toggle source

option count

@param params [Array] @return int

# File lib/idcf/cli/service/base.rb, line 134
def method_option_cnt(params)
  result = 0
  return result if params.nil?
  params.each do |param|
    case param[0]
    when ARG_TYPE_OPT
      result += 1
    end
  end
  result
end
method_rest?(params) click to toggle source

is rest

@param params [Array] @return Boolean

# File lib/idcf/cli/service/base.rb, line 119
def method_rest?(params)
  return false if params.nil?
  params.each do |param|
    case param[0]
    when ARG_TYPE_REST
      return true
    end
  end
  false
end