From beeb4cd37a813c3445bfe05f4687f229e7382395 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Wed, 22 Apr 2015 23:03:49 +0200 Subject: [PATCH] Stats counter added. Limiting to wanted archs. --- lib/tasks/import_debian.rake | 41 ++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/lib/tasks/import_debian.rake b/lib/tasks/import_debian.rake index 9b2b9c1..ab86a42 100644 --- a/lib/tasks/import_debian.rake +++ b/lib/tasks/import_debian.rake @@ -36,13 +36,18 @@ BLACKLIST_SECTION_PATTERN = [ /\/?cli-mono$/, ] -# Whether to delete a packag +# Whether to delete a blacklisted package from the database REMOVE_BLACKLISTED_PACKAGE = true namespace :debshots do desc "Import/update package database from configured DEB repositories" task :update_from_deb_repos => :environment do + # Counters for added, updated or removed packages from the database + stats_added = 0 + stats_updated = 0 + stats_removed = 0 + repositories = Rails.configuration.package_sources Rails.logger = Logger.new(STDOUT) Rails.logger.level = Logger::INFO @@ -51,9 +56,13 @@ namespace :debshots do Rails.logger.info "Importing Debian package information" repositories.each do |repository| + wanted_architectures = repository[:architectures] Rails.logger.info "Fetching Release file for repository: #{repository[:url]} with components: #{repository[:components]}" release = DebImporter::Release.new(repository[:url], repository[:components]) Rails.logger.info "> Supported architectures are: #{release.architectures}" + if wanted_architectures + Rails.logger.info "> We only want architectures: #{wanted_architectures}" + end Rails.logger.info "> Supported components are: #{release.components}" # TODO: Remember what we imported to show it on the /about page @@ -61,6 +70,10 @@ namespace :debshots do release.components.split.each do |component| Rails.logger.info "> Component: #{component}" release.architectures.split.each do |architecture| + if wanted_architectures and not wanted_architectures.include?(architecture) + Rails.logger.debug "Architecture #{architecture} not wanted. Skipping." + next + end Rails.logger.info ">> Architecture: #{architecture}" # Check if this component and architecture is available on this mirror packages = release.packages(component, architecture) @@ -82,6 +95,7 @@ namespace :debshots do if db_package Rails.logger.info "Removing blacklisted package '#{package[:Package]}' from database" db_package.destroy + stats_removed +=1 end end @@ -90,42 +104,57 @@ namespace :debshots do db_package = Package.find_by name: package[:Package] unless db_package - Rails.logger.debug "No such package in our database." - next + Rails.logger.debug "No such package in our database. Creating one." + db_package = Package.create + stats_added += 1 end - Rails.logger.debug "Found in database: #{db_package.id}" + # Rails.logger.debug "Found in database: #{db_package}" update_data(package, db_package) + stats_updated += 1 end # package.each end # architectures.each end # components.each Rails.logger.info "Done parsing #{repository[:url]} repository." + Rails.logger.info "#{stats_added} packages added" + Rails.logger.info "#{stats_updated} packages updated" + Rails.logger.info "#{stats_removed} packages removed" Rails.logger.info "--------------------------------------------" end # repositories.each end # task - + # TODO: Some code duplication. Should be refactord. desc "List configured DEB repositories" 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::INFO + Rails.logger.level = Logger::DEBUG Rails.logger.info "Listing configured DEB repositories" repositories.each do |repository| + wanted_architectures = repository[:architectures] Rails.logger.info "Fetching Release file for repository: #{repository[:url]} with components: #{repository[:components]}" release = DebImporter::Release.new(repository[:url], repository[:components]) Rails.logger.info "> Supported architectures are: #{release.architectures}" + if wanted_architectures + Rails.logger.info "> We only want architectures: #{wanted_architectures}" + end Rails.logger.info "> Supported components are: #{release.components}" release.components.split.each do |component| Rails.logger.info "> Component: #{component}" release.architectures.split.each do |architecture| + if wanted_architectures and not wanted_architectures.include?(architecture) + Rails.logger.debug "Architecture #{architecture} not wanted. Skipping." + next + end + Rails.logger.info ">> Architecture: #{architecture}" # Check if this component and architecture is available on this mirror packages = release.packages(component, architecture)