Class: Flo::Runner
Overview
This is the main class for instantiating and performing Flo commands. If you are wanting to interact with Flo via a ruby script, this is the class you want. Utilizing Flo through the command line interface will invoke this class after all of the argument parsing is complete.
Instance Attribute Summary collapse
-
#commands ⇒ CommandCollection
readonly
List of commands currently defined.
Instance Method Summary collapse
-
#config {|Config| ... } ⇒ Config
DSL method: Returns the instance of Config associated with this runner.
-
#execute(command_namespace, args = {}) ⇒ Object
Executes the command specified, with the arguments specified.
-
#initialize(opts = {}) ⇒ Runner
constructor
Creates a new runner.
-
#load_config_file(config_file) ⇒ Object
Open and parse a file containing flo configuration.
-
#register_command(command_namespace) {|args*| ... } ⇒ Object
DSL method: Creates and defines a Command, adding it to the command collection.
Constructor Details
#initialize(opts = {}) ⇒ Runner
Creates a new runner. This object is generally useless until you load some configuration into it, typically using #load_config_file
36 37 38 39 40 |
# File 'lib/flo/runner.rb', line 36 def initialize(opts={}) @config = opts[:config] || Flo::Config.new @command_class = opts[:command_class] || Flo::Command @commands = opts[:command_collection] || Flo::CommandCollection.new end |
Instance Attribute Details
#commands ⇒ CommandCollection (readonly)
List of commands currently defined
28 29 30 |
# File 'lib/flo/runner.rb', line 28 def commands @commands end |
Instance Method Details
#config {|Config| ... } ⇒ Config
69 70 71 72 |
# File 'lib/flo/runner.rb', line 69 def config yield(@config) if block_given? @config end |
#execute(command_namespace, args = {}) ⇒ Object
Executes the command specified, with the arguments specified
57 58 59 |
# File 'lib/flo/runner.rb', line 57 def execute(command_namespace, args={}) commands[command_namespace].call(args) end |
#load_config_file(config_file) ⇒ Object
Open and parse a file containing flo configuration. This file is evaluated within a cleanroom. See the cleanroom gem for more information.
47 48 49 |
# File 'lib/flo/runner.rb', line 47 def load_config_file(config_file) evaluate_file(config_file) end |
#register_command(command_namespace) {|args*| ... } ⇒ Object
84 85 86 |
# File 'lib/flo/runner.rb', line 84 def register_command(command_namespace, &blk) commands[command_namespace] = command_class.new(providers: config.providers, &blk) end |