This class handles the boson executable (boson command execution from the commandline). Any changes to your commands are immediately available from the commandline except for changes to the main config file. For those changes to take effect you need to explicitly load and index the libraries with —index. See RepoIndex to understand how Boson can immediately detect the latest commands.
Usage for the boson shell command looks like this:
boson [GLOBAL OPTIONS] [COMMAND] [ARGS] [COMMAND OPTIONS]
The boson executable comes with these global options:
- :help
- Gives a basic help of global options. When a command is given the help shifts to a command’s help.
- :verbose
- Using this along with :help option shows more help. Also gives verbosity to other actions i.e. loading.
- :execute
- Like ruby -e, this executes a string of ruby code. However, this has the advantage that all commands are available as normal methods, automatically loading as needed. This is a good way to call commands that take non-string arguments.
- :console
- This drops Boson into irb after having loaded default commands and any explict libraries with :load option. This is a good way to start irb with only certain libraries loaded.
- :load
- Explicitly loads a list of libraries separated by commas. Most useful when used with :console option. Can also be used to explicitly load libraries that aren’t being detected automatically.
- :index
- Updates index for given libraries allowing you to use them. This is useful if Boson’s autodetection of changed libraries isn’t picking up your changes. Since this option has a :bool_default attribute, arguments passed to this option need to be passed with ’=’ i.e. ’—index=my_lib’.
- :render
- Toggles the auto-rendering done for commands that don’t have views. Doesn’t affect commands that already have views. Default is false. Also see Auto Rendering section below.
- :pager_toggle
- Toggles Hirb’s pager in case you’d like to pipe to another command.
Auto Rendering
Commands that don’t have views (defined via render_options) have their return value auto-rendered as a view as follows:
- nil,false and true aren’t rendered
- arrays are rendered with Hirb’s tables
- non-arrays are printed with inspect()
- Any of these cases can be toggled to render/not render with the global option :render
To turn off auto-rendering by default, add a :no_auto_render: true entry to the main config.
Constants
PIPE | = | '+' |
Attributes
command | [RW] |
Public class methods
Commands to executed, in order given by user
# File lib/boson/runners/bin_runner.rb, line 114 def commands @commands ||= @all_args.map {|e| e[0]} end
Loads libraries and handles non-critical options
# File lib/boson/runners/bin_runner.rb, line 92 def init Runner.in_shell = true Command.all_option_commands = true if @options[:option_commands] super if @options.key?(:index) Index.update(:verbose=>true, :libraries=>@options[:index]) @index_updated = true elsif !@options[:help] && @command && Boson.can_invoke?(@command) Index.update(:verbose=>@options[:verbose]) @index_updated = true end Manager.load @options[:load], load_options if @options[:load] View.toggle_pager if @options[:pager_toggle] end
Hash of global options passed in from commandline
# File lib/boson/runners/bin_runner.rb, line 109 def options @options ||= {} end
Starts, processes and ends a commandline request.
# File lib/boson/runners/bin_runner.rb, line 57 def start(args=ARGV) @command, @options, @args = parse_args(args) return puts("boson #{Boson::VERSION}") if @options[:version] return print_usage if args.empty? || (@command.nil? && !@options[:console] && !@options[:execute]) return ConsoleRunner.bin_start(@options[:console], @options[:load]) if @options[:console] init if @options[:help] autoload_command @command Boson.invoke(:usage, @command, :verbose=>@options[:verbose]) elsif @options[:execute] define_autoloader Boson.main_object.instance_eval @options[:execute] else execute_command end rescue NoMethodError print_error_message no_method_error_message rescue print_error_message default_error_message end