Advertisement
Guest User

Untitled

a guest
Mar 21st, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.91 KB | None | 0 0
  1. require 'sinatra'
  2. set :port, 8080
  3.  
  4. get '/packages' do
  5.     packages = parse_packages
  6.     @package_list = packages.keys
  7.     @package_list.sort!
  8.     erb(:packages)
  9. end
  10.  
  11. get '/packages/:name' do |n|
  12.   "a specific package with name #{n}"
  13. end
  14.  
  15. def parse_packages
  16.     package_collection = {}
  17.     current_package = {}
  18.     current_key = nil
  19.     current_value = nil
  20.  
  21.     File.open('/var/lib/dpkg/status', "r").each do |line|
  22.         line.match(/^(?<key>[A-Za-z-]+): (?<value>.+)/) do |m|
  23.             current_package[current_key] = current_value
  24.             current_key = m[:key]
  25.             current_value = m[:value]
  26.         end
  27.  
  28.         line.match(/^(?<value> .+)/) do |m|
  29.             current_value += m[:value]
  30.         end
  31.  
  32.         line.match(/^\n/) do |m|
  33.             package_collection[current_package['Package']] = current_package
  34.         end
  35.     end
  36.  
  37.  
  38.  data = package_collection
  39.  return data
  40. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement