Class: Jake::Build

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/jake/build.rb

Constant Summary collapse

DEFAULT_LAYOUT =
'together'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dir, config = nil, options = {}) ⇒ Build

Returns a new instance of Build.



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/jake/build.rb', line 12

def initialize(dir, config = nil, options = {})
  @dir = File.expand_path(dir)
  @helper = Helper.new(options)
  
  path = "#{dir}/#{CONFIG_FILE}"
  yaml = File.read(path)
  
  @config = Jake.symbolize_hash( config || YAML.load(ERB.new(yaml).result(@helper.scope)) )
  
  helpers = "#{dir}/#{HELPER_FILE}"
  load helpers if File.file?(helpers)
  
  @builds = @config[:builds] || {:src => false, :min => @config[:packer]}
  
  @packages = @config[:packages].inject({}) do |pkgs, (name, conf)|
    pkgs[name] = Package.new(self, name, conf)
    pkgs
  end
  
  @bundles = (@config[:bundles] || {}).inject({}) do |pkgs, (name, conf)|
    pkgs[name] = Bundle.new(self, name, conf)
    pkgs
  end
end

Instance Attribute Details

#helperObject (readonly)

Returns the value of attribute helper.



10
11
12
# File 'lib/jake/build.rb', line 10

def helper
  @helper
end

Instance Method Details

#build_directoryObject



59
60
61
# File 'lib/jake/build.rb', line 59

def build_directory
  "#{ @dir }/#{ @config[:build_directory] || '.' }"
end

#each(&block) ⇒ Object



37
38
39
# File 'lib/jake/build.rb', line 37

def each(&block)
  @builds.each(&block)
end

#force!Object



41
42
43
# File 'lib/jake/build.rb', line 41

def force!
  @forced = true
end

#forced?Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/jake/build.rb', line 45

def forced?
  !!@forced
end

#headerObject



67
68
69
70
71
# File 'lib/jake/build.rb', line 67

def header
  @config[:header] ?
      Jake.read("#{ source_directory }/#{ @config[:header] }") :
      ""
end

#layoutObject



85
86
87
# File 'lib/jake/build.rb', line 85

def layout
  @config[:layout] || DEFAULT_LAYOUT
end

#package(name) ⇒ Object



49
50
51
# File 'lib/jake/build.rb', line 49

def package(name)
  @packages[name.to_sym] || @bundles[name.to_sym]
end

#packer_settings(build_name) ⇒ Object



73
74
75
76
77
# File 'lib/jake/build.rb', line 73

def packer_settings(build_name)
  build = @builds[build_name.to_sym]
  return false unless build
  build[:packer].nil? ? build : build[:packer]
end

#run!Object



53
54
55
56
57
# File 'lib/jake/build.rb', line 53

def run!
  @packages.each { |name, pkg| pkg.write! }
  @bundles.each  { |name, pkg| pkg.write! }
  @helper.after_build(self) if @helper.respond_to?(:after_build)
end

#source_directoryObject



63
64
65
# File 'lib/jake/build.rb', line 63

def source_directory
  "#{ @dir }/#{ @config[:source_directory] || '.' }"
end

#use_suffix?(build_name) ⇒ Boolean

Returns:

  • (Boolean)


79
80
81
82
83
# File 'lib/jake/build.rb', line 79

def use_suffix?(build_name)
  build = @builds[build_name.to_sym]
  return true unless build
  build[:suffix] != false
end