Class: Kamaze::Project::Tools::Gemspec::Packager Abstract

Inherits:
Packager show all
Includes:
Concern::Reading
Defined in:
lib/kamaze/project/tools/gemspec/packager.rb

Overview

This class is abstract.

Provide a specialized packager, for gemspec based projects

A gemspec reader class is used, it can be retrieved through project tools. This dynamic behaviour is the default one, but a specific reader or a project can be defined during initialization.

Gem specification (Gem::Specification) is retrieved through the gemspec reader. The gemspec reader can be dynamically retrieved through the project.

Direct Known Subclasses

Builder, Packer

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

This class inherits a constructor from Kamaze::Project::Tools::Packager

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Kamaze::Project::Tools::Packager

Instance Attribute Details

#observer_peersHash|nil (readonly, protected) Originally defined in module Concern::Observable

Returns:

  • (Hash|nil)

Instance Method Details

#gemspec_readerKamaze::Project::Tools::Gemspec::Reader (protected) Originally defined in module Concern::Reading

#mutable_attributesObject



26
27
28
# File 'lib/kamaze/project/tools/gemspec/packager.rb', line 26

def mutable_attributes
  [:gemspec_reader]
end

#package_filesArray<String> (protected)

Get package(d) files

Returns:

  • (Array<String>)


45
46
47
48
49
50
51
52
# File 'lib/kamaze/project/tools/gemspec/packager.rb', line 45

def package_files
  # @formatter: off
  (gemspec_reader.read&.files).to_a.yield_self do |files| # rubocop:disable Style/RedundantParentheses
    Dir.glob(%w[*.gemspec Gemfile Gemfile.lock gems.rb gems.locked])
       .concat(files)
  end.sort
  # @formatter: on
end

#ready?Boolean

Denote ready

Test to detect if specification seems to be complete, incomplete specification denotes a missing gemspec file

Returns:

  • (Boolean)


36
37
38
# File 'lib/kamaze/project/tools/gemspec/packager.rb', line 36

def ready?
  gemspec_reader.read(Hash).include?(:full_name)
end

#setupObject (protected)



54
55
56
57
58
59
# File 'lib/kamaze/project/tools/gemspec/packager.rb', line 54

def setup
  @gemspec_reader ||= Kamaze::Project.instance.tools.fetch(:gemspec_reader)

  self.verbose = false
  self.source_files = package_files if self.source_files.to_a.empty?
end

#specificationGem::Specification (protected)

Get specification

Returns:

  • (Gem::Specification)


64
65
66
# File 'lib/kamaze/project/tools/gemspec/packager.rb', line 64

def specification
  gemspec_reader.read
end