Class: Bowerinstaller::Dsl

Inherits:
Object
  • Object
show all
Defined in:
lib/bowerinstaller/dsl.rb

Instance Method Summary collapse

Constructor Details

#initializeDsl

Returns a new instance of Dsl.



4
5
6
7
# File 'lib/bowerinstaller/dsl.rb', line 4

def initialize
  @default_options = {}
  eval_file(Rails.root.join('bower.rb'))
end

Instance Method Details

#do_not_installObject



30
31
32
# File 'lib/bowerinstaller/dsl.rb', line 30

def do_not_install
  @context[:sources]  = []
end

#eval_file(file) ⇒ Object



15
16
17
18
# File 'lib/bowerinstaller/dsl.rb', line 15

def eval_file(file)
    contents = File.open(file,"r").read
    instance_eval(contents, file.to_s, 1)
end

#group(name, options = {}) ⇒ Object



9
10
11
12
13
# File 'lib/bowerinstaller/dsl.rb', line 9

def group name, options={}
  @context = {:packages => []}
  yield
  (@groups ||= []) << @default_options.merge({ :name => name, :packages => @context[:packages]})
end

#groupsObject



38
39
40
# File 'lib/bowerinstaller/dsl.rb', line 38

def groups
  @groups
end

#package(name, version = nil, &dsl) ⇒ Object



20
21
22
23
24
25
26
27
28
# File 'lib/bowerinstaller/dsl.rb', line 20

def package name, version=nil, &dsl
  @context[:sources] = [];
  if dsl
    dsl.call()
  else
    @context[:sources] = nil # use default install method
  end
  (@context[:packages] || []) << {:name => name.to_s, :version => version, :sources => @context[:sources]}
end

#source(src) ⇒ Object



34
35
36
# File 'lib/bowerinstaller/dsl.rb', line 34

def source src
  (@context[:sources] ||= []) << src
end

#to_bower_jsonObject



42
43
44
45
46
47
48
49
50
51
# File 'lib/bowerinstaller/dsl.rb', line 42

def to_bower_json
  dependencies = {};

  groups.each do|grp|
    grp[:packages].each do |pkg|
      dependencies[pkg[:name]] = pkg[:version] || 'latest'
    end
  end
  return JSON.pretty_generate( {:dependencies => dependencies} )
end