class Purdie::SourceList
Attributes
items[R]
parent_file[RW]
verbose[RW]
Public Class Methods
from_file(source_file, verbose = nil)
click to toggle source
# File lib/purdie/source_list.rb, line 79 def self.from_file source_file, verbose = nil sl = SourceList.new File.readlines(source_file).map { |l| l.strip }.select { |i| i !~ /^#/ } sl.parent_file = source_file sl.verbose = verbose sl end
new(sources)
click to toggle source
# File lib/purdie/source_list.rb, line 8 def initialize sources @sources = Resolver.resolve(sources).map { |item| Item.new item } @items = [] @bad_creds = [] @bad_licenses = {} end
Public Instance Methods
[](key)
click to toggle source
# File lib/purdie/source_list.rb, line 15 def [] key @sources[key] end
bad_credentials?()
click to toggle source
# File lib/purdie/source_list.rb, line 45 def bad_credentials? if @bad_creds.any? raise Purdie::CredentialsException.new self, "Missing or duff credentials for: #{@bad_creds.uniq.join ', '}" end end
bad_licenses?()
click to toggle source
# File lib/purdie/source_list.rb, line 51 def bad_licenses? if @bad_licenses.any? bad = @bad_licenses.map { |k,v| "#{k}: #{v.uniq.join ', '}" }.join '; ' message = "Unknown licenses: #{bad}" message += "\n" message += 'Please consider adding the details for these licenses at https://github.com/rawfunkmaharishi/purdie/blob/master/_config/licenses.yaml' raise Purdie::PurdieException.new message end end
each() { |source| ... }
click to toggle source
# File lib/purdie/source_list.rb, line 19 def each @sources.each do |source| yield source end end
output_file()
click to toggle source
# File lib/purdie/source_list.rb, line 71 def output_file base = File.basename(parent_file).split '.' base.push nil if base.count == 1 base[-1] = 'yaml' File.join ['_data', base.join('.')] end
process()
click to toggle source
# File lib/purdie/source_list.rb, line 25 def process @sources.each do |source| begin print "Processing #{source.url}... " if @verbose source.distill puts 'done' if @verbose rescue Purdie::CredentialsException => ce @bad_creds.push Purdie.basename(ce.service) puts 'fail' if @verbose rescue Purdie::LicenseException => le @bad_licenses[Purdie.basename le.service].push le.name rescue @bad_licenses[Purdie.basename le.service] = [le.name] puts 'fail' if @verbose end @items.push source bad_credentials? bad_licenses? end end
write()
click to toggle source
# File lib/purdie/source_list.rb, line 61 def write process FileUtils.mkdir_p File.dirname output_file File.open output_file, 'w' do |f| dump = @items.map { |item| item.datas } f.write dump.to_yaml end end