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

#decoratorKamaze::Project::Tools::Gemspec::Writer::Dependency (protected)



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

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)


50
51
52
53
54
55
# File 'lib/kamaze/project/tools/gemspec/writer/dep_gen.rb', line 50

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