diff --git a/lib/workshopper/content.rb b/lib/workshopper/content.rb index b4e2122..bb91152 100644 --- a/lib/workshopper/content.rb +++ b/lib/workshopper/content.rb @@ -7,9 +7,9 @@ module Workshopper class Content - def initialize(prefix) - @prefix = prefix - @data = Workshopper::Loader.get(File.join(@prefix, '_modules.yml')) + def initialize(workshop) + @workshop = workshop + @data = Workshopper::Loader.get(File.join(prefix, '_modules.yml')) @data = YAML.load(@data) @data['config'] = { 'renderer' => 'adoc', @@ -22,12 +22,16 @@ def initialize(prefix) end end + def workshop + @workshop + end + def lab(name) @labs[name] ||= Workshopper::Lab.new(self, name) end def prefix - @prefix + @workshop.prefix end def ext diff --git a/lib/workshopper/lab.rb b/lib/workshopper/lab.rb index 30ee602..aff2a17 100644 --- a/lib/workshopper/lab.rb +++ b/lib/workshopper/lab.rb @@ -41,15 +41,19 @@ def env(workshop, session) env[item] = @content.env[item]['value'] end if @lab['vars'] - ENV.each_pair do |name, value| + @content.workshop.vars.each_pair do |name, value| env[name] = value + end if @content.workshop.vars + + env.each_key do |key| + env[key] = ENV[key] if ENV[key] end env.each_key do |key| env[key] = session[key] if session[key] end - if env['DYNAMIC_USER_NAME'] || true + if env['DYNAMIC_USER_NAME'] @user_id ||= 0 if env['NUM_USERS'] && env['NUM_USERS'] > 0 && @user_id >= Integer(env['NUM_USERS']) raise Exception.new('Not enough users in workshop environment') diff --git a/lib/workshopper/workshop.rb b/lib/workshopper/workshop.rb index c0e7c4f..86e87f1 100644 --- a/lib/workshopper/workshop.rb +++ b/lib/workshopper/workshop.rb @@ -16,7 +16,7 @@ def initialize(url) @id = @data['id'] - @content = Content.new(prefix) + @content = Content.new(self) end def prefix @@ -31,6 +31,10 @@ def name @data['name'] end + def vars + @data['vars'] + end + def active_labs @data['modules']['activate'] end