class Anamo::Pkgver::Thor
Public Instance Methods
exec()
click to toggle source
# File lib/anamo/pkgver/thor.rb, line 17 def exec data = inspect false ::Anamo::Api.new.post_pkgver MultiJson.dump data end
inspect(output = true)
click to toggle source
# File lib/anamo/pkgver/thor.rb, line 28 def inspect output = true ############################## ### RPM ############################## rpm_packages = [] status, stdout, stderr = systemu "rpm -qa --qf '%{NAME}abyz3_%{VERSION}abyz3_%{RELEASE}abyz3_%{ARCH}abyz3_%{VENDOR}abyz3_%{RPMTAG_INSTALLTIME}abyz3_%{SIZE}\n'" # See: http://ftp.rpm.org/max-rpm/ch-rpm-query.html if status.success? stdout.split("\n").each do |package| package = package.split('abyz3_') # because vendor can have spaces, make the delimiter something unique abyz3_ rpm_packages << { 'n' => package[0], #name 'v' => package[1], #version 'r' => package[2], #release 'a' => package[3], #architecture 'v2' => package[4], #vendor, 'it' => package[5], #install time, or ${RPMTAG_INSTALLTIME} 's' => package[6], #size, or ${SIZE} } end else rpm_packages = nil end ############################## ### Debian ############################## deb_packages = [] status, stdout, strerr = systemu "dpkg-query -W -f='${Package}abyz3_${Version}abyz3_${Architecture}abyz3_${Installed-Size}abyz3_${Homepage}\n'" #$options here under: http://manpages.ubuntu.com/manpages/trusty/man1/dpkg-query.1.html if status.success? stdout.split("\n").each do |package| package = package.split('abyz3_') deb_packages << { 'n' => package[0], #package name, or ${Package} 'v' => package[1], #package version 'a' => package[2], #package architecture 's' => package[3], #size, or ${Installed-Size} 'hp' => package[4], #homepage, or ${Homepage} } end else deb_packages = nil end ############################## ### Gem ############################## gem_packages = [] status, stdout, stderr = systemu "gem list -l" if status.success? stdout.split("\n").each do |package| if package.strip.length > 0 and package[0,1] != '*' if match = /(.*) \((?:default\: )?(.*)\)/.match(package) gem_packages << { 'n' => match[1], 'v' => match[2] } end end end else gem_packages = nil end npm_packages = nil status, stdout, strerr = systemu "npm list --global --json" if status.success? npm_packages = MultiJson.load(stdout) end pip_packages = [] status, stdout, strerr = systemu "pip list" if status.success? stdout.split("\n").each do |l| match_data = /(.*) \((.*)\)/.match(l) pip_packages << { 'n' => match_data[1], 'v' => match_data[2] } if match_data end else pip_packages = nil end data = { 'gem_packages' => gem_packages } data['rpm_packages'] = rpm_packages if rpm_packages data['deb_packages'] = deb_packages if deb_packages data['npm_packages'] = npm_packages if npm_packages data['pip_packages'] = pip_packages if pip_packages puts data if output data end