lib/isolate/scenarios.rb in isolate-scenarios-0.0.2 vs lib/isolate/scenarios.rb in isolate-scenarios-0.1.0

- old
+ new

@@ -1,12 +1,32 @@ require 'isolate' -require 'isolate/scenarios/sandbox' +require 'isolate/scenarios/extensions' require 'isolate/scenarios/cli' -module Isolate - module Scenarios - def self.now! - @@sandbox = Isolate::Scenarios::Sandbox.new - @@sandbox.activate +Isolate::Entry.class_eval do + include Isolate::Scenarios::Entry +end + +Isolate::Sandbox.class_eval do + include Isolate::Scenarios::Entry +end + +Isolate::Events.watch(Isolate::Sandbox, :activating) do |sandbox| + sandbox.entries.each do |entry| + if entry.scenarios + selected_scenario_version = if ENV[entry.scenario_env_variable] + entry.scenarios.detect do |scenario| + ENV[entry.scenario_env_variable] == "#{entry.name}-#{scenario}" + end + elsif entry.default_scenario + entry.default_scenario + else + entry.scenarios.last + end + + if selected_scenario_version + puts "Activating#{' default' if entry.default_scenario == selected_scenario_version} scenario: #{entry.name}-#{selected_scenario_version}" + entry.update(selected_scenario_version) + end end end end