Class: MiqLinux::Packages
- Inherits:
-
Object
- Object
- MiqLinux::Packages
- Defined in:
- lib/metadata/linux/LinuxPackages.rb
Constant Summary collapse
- DPKG_FILE =
Debian based packageing.
'/var/lib/dpkg/status'
- PORTAGE_DB =
Gentoo based packageing - portage.
'/var/db/pkg'
- PORTAGE_CMD =
'/usr/bin/emerge'
- RPM_DB =
RPM DB directory.
"/var/lib/rpm"
- CONARY_FILE =
Conary DB file
"/var/lib/conarydb/conarydb"
Instance Attribute Summary collapse
-
#fs ⇒ Object
Returns the value of attribute fs.
Instance Method Summary collapse
- #encodeStrings(data) ⇒ Object
-
#initialize(fs = nil) ⇒ Packages
constructor
A new instance of Packages.
-
#procConary(dbFile) ⇒ Object
Conary DB processing.
- #procDpkg(pf) ⇒ Object
- #procPortage(pd) ⇒ Object
-
#procRPM(dbDir) ⇒ Object
Client-side RPM DB processing.
- #toString(_doc = nil) ⇒ Object
- #toXml(doc = nil) ⇒ Object
Constructor Details
#initialize(fs = nil) ⇒ Packages
Returns a new instance of Packages.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/metadata/linux/LinuxPackages.rb', line 30 def initialize(fs = nil) @fs = fs @pkg = nil @packages = [] return unless fs if fs.fileExists?(DPKG_FILE) procDpkg(DPKG_FILE) elsif fs.fileExists?(PORTAGE_CMD) && fs.fileDirectory?(PORTAGE_DB) procPortage(PORTAGE_DB) elsif fs.fileDirectory?(RPM_DB) procRPM(RPM_DB) elsif fs.fileExists?(CONARY_FILE) procConary(CONARY_FILE) end end |
Instance Attribute Details
#fs ⇒ Object
Returns the value of attribute fs.
9 10 11 |
# File 'lib/metadata/linux/LinuxPackages.rb', line 9 def fs @fs end |
Instance Method Details
#encodeStrings(data) ⇒ Object
194 195 196 197 198 199 200 |
# File 'lib/metadata/linux/LinuxPackages.rb', line 194 def encodeStrings(data) data.gsub!(/>/, ">") data.gsub!(/</, "<") data.gsub!(/'/, "'") data.gsub!(/"/, """) data end |
#procConary(dbFile) ⇒ Object
Conary DB processing
166 167 168 169 170 171 |
# File 'lib/metadata/linux/LinuxPackages.rb', line 166 def procConary(dbFile) $log.debug "Processing Conary package database" rpmp = MiqConaryPackages.new(@fs, dbFile) rpmp.each { |p| @packages << p } rpmp.close end |
#procDpkg(pf) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/metadata/linux/LinuxPackages.rb', line 48 def procDpkg(pf) $log.debug "Processing Dpkg package database" pfls = "" @fs.fileOpen(pf) { |fo| pfls = fo.read } desc = false pfls.each_line do |pfl| pfl.chop! case pfl when /^Package:\s/ then @pkg = MiqHashStruct.new @pkg.name = pfl.gsub(/^Package:\s/, '') @packages << @pkg desc = false when /^Status:\s/ then @pkg.status = pfl.gsub(/^Status:\s/, '') @pkg.installed = false @pkg.installed = true if @pkg.status =~ /\sinstalled$/ desc = false when /^Version:\s/ then @pkg.version = pfl.gsub(/^Version:\s/, '') desc = false when /^Depends:\s/ then @pkg.depends = pfl.gsub(/^Depends:\s/, '') desc = true when /^Section:\s/ then @pkg.category = pfl.gsub(/^Section:\s/, '') desc = false when /^Description:\s/ then @pkg.description = pfl.gsub(/^Description:\s/, '') desc = true when /^Priority:\s/ then desc = false when /^Conflicts:\s/ then desc = false when /^Provides:\s/ then desc = false when /^Pre-Depends:\s/ then desc = false when /^Recommends:\s/ then desc = false when /^Suggests:\s/ then desc = false when /^Conffiles:/ then desc = false when /^Architecture:\s/ then desc = false when /^Installed-Size:\s/ then desc = false when /^Enhances:\s/ then desc = false when /^Original-Maintainer:\s/ then desc = false when /^$/ then desc = false else @pkg.description ||= "" @pkg.description += "\n" + pfl if desc end end end |
#procPortage(pd) ⇒ Object
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
# File 'lib/metadata/linux/LinuxPackages.rb', line 118 def procPortage(pd) $log.debug "Processing Portage package database" @fs.chdir(pd) @fs.dirForeach do |cat| next if cat == '.' || cat == '..' @fs.chdir(cat) @fs.dirForeach do |pkg| next if pkg == '.' || pkg == '..' @fs.chdir(pkg) p = pkg v = '???' if pkg =~ /-\d+.*$/ p = $` v = $&[1, $&.length] end @pkg = MiqHashStruct.new @pkg.name = p @pkg.version = v @pkg.category = cat @pkg.status = "installed" @pkg.installed = true @fs.fileOpen('DEPEND') { |fo| @pkg.depends = fo.read.chomp } if @fs.fileFile?('DEPEND') @fs.fileOpen('DESCRIPTION') { |fo| @pkg.description = fo.read.chomp } if @fs.fileFile?('DESCRIPTION') @packages << @pkg @fs.chdir('..') end @fs.chdir('..') end end |
#procRPM(dbDir) ⇒ Object
Client-side RPM DB processing.
156 157 158 159 160 161 |
# File 'lib/metadata/linux/LinuxPackages.rb', line 156 def procRPM(dbDir) $log.debug "Processing RPM package database" rpmp = MiqRpmPackages.new(@fs, File.join(dbDir, "Packages")) rpmp.each { |p| @packages << p } rpmp.close end |
#toString(_doc = nil) ⇒ Object
185 186 187 188 189 190 191 192 |
# File 'lib/metadata/linux/LinuxPackages.rb', line 185 def toString(_doc = nil) pkgs = "<applications>\n" @packages.each do |p| next unless p.installed pkgs += " <application name='#{encodeStrings(p.name)}' version='#{p.version}' description='#{p.description}' typename='#{p.category}' />\n" end pkgs += "</applications>" end |
#toXml(doc = nil) ⇒ Object
173 174 175 176 177 178 179 180 181 182 183 |
# File 'lib/metadata/linux/LinuxPackages.rb', line 173 def toXml(doc = nil) doc = MiqXml.createDoc(nil) unless doc pkgs = doc.add_element 'applications' @packages.each do |p| next unless p.installed pkgs.add_element('application', {"name" => p.name, "version" => p.version, "description" => p.description, "typename" => p.category, "arch" => p.arch, "release" => p.release, "install_time" => p.installtime, "build_time" => p.buildtime, "url" => p.url}) # "status" => p.status, "depends" => p.depends end doc end |