Module: GLI::AppSupport
- Included in:
- App
- Defined in:
- lib/gli/app_support.rb
Overview
Internals for make App work
Class Method Summary collapse
Instance Method Summary collapse
-
#accepts ⇒ Object
:nodoc:.
- #around_blocks ⇒ Object
-
#clear_nexts ⇒ Object
:nodoc:.
-
#commands ⇒ Object
:nodoc:.
-
#commands_declaration_order ⇒ Object
Get an array of commands, ordered by when they were declared.
-
#config_file_name ⇒ Object
Return the name of the config file; mostly useful for generating help docs.
- #context_description ⇒ Object
-
#copy_options_to_aliased_versions(global_options, command, options) ⇒ Object
Copies all options in both global_options and options to keys for the aliases of those flags.
-
#error_device=(e) ⇒ Object
Override the device of stderr; exposed only for testing.
-
#flags ⇒ Object
:nodoc:.
-
#get_default_command ⇒ Object
Get the default command for the entire app.
- #help_sort_type ⇒ Object
- #help_text_wrap_type ⇒ Object
- #override_command_defaults(command_list, config) ⇒ Object
- #override_default(tokens, config) ⇒ Object
-
#override_defaults_based_on_config(config) ⇒ Object
Sets the default values for flags based on the configuration.
-
#parse_config ⇒ Object
:nodoc:.
- #post_block ⇒ Object
- #pre_block ⇒ Object
-
#reset ⇒ Object
Reset the GLI module internal data structures; mostly useful for testing.
-
#run(args) ⇒ Object
Runs whatever command is needed based on the arguments.
- #stderr ⇒ Object
-
#switches ⇒ Object
:nodoc:.
-
#version_string ⇒ Object
Get the version string.
Class Method Details
.included(klass) ⇒ Object
115 116 117 |
# File 'lib/gli/app_support.rb', line 115 def self.included(klass) @stderr = $stderr end |
Instance Method Details
#accepts ⇒ Object
:nodoc:
81 82 83 |
# File 'lib/gli/app_support.rb', line 81 def accepts #:nodoc: @accepts ||= {} end |
#around_blocks ⇒ Object
148 149 150 |
# File 'lib/gli/app_support.rb', line 148 def around_blocks @around_blocks || [] end |
#clear_nexts ⇒ Object
:nodoc:
104 105 106 107 108 109 |
# File 'lib/gli/app_support.rb', line 104 def clear_nexts # :nodoc: super @skips_post = false @skips_pre = false @skips_around = false end |
#commands ⇒ Object
:nodoc:
127 128 129 130 131 132 133 134 135 |
# File 'lib/gli/app_support.rb', line 127 def commands # :nodoc: if !@commands @commands = { :help => GLI::Commands::Help.new(self), :_doc => GLI::Commands::Doc.new(self) } @commands_declaration_order ||= [] @commands_declaration_order << @commands[:help] @commands_declaration_order << @commands[:_doc] end @commands end |
#commands_declaration_order ⇒ Object
Get an array of commands, ordered by when they were declared
32 33 34 |
# File 'lib/gli/app_support.rb', line 32 def commands_declaration_order # :nodoc: @commands_declaration_order end |
#config_file_name ⇒ Object
Return the name of the config file; mostly useful for generating help docs
77 78 79 |
# File 'lib/gli/app_support.rb', line 77 def config_file_name #:nodoc: @config_file end |
#context_description ⇒ Object
9 10 11 |
# File 'lib/gli/app_support.rb', line 9 def context_description "in global context" end |
#copy_options_to_aliased_versions(global_options, command, options) ⇒ Object
Copies all options in both global_options and options to keys for the aliases of those flags. For example, if a flag works with either -f or –flag, this will copy the value from [:f] to [:flag] to allow the user to access the options by any alias
88 89 90 91 |
# File 'lib/gli/app_support.rb', line 88 def (,command,) # :nodoc: () command.() end |
#error_device=(e) ⇒ Object
Override the device of stderr; exposed only for testing
5 6 7 |
# File 'lib/gli/app_support.rb', line 5 def error_device=(e) #:nodoc: @stderr = e end |
#flags ⇒ Object
:nodoc:
119 120 121 |
# File 'lib/gli/app_support.rb', line 119 def flags # :nodoc: @flags ||= {} end |
#get_default_command ⇒ Object
Get the default command for the entire app
42 43 44 |
# File 'lib/gli/app_support.rb', line 42 def get_default_command @default_command end |
#help_sort_type ⇒ Object
152 153 154 |
# File 'lib/gli/app_support.rb', line 152 def help_sort_type @help_sort_type || :alpha end |
#help_text_wrap_type ⇒ Object
156 157 158 |
# File 'lib/gli/app_support.rb', line 156 def help_text_wrap_type @help_text_wrap_type || :to_terminal end |
#override_command_defaults(command_list, config) ⇒ Object
168 169 170 171 172 173 174 175 176 177 178 |
# File 'lib/gli/app_support.rb', line 168 def override_command_defaults(command_list,config) command_list.each do |command_name,command| next if command_name == :initconfig || command.nil? command_config = (config['commands'] || {})[command_name] || {} override_default(command.topmost_ancestor.flags,command_config) override_default(command.topmost_ancestor.switches,command_config) override_command_defaults(command.commands,command_config) end end |
#override_default(tokens, config) ⇒ Object
180 181 182 183 184 |
# File 'lib/gli/app_support.rb', line 180 def override_default(tokens,config) tokens.each do |name,token| token.default_value=config[name] if config[name] end end |
#override_defaults_based_on_config(config) ⇒ Object
Sets the default values for flags based on the configuration
161 162 163 164 165 166 |
# File 'lib/gli/app_support.rb', line 161 def override_defaults_based_on_config(config) override_default(flags,config) override_default(switches,config) override_command_defaults(commands,config) end |
#parse_config ⇒ Object
:nodoc:
93 94 95 96 97 98 99 100 101 102 |
# File 'lib/gli/app_support.rb', line 93 def parse_config # :nodoc: config = { 'commands' => {}, } if @config_file && File.exist?(@config_file) require 'yaml' config.merge!(File.open(@config_file) { |file| YAML::load(file) }) end config end |
#post_block ⇒ Object
143 144 145 146 |
# File 'lib/gli/app_support.rb', line 143 def post_block @post_block ||= Proc.new do end end |
#pre_block ⇒ Object
137 138 139 140 141 |
# File 'lib/gli/app_support.rb', line 137 def pre_block @pre_block ||= Proc.new do true end end |
#reset ⇒ Object
Reset the GLI module internal data structures; mostly useful for testing
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/gli/app_support.rb', line 14 def reset # :nodoc: switches.clear flags.clear @commands = nil @commands_declaration_order = [] @version = nil @config_file = nil @use_openstruct = false @prog_desc = nil @error_block = false @pre_block = false @post_block = false @default_command = :help @around_block = nil clear_nexts end |
#run(args) ⇒ Object
Runs whatever command is needed based on the arguments.
args
-
the command line ARGV array
Returns a number that would be a reasonable exit code
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/gli/app_support.rb', line 51 def run(args) #:nodoc: args = args.dup if @preserve_argv command = nil begin override_defaults_based_on_config(parse_config) add_help_switch_if_needed(switches) ,command,,arguments = GLIOptionParser.new(commands,flags,switches,accepts,@default_command).(args) (,command,) = convert_to_openstruct_if_needed() = convert_to_openstruct_if_needed() if proceed?(,command,,arguments) call_command(command,,,arguments) end 0 rescue Exception => ex handle_exception(ex,command) end end |
#stderr ⇒ Object
111 112 113 |
# File 'lib/gli/app_support.rb', line 111 def stderr @stderr ||= STDERR end |
#switches ⇒ Object
:nodoc:
123 124 125 |
# File 'lib/gli/app_support.rb', line 123 def switches # :nodoc: @switches ||= {} end |
#version_string ⇒ Object
Get the version string
37 38 39 |
# File 'lib/gli/app_support.rb', line 37 def version_string #:nodoc: @version end |