Module: CLI::Kit::Opts::Mixin

Includes:
Kernel
Included in:
CLI::Kit::Opts
Defined in:
lib/cli/kit/opts.rb

Defined Under Namespace

Modules: MixinClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object

: (Module klass) -> void



40
41
42
# File 'lib/cli/kit/opts.rb', line 40

def included(klass)
  klass.extend(MixinClassMethods)
end

Instance Method Details

#flag(name: infer_name, short: nil, long: nil, desc: nil) ⇒ Object

: (?name: Symbol, ?short: String?, ?long: String?, ?desc: String?) -> bool



89
90
91
92
93
94
95
96
97
# File 'lib/cli/kit/opts.rb', line 89

def flag(name: infer_name, short: nil, long: nil, desc: nil)
  case @obj
  when Args::Definition
    @obj.add_flag(name, short: short, long: long, desc: desc)
    false
  when Args::Evaluation
    @obj.flag.send(name)
  end
end

#multi_option(name: infer_name, short: nil, long: nil, desc: nil, default: []) ⇒ Object

: (?name: Symbol, ?short: String?, ?long: String?, ?desc: String?, ?default: (Array | ^-> Array)) -> Array



76
77
78
79
80
81
82
83
84
85
86
# File 'lib/cli/kit/opts.rb', line 76

def multi_option(name: infer_name, short: nil, long: nil, desc: nil, default: [])
  case @obj
  when Args::Definition
    @obj.add_option(
      name, short: short, long: long, desc: desc, default: default, multi: true
    )
    ['(result unavailable)']
  when Args::Evaluation
    @obj.opt.send(name)
  end
end

#option(name: infer_name, short: nil, long: nil, desc: nil, default: nil) ⇒ Object

: (?name: Symbol, ?short: String?, ?long: String?, ?desc: String?, ?default: (String | ^-> String)?) -> String?



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/cli/kit/opts.rb', line 46

def option(name: infer_name, short: nil, long: nil, desc: nil, default: nil)
  unless default.nil?
    raise(ArgumentError, 'declare options with non-nil defaults using `option!` instead of `option`')
  end

  case @obj
  when Args::Definition
    @obj.add_option(
      name, short: short, long: long, desc: desc, default: default
    )
    '(result unavailable)'
  when Args::Evaluation
    @obj.opt.send(name)
  end
end

#option!(name: infer_name, short: nil, long: nil, desc: nil, default: nil) ⇒ Object

: (?name: Symbol, ?short: String?, ?long: String?, ?desc: String?, ?default: (String | ^-> String)?) -> String



63
64
65
66
67
68
69
70
71
72
73
# File 'lib/cli/kit/opts.rb', line 63

def option!(name: infer_name, short: nil, long: nil, desc: nil, default: nil)
  case @obj
  when Args::Definition
    @obj.add_option(
      name, short: short, long: long, desc: desc, default: default
    )
    '(result unavailable)'
  when Args::Evaluation
    @obj.opt.send(name)
  end
end

#position(name: infer_name, desc: nil, default: nil, skip: nil) ⇒ Object

: (?name: Symbol, ?desc: String?, ?default: (String | ^-> String)?, ?skip: (^-> bool | ^(String arg0) -> bool)?) -> String?



111
112
113
114
115
116
117
118
119
# File 'lib/cli/kit/opts.rb', line 111

def position(name: infer_name, desc: nil, default: nil, skip: nil)
  case @obj
  when Args::Definition
    @obj.add_position(name, desc: desc, required: false, multi: false, default: default, skip: skip)
    '(result unavailable)'
  when Args::Evaluation
    @obj.position.send(name)
  end
end

#position!(name: infer_name, desc: nil) ⇒ Object

: (?name: Symbol, ?desc: String?) -> String



100
101
102
103
104
105
106
107
108
# File 'lib/cli/kit/opts.rb', line 100

def position!(name: infer_name, desc: nil)
  case @obj
  when Args::Definition
    @obj.add_position(name, desc: desc, required: true, multi: false)
    '(result unavailable)'
  when Args::Evaluation
    @obj.position.send(name)
  end
end

#rest(name: infer_name, desc: nil) ⇒ Object

: (?name: Symbol, ?desc: String?) -> Array



122
123
124
125
126
127
128
129
130
# File 'lib/cli/kit/opts.rb', line 122

def rest(name: infer_name, desc: nil)
  case @obj
  when Args::Definition
    @obj.add_position(name, desc: desc, required: false, multi: true)
    ['(result unavailable)']
  when Args::Evaluation
    @obj.position.send(name)
  end
end