class Flo::Runner

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.

@example

runner = Runner.new
runner.load_config_file('path/to/config/file')
runner.execute([:issue, :submit], id: '1234', submitter: 'John Doe')

@attr_reader commands [CommandCollection] List of commands currently defined

Attributes

command_class[R]
commands[R]

Public Class Methods

new(opts={}) click to toggle source

Creates a new runner. This object is generally useless until you load some configuration into it, typically using {#load_config_file}

# File lib/flo/runner.rb, line 35
def initialize(opts={})
  @config = opts[:config] || Flo::Config.new
  @command_class = opts[:command_class] || Flo::Command
  @commands = opts[:command_collection] || Flo::CommandCollection.new
end

Public Instance Methods

config() { |config| ... } click to toggle source

@api dsl DSL method: Returns the instance of {Config} associated with this runner. Exposes the {Config} instance if a block is used

@yield [Config]

@return [Config]

# File lib/flo/runner.rb, line 82
def config
  yield(@config) if block_given?
  @config
end
execute(command_namespace, args=[]) click to toggle source

Executes the command specified, with the arguments specified @param command_namespace [Array<Symbol>] An array containing the name of

the command as a symbol, including the namespace.  For example, the
command "issue submit" would become [:issue, :submit]

@param args=[] [Array] Options that will get passed to the command

# File lib/flo/runner.rb, line 70
def execute(command_namespace, args=[])
  commands[command_namespace][:command].call(args)
end
load_config_file(config_file) click to toggle source

Open and parse a file containing flo configuration. This file is evaluated within a cleanroom. See the {github.com/sethvargo/cleanroom cleanroom gem} for more information. @param config_file [String] path to the flo configuration file

# File lib/flo/runner.rb, line 46
def load_config_file(config_file)
  evaluate_file(config_file)
end
load_default_config_files() click to toggle source

Open and parse any available config files, in the following order:

  • ENV # Allows the addition of custom files

  • ./.flo

  • ~/.flo

See {#load_config_file}

# File lib/flo/runner.rb, line 56
def load_default_config_files
  [ENV['FLO_CONFIG_FILE'], File.join(Dir.pwd, '.flo'), File.join(Dir.home, '.flo')].compact.each do |file|
    if File.exist?(file)
      self.load_config_file(file)
    end
  end
end
register_command(command_namespace, opts={}, &blk) click to toggle source

@api dsl DSL method: Creates and defines a {Command}, adding it to the command collection. Definition for the command should happen inside of the required block. See {Command} for methods available within the block. @param command_namespace [String] name of the command @option opts [String] :summary Summary of the command @option opts [String] :description Detailed description of the command @yield [args*] The block containing the definition for the command.

Arguments passed into {#execute} are available within the block
# File lib/flo/runner.rb, line 98
def register_command(command_namespace, opts={}, &blk)
  opts[:command] = command_class.new(providers: config.providers, &blk)
  commands[command_namespace] = opts
end