Class: Kamaze::Project::Tools::Gemspec::Writer::DepGen

Inherits:
Object
  • Object
show all
Defined in:
lib/kamaze/project/tools/gemspec/writer/dep_gen.rb

Overview

Dependencies generator (using a kindo of decorator)

Inspiration taken from GemspecDepsGen

Instance Method Summary collapse

Constructor Details

#initialize(spec_name = 's') ⇒ DepGen

Returns a new instance of DepGen.

Parameters:

  • spec_name (String) (defaults to: 's')


20
21
22
# File 'lib/kamaze/project/tools/gemspec/writer/dep_gen.rb', line 20

def initialize(spec_name = 's')
  @spec_name = spec_name.to_s
end

Instance Method Details

#decoratorClass<Kamaze::Project::Tools::Gemspec::Writer::Dependency> (protected)



61
62
63
# File 'lib/kamaze/project/tools/gemspec/writer/dep_gen.rb', line 61

def decorator
  Kamaze::Project::Tools::Gemspec::Writer::Dependency
end

#dependenciesHash

Get dependencies indexed by group

Returns:

  • (Hash)


27
28
29
30
31
32
33
34
35
# File 'lib/kamaze/project/tools/gemspec/writer/dep_gen.rb', line 27

def dependencies
  {}.yield_self do |dependencies|
    { default: :runtime, development: :development }.each do |k, type|
      dependencies[type] = gems_by_group(k).to_a.freeze
    end

    dependencies
  end.freeze
end

#dependencyKamaze::Project::Tools::Gemspec::Writer::Dependency

Get an object describing dependency



40
41
42
# File 'lib/kamaze/project/tools/gemspec/writer/dep_gen.rb', line 40

def dependency
  decorator.new(dependencies, @spec_name)
end

#gems_by_group(group) ⇒ Array (protected)

Get gems for given group

Parameters:

  • group (Symbol|String)

Returns:

  • (Array)


56
57
58
# File 'lib/kamaze/project/tools/gemspec/writer/dep_gen.rb', line 56

def gems_by_group(group)
  runtime.dependencies.select { |d| d.groups.include?(group.to_sym) }.to_a
end

#runtimeBundler::Runtime (protected)

Returns:

  • (Bundler::Runtime)


47
48
49
50
# File 'lib/kamaze/project/tools/gemspec/writer/dep_gen.rb', line 47

def runtime
  # Bundler.environment has been removed in favor of Bundler.load
  Bundler.public_send(Bundler.respond_to?(:load) ? :load : :environment)
end