Class: Quest::Messenger
- Inherits:
-
Object
- Object
- Quest::Messenger
- Defined in:
- lib/quest/messenger.rb
Overview
Shared state and methods for reading from the content directory
Instance Attribute Summary collapse
-
#active_quest ⇒ Object
Returns the value of attribute active_quest.
-
#quest_index_file ⇒ Object
readonly
Returns the value of attribute quest_index_file.
-
#quest_status ⇒ Object
Returns the value of attribute quest_status.
-
#spec_helper ⇒ Object
readonly
Returns the value of attribute spec_helper.
Instance Method Summary collapse
- #begin_quest(quest) ⇒ Object
-
#initialize(config = {}) ⇒ Messenger
constructor
A new instance of Messenger.
- #quests ⇒ Object
- #run_setup_command(quest) ⇒ Object
- #set_raw_status(quest, raw_status_hash) ⇒ Object
- #setup_command ⇒ Object
- #spec_path(quest) ⇒ Object
- #validate_task_dir ⇒ Object
Constructor Details
#initialize(config = {}) ⇒ Messenger
Returns a new instance of Messenger.
17 18 19 20 21 22 23 24 25 |
# File 'lib/quest/messenger.rb', line 17 def initialize(config = {}) @task_dir = config['task_dir'] || Dir.pwd @quest_index_file = File.join(@task_dir, 'index.json') validate_task_dir @spec_helper = File.join(@task_dir, 'spec_helper.rb') @quest_status = {} @active_quest = quests.first run_setup_command(@active_quest) end |
Instance Attribute Details
#active_quest ⇒ Object
Returns the value of attribute active_quest.
14 15 16 |
# File 'lib/quest/messenger.rb', line 14 def active_quest @active_quest end |
#quest_index_file ⇒ Object (readonly)
Returns the value of attribute quest_index_file.
12 13 14 |
# File 'lib/quest/messenger.rb', line 12 def quest_index_file @quest_index_file end |
#quest_status ⇒ Object
Returns the value of attribute quest_status.
15 16 17 |
# File 'lib/quest/messenger.rb', line 15 def quest_status @quest_status end |
#spec_helper ⇒ Object (readonly)
Returns the value of attribute spec_helper.
13 14 15 |
# File 'lib/quest/messenger.rb', line 13 def spec_helper @spec_helper end |
Instance Method Details
#begin_quest(quest) ⇒ Object
69 70 71 72 73 74 |
# File 'lib/quest/messenger.rb', line 69 def begin_quest(quest) if quests.include?(quest) @active_quest = quest run_setup_command(quest) end end |
#quests ⇒ Object
61 62 63 |
# File 'lib/quest/messenger.rb', line 61 def quests JSON.parse(File.read(@quest_index_file)).keys end |
#run_setup_command(quest) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/quest/messenger.rb', line 40 def run_setup_command(quest) if setup_command begin puts "Setting up the #{active_quest} quest..." Dir.chdir(@task_dir){ setup_io = IO.popen(setup_command) do |io| io.each do |line| puts line end end } rescue puts "Setup for #{active_quest} failed" end end end |
#set_raw_status(quest, raw_status_hash) ⇒ Object
27 28 29 |
# File 'lib/quest/messenger.rb', line 27 def set_raw_status(quest, raw_status_hash) @quest_status[quest] = raw_status_hash end |
#setup_command ⇒ Object
65 66 67 |
# File 'lib/quest/messenger.rb', line 65 def setup_command JSON.parse(File.read(@quest_index_file))[@active_quest]["setup_command"] end |
#spec_path(quest) ⇒ Object
57 58 59 |
# File 'lib/quest/messenger.rb', line 57 def spec_path(quest) File.join(@task_dir, "#{quest}_spec.rb") end |
#validate_task_dir ⇒ Object
31 32 33 34 35 36 37 38 |
# File 'lib/quest/messenger.rb', line 31 def validate_task_dir begin JSON.parse(File.read(@quest_index_file)) rescue Errno::ENOENT puts "No valid quest index.json file found at #{@quest_index_file}" exit 1 end end |