Class: ReaperMan::PackageList::Processor::Gem
- Inherits:
-
ReaperMan::PackageList::Processor
- Object
- ReaperMan::PackageList::Processor
- ReaperMan::PackageList::Processor::Gem
- Defined in:
- lib/reaper-man/package_list/gem.rb
Instance Method Summary collapse
-
#add(hash, package) ⇒ Object
Add a package to the list.
-
#clean(hash) ⇒ Smash
Clean data hash of empty values.
-
#extract_fields(package) ⇒ Hash
Extract package metadata.
-
#inject_package(hash, info, package) ⇒ Array<String>
Insert package information into package list.
-
#remove(hash, package_name, version, args = {}) ⇒ Object
Remove package from the list.
Methods inherited from ReaperMan::PackageList::Processor
Methods included from Utils::Checksum
Methods included from Utils::Process
#child_process_command, #mixlib_shellout_command, #shellout
Constructor Details
This class inherits a constructor from ReaperMan::PackageList::Processor
Instance Method Details
#add(hash, package) ⇒ Object
Add a package to the list
13 14 15 16 17 18 19 20 21 |
# File 'lib/reaper-man/package_list/gem.rb', line 13 def add(hash, package) if hash["rubygem"] && !hash.to_smash.get(:rubygem, :clean) hash["rubygem"] = clean(hash["rubygem"]) hash["rubygem"]["clean"] = true end info = extract_fields(package) filenames = inject_package(hash, info, package) filenames end |
#clean(hash) ⇒ Smash
Clean data hash of empty values
91 92 93 94 95 96 97 98 99 |
# File 'lib/reaper-man/package_list/gem.rb', line 91 def clean(hash) Smash[ hash.map { |k, v| v = clean(v) if v.is_a?(Hash) next if v.nil? || (v.respond_to?(:empty?) && v.empty?) [k, v] } ] end |
#extract_fields(package) ⇒ Hash
Extract package metadata
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/reaper-man/package_list/gem.rb', line 44 def extract_fields(package) spec = ::Gem::Package.new(package).spec fields = Smash[ spec.class.attribute_names.map do |var_name| value = spec.send(var_name) next if value.nil? || (value.respond_to?(:empty?) && value.empty?) [var_name, value] end.compact ] fields["dependencies"] = fields["dependencies"].map do |dep| [dep.name, dep.requirement.to_s.split(",").map(&:strip)] end if fields["required_ruby_version"] fields["required_ruby_version"] = fields["required_ruby_version"]. to_s.split(",").map(&:strip) end fields end |
#inject_package(hash, info, package) ⇒ Array<String>
Insert package information into package list
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/reaper-man/package_list/gem.rb', line 69 def inject_package(hash, info, package) package_path = File.join( "rubygems", "gems", "#{info["name"]}-#{info["version"]}.gem" ) classification = info["version"].prerelease? ? "prerelease" : "release" info["version"] = info["version"].version hash.deep_merge!( "rubygem" => { classification => { info["name"] => { info["version"].to_s => info.merge("package_path" => package_path), }, }, }, ) package_path end |
#remove(hash, package_name, version, args = {}) ⇒ Object
Remove package from the list
28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/reaper-man/package_list/gem.rb', line 28 def remove(hash, package_name, version, args = {}) deleted = false if hash["rubygems"][package_name] if version deleted = hash["rubygems"][package_name].delete(version) else deleted = hash["rubygems"].delete(package_name) end end !!deleted end |