Sha256: a184df4254ebb92de974a5f14bb8fdf5f83bea0a7c9fdc6a9300143a3f741bc5

Contents?: true

Size: 1.32 KB

Versions: 10

Compression:

Stored size: 1.32 KB

Contents

module Shaddox
	class ShadowScript
		attr_reader :script
		def initialize(config, task_key, opts = {})
			# Initialize properties
			@installer = opts[:installer]
			@config = config
			@cast_tasks = []

			# Generate script
			params = "{}"
			params = "{:installer => :#{@installer}}" if @installer
			@script = %Q{
require 'shaddox'
Shaddox::Shadow.new(#{params}) do
	## begin generated shadow ##
			}
			add_repos
			cast(task_key)
			@script += %Q{
	## end generated shadow ##
end
			}
		end

		## cast
		# Retrieves a task from the @config and ensures all of its dependencies
		# have been added to the script before adding itself. Tasks are only cast
		# once to elimate redundency.
		def cast(task_key)
			task = @config.tasks[task_key]
			if !task
				raise "The task :#{task_key} could not be found. Please check your Doxfile and try again.".red
			end
			task.deps.each do |dep_key|
				cast(dep_key) if !@cast_tasks.include? dep_key
			end
			@script += %Q{
	## #{task_key} ##
	#{task.to_source}
			}
			@cast_tasks.push(task_key)
		end

		## add_repos
		# Retrieves all repos from the @config and ensures their data is copied
		# to the script for use by tasks.
		def add_repos
			@script += %Q(
	@repos = {)
			@config.repos.each do |key, repo|
				@script += ":#{key} => #{repo.to_source}"
			end
			@script += %Q(})
		end
	end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
shaddox-0.0.19 lib/shaddox/shadow_script.rb
shaddox-0.0.18 lib/shaddox/shadow_script.rb
shaddox-0.0.17 lib/shaddox/shadow_script.rb
shaddox-0.0.16 lib/shaddox/shadow_script.rb
shaddox-0.0.15 lib/shaddox/shadow_script.rb
shaddox-0.0.14 lib/shaddox/shadow_script.rb
shaddox-0.0.13 lib/shaddox/shadow_script.rb
shaddox-0.0.12 lib/shaddox/shadow_script.rb
shaddox-0.0.11 lib/shaddox/shadow_script.rb
shaddox-0.0.10 lib/shaddox/shadow_script.rb