All pastes #367584 Raw Edit

Someone

public ruby v1 · immutable
#367584 ·published 2007-02-22 13:22 UTC
rendered paste body
#!/usr/bin/env ruby# vim: set sw=4 sts=4 et tw=80 :#['Paludis','find','getoptlong'].each {|x| require x}include PaludisLog.instance.log_level = LogLevel::WarningLog.instance.program_name = $0unsafe = falsedef get_contents(repo)  in_contents = { }  repo.category_names do |cat|    repo.package_names(cat) do |pkg|      versions = repo.version_specs(pkg)      if versions.length > 1        in_contents[pkg.to_s()] = versions.reverse      end    end  end  return in_contentsenddef each_atom(atom)  yield atom if atom.kind_of? PackageDepAtom  atom.each { |sub| each_atom(sub) { |sub2| yield sub2 } } if atom.kind_of? CompositeDepAtomenddef format_versions(key, value)  return key + " (" + value.join(", ") + ")"enddef check_deps(repo, versions)  needed = []    repo.category_names do |cat|    repo.package_names(cat) do |pkg|      repo.version_specs(pkg) do |ver|        meta = repo.version_metadata(pkg, ver)        meta.run_depend().each do |dep|          each_atom(dep) { |atom|             if versions.has_key? atom.package.to_s              print "not removing ", format_versions(atom.package.to_s, versions[atom.package.to_s]), " (dep: ", pkg, "-", ver, ")\n"              versions.delete atom.package.to_s            end          }        end      end    end  end    return neededendopts = GetoptLong.new(  [ '--help',          '-h',  GetoptLong::NO_ARGUMENT ],  [ '--version',       '-V',  GetoptLong::NO_ARGUMENT ],  [ '--log-level',            GetoptLong::REQUIRED_ARGUMENT ],  [ '--config-suffix', '-c',  GetoptLong::REQUIRED_ARGUMENT ],  [ '--unsafe', '-u', GetoptLong::NO_ARGUMENT ])config_suffix = ""opts.each do | opt, arg |  case opt  when '--help'    puts "Usage: " + $0 + " [options]"    puts    puts "Options:"    puts "  --help                  Display a help message"    puts "  --version               Display program version"    puts    puts "  --log-level level       Set log level (debug, qa, warning, silent)"    puts "  --config-suffix suffix  Set configuration suffix)"    puts "  --unsafe                Do nasty stuff"    exit 0      when '--version'    puts $0.to_s.split(/\//).last + " " + Paludis::Version    exit 0      when '--log-level'    case arg    when 'debug'      Paludis::Log.instance.log_level = Paludis::LogLevel::Debug    when 'qa'      Paludis::Log.instance.log_level = Paludis::LogLevel::Qa    when 'warning'      Paludis::Log.instance.log_level = Paludis::LogLevel::Warning    when 'silent'      Paludis::Log.instance.log_level = Paludis::LogLevel::Silent    else      puts "Bad --log-level value " + arg      exit 1    end      when '--config-suffix'    config_suffix = arg      endendPaludis::DefaultConfig::config_suffix = config_suffixdb = DefaultEnvironment.instance.package_databasemulti_versions = {}db.repositories do |repo|  next unless repo.format == 'vdb'  multi_versions.update get_contents(repo)endnecessary = []db.repositories do |repo|  next unless repo.format == 'vdb'  necessary += check_deps(repo, multi_versions)endprint "Keep:\n"multi_versions.each { |key, val| print format_versions(key.to_s, val[0,1]), "\n" }print "Could remove:\n"multi_versions.each { |key, val| print format_versions(key.to_s, val[1..-1]), "\n" }print "Command:\n"print "paludis -u "multi_versions.each { |key, val| val[1..-1].each { |ver| print "=" + key + "-" + ver.to_s + " " };  }print "\n"