Class: HammerCLI::CommandExtensions
- Inherits:
-
Object
- Object
- HammerCLI::CommandExtensions
- Defined in:
- lib/hammer_cli/command_extensions.rb
Constant Summary collapse
- ALLOWED_EXTENSIONS =
%i[ option command_options before_print data output help request request_headers headers request_options options request_params params option_sources predefined_options use_option option_family ].freeze
Class Attribute Summary collapse
-
.delegatee ⇒ Object
Returns the value of attribute delegatee.
Class Method Summary collapse
- .before_print(&block) ⇒ Object
- .extend_before_print(data, command_object, command_class) ⇒ Object
- .extend_help(command_class) ⇒ Object
- .extend_option_family(command_class) ⇒ Object
- .extend_option_sources(sources, command_object, command_class) ⇒ Object
-
.extend_options(command_class) ⇒ Object
Class.
- .extend_output(command_class, command_object) ⇒ Object
- .extend_predefined_options(command_class) ⇒ Object
- .extend_request_headers(headers, command_object, command_class) ⇒ Object
- .extend_request_options(options, command_object, command_class) ⇒ Object
- .extend_request_params(params, command_object, command_class) ⇒ Object
- .help(&block) ⇒ Object
-
.inheritable(boolean) ⇒ Object
DSL.
- .inheritable? ⇒ Boolean
- .logger ⇒ Object
- .method_missing(message, *args, &block) ⇒ Object
- .option(switches, type, description, opts = {}, &block) ⇒ Object
- .option_family(options = {}, &block) ⇒ Object
- .option_sources(&block) ⇒ Object
- .output(&block) ⇒ Object
- .request_headers(&block) ⇒ Object
- .request_options(&block) ⇒ Object
- .request_params(&block) ⇒ Object
- .use_option(*names) ⇒ Object
Instance Method Summary collapse
- #command_class(command_class) ⇒ Object
- #command_object(command_object) ⇒ Object
- #delegatee(command_class) ⇒ Object
- #details ⇒ Object
- #extend_before_print(data) ⇒ Object
- #extend_help ⇒ Object
- #extend_option_family ⇒ Object
- #extend_option_sources(sources) ⇒ Object
-
#extend_options ⇒ Object
Object.
- #extend_output ⇒ Object
- #extend_predefined_options ⇒ Object
- #extend_request_headers(headers) ⇒ Object
- #extend_request_options(options) ⇒ Object
- #extend_request_params(params) ⇒ Object
- #inheritable? ⇒ Boolean
-
#initialize(options = {}) ⇒ CommandExtensions
constructor
A new instance of CommandExtensions.
Constructor Details
#initialize(options = {}) ⇒ CommandExtensions
Returns a new instance of CommandExtensions.
21 22 23 24 25 26 27 |
# File 'lib/hammer_cli/command_extensions.rb', line 21 def initialize( = {}) @only = [:only] || ALLOWED_EXTENSIONS @only = [@only] unless @only.is_a?(Array) @except = [:except] || [] @except = [@except] unless @except.is_a?(Array) @inheritable = [:inheritable] end |
Class Attribute Details
.delegatee ⇒ Object
Returns the value of attribute delegatee.
4 5 6 |
# File 'lib/hammer_cli/command_extensions.rb', line 4 def delegatee @delegatee end |
Class Method Details
.before_print(&block) ⇒ Object
61 62 63 |
# File 'lib/hammer_cli/command_extensions.rb', line 61 def self.before_print(&block) @before_print_block = block end |
.extend_before_print(data, command_object, command_class) ⇒ Object
209 210 211 212 213 214 |
# File 'lib/hammer_cli/command_extensions.rb', line 209 def self.extend_before_print(data, command_object, command_class) return if @before_print_block.nil? @before_print_block.call(data, command_object, command_class) logger.debug("Called block for #{@delegatee} data:\n\t#{@before_print_block}") end |
.extend_help(command_class) ⇒ Object
223 224 225 226 227 228 |
# File 'lib/hammer_cli/command_extensions.rb', line 223 def self.extend_help(command_class) return if @help_extension_block.nil? command_class.help_extension_blocks << @help_extension_block logger.debug("Saved block for #{@delegatee} help definition:\n\t#{@help_extension_block}") end |
.extend_option_family(command_class) ⇒ Object
258 259 260 261 262 263 264 |
# File 'lib/hammer_cli/command_extensions.rb', line 258 def self.extend_option_family(command_class) return if @option_family_block.nil? @option_family_opts[:creator] = command_class command_class.send(:option_family, @option_family_opts, &@option_family_block) logger.debug("Called option family block for #{command_class}:\n\t#{@option_family_block}") end |
.extend_option_sources(sources, command_object, command_class) ⇒ Object
251 252 253 254 255 256 |
# File 'lib/hammer_cli/command_extensions.rb', line 251 def self.extend_option_sources(sources, command_object, command_class) return if @option_sources_block.nil? @option_sources_block.call(sources, command_object, command_class) logger.debug("Called block for #{@delegatee} option sources:\n\t#{@option_sources_block}") end |
.extend_options(command_class) ⇒ Object
Class
190 191 192 193 194 195 196 197 198 199 200 201 202 |
# File 'lib/hammer_cli/command_extensions.rb', line 190 def self.(command_class) return if @options.nil? @options.each do |option| command_class.send(:option, option[:switches], option[:type], option[:description], option[:opts], &option[:block]) logger.debug("Added option for #{command_class}: #{option}") end end |
.extend_output(command_class, command_object) ⇒ Object
216 217 218 219 220 221 |
# File 'lib/hammer_cli/command_extensions.rb', line 216 def self.extend_output(command_class, command_object) return if @output_extension_block.nil? @output_extension_block.call(command_class.output_definition, command_object, command_class) logger.debug("Called block for #{@delegatee} output definition:\n\t#{@output_extension_block}") end |
.extend_predefined_options(command_class) ⇒ Object
204 205 206 207 |
# File 'lib/hammer_cli/command_extensions.rb', line 204 def self.(command_class) command_class.send(:use_option, *@predefined_option_names) logger.debug("Added predefined options for #{command_class}: #{@predefined_option_names}") end |
.extend_request_headers(headers, command_object, command_class) ⇒ Object
230 231 232 233 234 235 |
# File 'lib/hammer_cli/command_extensions.rb', line 230 def self.extend_request_headers(headers, command_object, command_class) return if @request_headers_block.nil? @request_headers_block.call(headers, command_object, command_class) logger.debug("Called block for #{@delegatee} request headers:\n\t#{@request_headers_block}") end |
.extend_request_options(options, command_object, command_class) ⇒ Object
237 238 239 240 241 242 |
# File 'lib/hammer_cli/command_extensions.rb', line 237 def self.(, command_object, command_class) return if @request_options_block.nil? @request_options_block.call(, command_object, command_class) logger.debug("Called block for #{@delegatee} request options:\n\t#{@request_options_block}") end |
.extend_request_params(params, command_object, command_class) ⇒ Object
244 245 246 247 248 249 |
# File 'lib/hammer_cli/command_extensions.rb', line 244 def self.extend_request_params(params, command_object, command_class) return if @request_params_block.nil? @request_params_block.call(params, command_object, command_class) logger.debug("Called block for #{@delegatee} request params:\n\t#{@request_params_block}") end |
.help(&block) ⇒ Object
69 70 71 |
# File 'lib/hammer_cli/command_extensions.rb', line 69 def self.help(&block) @help_extension_block = block end |
.inheritable(boolean) ⇒ Object
DSL
45 46 47 |
# File 'lib/hammer_cli/command_extensions.rb', line 45 def self.inheritable(boolean) @inheritable = boolean end |
.inheritable? ⇒ Boolean
10 11 12 |
# File 'lib/hammer_cli/command_extensions.rb', line 10 def inheritable? @inheritable end |
.logger ⇒ Object
6 7 8 |
# File 'lib/hammer_cli/command_extensions.rb', line 6 def logger Logging.logger[to_s] end |
.method_missing(message, *args, &block) ⇒ Object
35 36 37 38 39 40 41 |
# File 'lib/hammer_cli/command_extensions.rb', line 35 def self.method_missing(, *args, &block) if @delegatee @delegatee.send(, *args, &block) else super end end |
.option(switches, type, description, opts = {}, &block) ⇒ Object
49 50 51 52 53 54 55 |
# File 'lib/hammer_cli/command_extensions.rb', line 49 def self.option(switches, type, description, opts = {}, &block) @options ||= [] @options << { switches: switches, type: type, description: description, opts: opts, block: block } end |
.option_family(options = {}, &block) ⇒ Object
89 90 91 92 |
# File 'lib/hammer_cli/command_extensions.rb', line 89 def self.option_family( = {}, &block) @option_family_opts = @option_family_block = block end |
.option_sources(&block) ⇒ Object
85 86 87 |
# File 'lib/hammer_cli/command_extensions.rb', line 85 def self.option_sources(&block) @option_sources_block = block end |
.output(&block) ⇒ Object
65 66 67 |
# File 'lib/hammer_cli/command_extensions.rb', line 65 def self.output(&block) @output_extension_block = block end |
.request_headers(&block) ⇒ Object
73 74 75 |
# File 'lib/hammer_cli/command_extensions.rb', line 73 def self.request_headers(&block) @request_headers_block = block end |
.request_options(&block) ⇒ Object
77 78 79 |
# File 'lib/hammer_cli/command_extensions.rb', line 77 def self.(&block) @request_options_block = block end |
.request_params(&block) ⇒ Object
81 82 83 |
# File 'lib/hammer_cli/command_extensions.rb', line 81 def self.request_params(&block) @request_params_block = block end |
.use_option(*names) ⇒ Object
57 58 59 |
# File 'lib/hammer_cli/command_extensions.rb', line 57 def self.use_option(*names) @predefined_option_names = names end |
Instance Method Details
#command_class(command_class) ⇒ Object
170 171 172 |
# File 'lib/hammer_cli/command_extensions.rb', line 170 def command_class(command_class) @command_class = command_class end |
#command_object(command_object) ⇒ Object
174 175 176 |
# File 'lib/hammer_cli/command_extensions.rb', line 174 def command_object(command_object) @command_object = command_object end |
#delegatee(command_class) ⇒ Object
166 167 168 |
# File 'lib/hammer_cli/command_extensions.rb', line 166 def delegatee(command_class) self.class.delegatee = command_class end |
#details ⇒ Object
178 179 180 181 182 183 184 185 186 |
# File 'lib/hammer_cli/command_extensions.rb', line 178 def details except = @except.empty? ? '*nothing*' : @except details = if @only == ALLOWED_EXTENSIONS "*all* except #{except}" else "#{@only} only" end "#{self.class} for #{details}" end |
#extend_before_print(data) ⇒ Object
110 111 112 113 114 115 |
# File 'lib/hammer_cli/command_extensions.rb', line 110 def extend_before_print(data) allowed = @only & %i[before_print data] return if allowed.empty? || (allowed & @except).any? self.class.extend_before_print(data, @command_object, @command_class) end |
#extend_help ⇒ Object
124 125 126 127 128 129 |
# File 'lib/hammer_cli/command_extensions.rb', line 124 def extend_help allowed = @only & %i[help] return if allowed.empty? || (allowed & @except).any? self.class.extend_help(@command_class) end |
#extend_option_family ⇒ Object
159 160 161 162 163 164 |
# File 'lib/hammer_cli/command_extensions.rb', line 159 def extend_option_family allowed = @only & %i[option_family] return if allowed.empty? || (allowed & @except).any? self.class.extend_option_family(@command_class) end |
#extend_option_sources(sources) ⇒ Object
152 153 154 155 156 157 |
# File 'lib/hammer_cli/command_extensions.rb', line 152 def extend_option_sources(sources) allowed = @only & %i[option_sources] return if allowed.empty? || (allowed & @except).any? self.class.extend_option_sources(sources, @command_object, @command_class) end |
#extend_options ⇒ Object
Object
96 97 98 99 100 101 |
# File 'lib/hammer_cli/command_extensions.rb', line 96 def allowed = @only & %i[command_options option] return if allowed.empty? || (allowed & @except).any? self.class.(@command_class) end |
#extend_output ⇒ Object
117 118 119 120 121 122 |
# File 'lib/hammer_cli/command_extensions.rb', line 117 def extend_output allowed = @only & %i[output] return if allowed.empty? || (allowed & @except).any? self.class.extend_output(@command_class, @command_object) end |
#extend_predefined_options ⇒ Object
103 104 105 106 107 108 |
# File 'lib/hammer_cli/command_extensions.rb', line 103 def allowed = @only & %i[predefined_options use_option] return if allowed.empty? || (allowed & @except).any? self.class.(@command_class) end |
#extend_request_headers(headers) ⇒ Object
131 132 133 134 135 136 |
# File 'lib/hammer_cli/command_extensions.rb', line 131 def extend_request_headers(headers) allowed = @only & %i[request_headers headers request] return if allowed.empty? || (allowed & @except).any? self.class.extend_request_headers(headers, @command_object, @command_class) end |
#extend_request_options(options) ⇒ Object
138 139 140 141 142 143 |
# File 'lib/hammer_cli/command_extensions.rb', line 138 def () allowed = @only & %i[request_options options request] return if allowed.empty? || (allowed & @except).any? self.class.(, @command_object, @command_class) end |
#extend_request_params(params) ⇒ Object
145 146 147 148 149 150 |
# File 'lib/hammer_cli/command_extensions.rb', line 145 def extend_request_params(params) allowed = @only & %i[request_params params request] return if allowed.empty? || (allowed & @except).any? self.class.extend_request_params(params, @command_object, @command_class) end |
#inheritable? ⇒ Boolean
29 30 31 32 33 |
# File 'lib/hammer_cli/command_extensions.rb', line 29 def inheritable? return @inheritable unless @inheritable.nil? self.class.inheritable? || false end |