Class: Shaddox::ShadowScript

Inherits:
Object
  • Object
show all
Defined in:
lib/shaddox/shadow_script.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config, task_key, opts = {}) ⇒ ShadowScript

Returns a new instance of ShadowScript.



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/shaddox/shadow_script.rb', line 4

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

Instance Attribute Details

#scriptObject (readonly)

Returns the value of attribute script.



3
4
5
# File 'lib/shaddox/shadow_script.rb', line 3

def script
  @script
end

Instance Method Details

#add_reposObject

add_repos Retrieves all repos from the @config and ensures their data is copied to the script for use by tasks.



48
49
50
51
52
53
54
55
# File 'lib/shaddox/shadow_script.rb', line 48

def add_repos
  @script += %Q(
  @repos = {)
  @config.repos.each do |key, repo|
    @script += ":#{key} => #{repo.to_source}"
  end
  @script += %Q(})
end

#cast(task_key) ⇒ Object

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.



30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/shaddox/shadow_script.rb', line 30

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