module JamesBond::Core::Mission
Constants
- MissionConfig
Attributes
core_mission_config[RW]
core_mission_options[RW]
option_rules[R]
Public Class Methods
new(params={})
click to toggle source
# File lib/james_bond/core/mission.rb, line 13 def initialize(params={}) @core_mission_config = MissionConfig.new @core_mission_options = {} build(@core_mission_config, params) check_variables_definitions check_main_command_methods end
Public Instance Methods
arguments_parser() { |option_rules| ... }
click to toggle source
# File lib/james_bond/core/mission.rb, line 35 def arguments_parser(&block) require "slop" @option_rules = Slop::Options.new yield(@option_rules) end
build(config, params)
click to toggle source
# File lib/james_bond/core/mission.rb, line 22 def build(config, params) raise(NotImplementedError, "The method \"build\" must be implemented for the #{self.class} class") end
run_command(command: , mission_pool:)
click to toggle source
# File lib/james_bond/core/mission.rb, line 26 def run_command(command: , mission_pool:) @core_mission_options = command.options = parse_arguments(command) if @option_rules command.options = parse_arguments(command) if @option_rules self.send( build_command_method_name(command.main_command), { command: command, mission_pool: mission_pool } ) end
Private Instance Methods
build_command_method_name(main_command)
click to toggle source
# File lib/james_bond/core/mission.rb, line 48 def build_command_method_name(main_command) "run_#{main_command}_command" end
check_main_command_methods()
click to toggle source
# File lib/james_bond/core/mission.rb, line 61 def check_main_command_methods @core_mission_config.main_commands.each do |main_command| expected_command_method = build_command_method_name(main_command) raise(NotImplementedError, "The method \"#{expected_command_method}\" must be implemented for the #{self.class}") if !self.respond_to?(expected_command_method) end end
check_variables_definitions()
click to toggle source
# File lib/james_bond/core/mission.rb, line 52 def check_variables_definitions raise(UndefinedVariableError, "The mission name must be defined in the build method. " \ + "Try calling config.name = \"MissionName\" inside the build method") if !@core_mission_config.name raise(UndefinedVariableError, "The main commands must be defined in the build method. " \ + "Try calling config.main_commands = [\"cmd\", \"dmc\"] inside the build method") if !@core_mission_config.main_commands end
parse_arguments(command)
click to toggle source
# File lib/james_bond/core/mission.rb, line 43 def parse_arguments(command) arguments_array = command.raw_arguments Slop::Parser.new(@option_rules).parse(arguments_array) end