From da6309400c0ad0a8cc2bde19ca25f25f55c94128 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Fri, 24 Apr 2015 17:00:15 +0200 Subject: [PATCH] Refactored check if a package name or section is blacklisted --- lib/tasks/import_debian.rake | 70 ++++++++++++++++-------------------- 1 file changed, 31 insertions(+), 39 deletions(-) diff --git a/lib/tasks/import_debian.rake b/lib/tasks/import_debian.rake index f79f580..761f591 100644 --- a/lib/tasks/import_debian.rake +++ b/lib/tasks/import_debian.rake @@ -88,7 +88,7 @@ namespace :debshots do Rails.logger.info "> Package: #{package[:Package]}" #Rails.logger.debug "Fetching package informaton from the database" - if package_blacklisted? package + if package_name_blacklisted? package[:Package] or package_section_blacklisted? package[:Section] # Should the package get removed from the database? if REMOVE_BLACKLISTED_PACKAGE db_package = Package.find_by name: package[:Package] @@ -133,19 +133,10 @@ namespace :debshots do repositories = Rails.configuration.package_sources Rails.logger = Logger.new(STDOUT) Rails.logger.level = Logger::INFO - Rails.logger.level = Logger::DEBUG + # Rails.logger.level = Logger::DEBUG Rails.logger.info "Importing long descriptoin from Debian repository (i18n)" -# BUG -# Description-en: autoconf like tool -# ACR is an autoconf like tool that allows you to create configure scripts for -# your programs. The main aim of this tool is to teach developers how to create -# portable builds of their tools, just using generic functions wrapped by acr to -# generate portable shellscript. - -# Parses as "your programs. The ..." - repositories.each do |repository| Rails.logger.info "Fetching Release file for repository: #{repository[:url]} with components: #{repository[:components]}" release = DebImporter::Release.new(repository[:url]) @@ -155,7 +146,13 @@ namespace :debshots do Rails.logger.info "> Component: #{component}" release.i18n(component, 'en').each do |pkg| Rails.logger.debug "i18n information: #{pkg}" - next unless pkg[:'Description-en'] + unless pkg[:'Description-en'] + Rails.logger.debug "No Description-en found in section." + next + end + if package_name_blacklisted? pkg[:Package] + next + end # See if we have that package in the database if db_pkg = Package.find_by(name: pkg[:Package]) Rails.logger.info "Updating long description for package #{db_pkg.name}" @@ -163,6 +160,8 @@ namespace :debshots do short_description, long_description = text.split("\n", 2) db_pkg.long_description = long_description db_pkg.save + else + Rails.logger.debug "Package not in database. Nothing to update." end end # pkg.each end # components.each @@ -180,8 +179,8 @@ namespace :debshots do task :list_deb_repos => :environment do repositories = Rails.configuration.package_sources Rails.logger = Logger.new(STDOUT) - # Rails.logger.level = Logger::INFO - Rails.logger.level = Logger::DEBUG + Rails.logger.level = Logger::INFO + # Rails.logger.level = Logger::DEBUG Rails.logger.info "Listing configured DEB repositories" @@ -240,33 +239,26 @@ def update_data(package, db_package) end db_package.save - - # TODO: get the long description from http://de.archive.ubuntu.com/ubuntu/dists/precise/main/i18n/Translation-en end -# Check if a package is blacklisted and should not be imported. +# Check if a package name is blacklisted and should not be imported. # This prevents importing boring software that likely does not get a useful screenshot. -# Argument: Hash containing package information from a Packages file -def package_blacklisted?(package) - Rails.logger.debug "Blacklist check of package #{package[:Package]}" - - # TODO: add a flag that allows to manually blacklist a package - - BLACKLIST_SECTION_PATTERN.each do |pattern| - Rails.logger.debug "Checking package section #{package[:Package]} against pattern #{pattern.inspect}" - if package[:Section] =~ pattern - Rails.logger.info " > Blacklisted by section (matched pattern '#{pattern.inspect}')" - return true - end +def package_name_blacklisted?(name) + if match=BLACKLIST_NAME_PATTERN.find { |pattern| name=~pattern} + Rails.logger.debug " > Blacklisted by name ('#{name}')" + return true + else + return false + end +end + +# Check if a package's section is blacklisted and should not be imported. +# This prevents importing boring software that likely does not get a useful screenshot. +def package_section_blacklisted?(section) + if match=BLACKLIST_SECTION_PATTERN.find { |pattern| section=~pattern} + Rails.logger.debug " > Blacklisted by section ('#{section}')" + return true + else + return false end - - BLACKLIST_NAME_PATTERN.each do |pattern| - Rails.logger.debug "Checking package name #{package[:Package]} against pattern #{pattern.inspect}" - if package[:Package] =~ pattern - Rails.logger.info " > Blacklisted by name (matched pattern '#{pattern.inspect}')" - return true - end - end - - false end