class PackageReport::Reporter
Public Instance Methods
build_website!()
click to toggle source
# File lib/package_report/reporter.rb, line 40 def build_website! # connect to s3 # each json file # render template or something #connection = Fog::Storage.new({ #provider: "Local", #local_root: "/vagrant/fog", #endpoint: "http://example.com" #}) connection = Fog::Storage.new({ :provider => "AWS", :aws_access_key_id => ENV["AWS_ACCESS_KEY_ID"], :aws_secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"], :path_style => true }) #p connection.directories dir = connection.directories.get(ENV["AWS_S3_BUCKET"]) #/#{Time.now.strftime("%Y-%m-%d")}") #pp bucket #p dir.files #exit instances = {} dir.files.each do |file| next unless file.key =~ /package-report\/#{Time.now.strftime("%Y-%m-%d")}/ next unless file.key =~ /json$/ instances[file.key] = JSON.parse file.body end template_path = File.expand_path("../../templates/report.html.erb", __FILE__) template_string = File.read(template_path) html = ERB.new(template_string).result(binding) dir.files.create( key: "package-report/#{Time.now.strftime("%Y-%m-%d")}/index.html", body: html, public: true ) end
package_upgrades_available()
click to toggle source
# File lib/package_report/reporter.rb, line 81 def package_upgrades_available packages = [] raw_apt_upgrade_text.split("\n").each do |line| # skip lines that don't contain a package name if line =~ /^Inst/ packages << Package.from_apt_line(line) end end packages end
raw_apt_upgrade_text()
click to toggle source
# File lib/package_report/reporter.rb, line 94 def raw_apt_upgrade_text `apt-get --just-print upgrade` end
run!()
click to toggle source
# File lib/package_report/reporter.rb, line 6 def run! packages_info = {} package_upgrades_available.sort_by { |pkg| pkg.name }.each do |pkg| packages_info[pkg.name] = { current_version: pkg.current_version, latest_version: pkg.latest_version, changelog: pkg.newer_changes } end json = packages_info.to_json connection = Fog::Storage.new({ :provider => "AWS", :aws_access_key_id => ENV["AWS_ACCESS_KEY_ID"], :aws_secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"], :path_style => true }) #connection = Fog::Storage.new({ #provider: "Local", #local_root: "/vagrant/fog", #endpoint: "http://example.com" #}) dir = connection.directories.create({ key: ENV["AWS_S3_BUCKET"] }) dir.files.create( key: "package-report/" + Time.now.strftime("%Y-%m-%d") + "/" + `hostname`.strip + ".json", body: json ) end