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.
-
#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 included from Utils::Checksum
Methods included from Utils::Process
#child_process_command, #mixlib_shellout_command, #shellout
Instance Method Details
#add(hash, package) ⇒ Object
Add a package to the list
13 14 15 16 17 |
# File 'lib/reaper-man/package_list/gem.rb', line 13 def add(hash, package) info = extract_fields(package) filenames = inject_package(hash, info, package) filenames end |
#extract_fields(package) ⇒ Hash
Extract package metadata
40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/reaper-man/package_list/gem.rb', line 40 def extract_fields(package) spec = ::Gem::Package.open(File.open(package)){|pack| pack.} fields = Smash[ spec.to_yaml_properties.map do |var_name| [var_name.to_s.tr('@', ''), spec.instance_variable_get(var_name)] end ] fields['dependencies'] = fields['dependencies'].map do |dep| [dep.name, dep.requirement.to_s] end fields end |
#inject_package(hash, info, package) ⇒ Array<String>
Insert package information into package list
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/reaper-man/package_list/gem.rb', line 59 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
24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/reaper-man/package_list/gem.rb', line 24 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 |