Stats counter added. Limiting to wanted archs.

This commit is contained in:
Christoph Haas 2015-04-22 23:03:49 +02:00
parent 4c43e10ab3
commit beeb4cd37a

View file

@ -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)