Class: BundlerExt::Gemfile

Inherits:
Object
  • Object
show all
Defined in:
lib/bundler_ext/gemfile.rb

Class Method Summary collapse

Class Method Details

.dependency_in_env?(dep, env) ⇒ Boolean

Returns:

  • (Boolean)


19
20
21
22
# File 'lib/bundler_ext/gemfile.rb', line 19

def self.dependency_in_env?(dep, env)
  in_group = (env[:groups] & dep.groups).any? || env[:all_groups]
  in_group && dep.current_platform?
end

.files_for_dependency(dep, env) ⇒ Object



24
25
26
27
28
29
30
31
32
# File 'lib/bundler_ext/gemfile.rb', line 24

def self.files_for_dependency(dep, env)
  files = []
  if self.dependency_in_env?(dep, env)
    Array(dep.autorequire || dep.name).each do |file|
      files << file
    end
  end
  files
end

.parse(gemfile, *groups) ⇒ Object



43
44
45
46
47
48
# File 'lib/bundler_ext/gemfile.rb', line 43

def self.parse(gemfile, *groups)
  setup_env(gemfile)
  env = parse_env(groups)
  gemfile = Bundler::Dsl.evaluate(gemfile, nil, true)
  process(gemfile, env)
end

.parse_env(groups) ⇒ Object



9
10
11
12
13
14
15
16
17
# File 'lib/bundler_ext/gemfile.rb', line 9

def self.parse_env(groups)
  extra_groups = ENV['BEXT_GROUPS'] ||
                 ENV['BUNDLER_EXT_GROUPS']
  extra_groups.split(/\s/).each {|g| groups << g.to_sym} if extra_groups
  all_groups = groups.size == 1 && groups.first == :all && (!extra_groups || extra_groups.empty?)
  {:groups       => groups.map { |g| g.to_sym},
   :extra_groups => extra_groups,
   :all_groups   => all_groups}
end

.process(bundler_gemfile, env) ⇒ Object



34
35
36
37
38
39
40
41
# File 'lib/bundler_ext/gemfile.rb', line 34

def self.process(bundler_gemfile, env)
  deps = {}
  bundler_gemfile.dependencies.each do |dep|
    files = self.files_for_dependency(dep, env)
    deps[dep.name] = {:dep => dep, :files => files} unless files.empty?
  end
  deps
end

.setup_env(gemfile) ⇒ Object



5
6
7
# File 'lib/bundler_ext/gemfile.rb', line 5

def self.setup_env(gemfile)
  ENV['BUNDLE_GEMFILE'] = gemfile
end