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

Inherits:
Packager show all
Includes:
Concern::Reading
Defined in:
lib/kamaze/project/tools/gemspec.rb,
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



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

def mutable_attributes
  [:gemspec_reader]
end

#package_filesArray<String> (protected)

Get package(d) files

Returns:

  • (Array<String>)


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

def package_files
  (Dir.glob([
              '*.gemspec',
              'Gemfile', 'Gemfile.lock',
              'gems.rb', 'gems.locked',
            ]) + (gemspec_reader.read&.files).to_a).sort
end

#ready?Boolean

Denote ready

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

Returns:

  • (Boolean)


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

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.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