class Kamaze::Project::Tools::Gemspec::Writer::DepGen

Dependencies generator (using a kindo of decorator)

Inspiration taken from “GemspecDepsGen“

@see github.com/shvets/gemspec_deps_gen

Public Class Methods

new(spec_name = 's') click to toggle source

@param [String] spec_name

# File lib/kamaze/project/tools/gemspec/writer/dep_gen.rb, line 20
def initialize(spec_name = 's')
  @spec_name = spec_name.to_s
end

Public Instance Methods

dependencies() click to toggle source

Get dependencies indexed by group

@return [Hash]

# 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
dependency() click to toggle source

Get an object describing dependency

@return [Kamaze::Project::Tools::Gemspec::Writer::Dependency]

# File lib/kamaze/project/tools/gemspec/writer/dep_gen.rb, line 40
def dependency
  decorator.new(dependencies, @spec_name)
end

Protected Instance Methods

decorator() click to toggle source

@return [Class<Kamaze::Project::Tools::Gemspec::Writer::Dependency>]

# File lib/kamaze/project/tools/gemspec/writer/dep_gen.rb, line 61
def decorator
  Kamaze::Project::Tools::Gemspec::Writer::Dependency
end
gems_by_group(group) click to toggle source

Get gems for given group

@param [Symbol|String] group @return [Array]

# 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
runtime() click to toggle source

@return [Bundler::Runtime]

# 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