aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--web/Rakefile4
-rw-r--r--web/lib/repoman.rb23
2 files changed, 27 insertions, 0 deletions
diff --git a/web/Rakefile b/web/Rakefile
index 7676285..3f3dfab 100644
--- a/web/Rakefile
+++ b/web/Rakefile
@@ -29,6 +29,10 @@ namespace :db do
update_repoman
end
+ task :tidy_repoman do
+ tidy_repoman
+ end
+
task :clear_repoman do
clear_repoman
end
diff --git a/web/lib/repoman.rb b/web/lib/repoman.rb
index e8c6e6a..8287837 100644
--- a/web/lib/repoman.rb
+++ b/web/lib/repoman.rb
@@ -80,6 +80,29 @@ def update_repoman
end
end
+def tidy_repoman
+ Package.order { [category, lower(name), version] }.each do |package|
+ target = ''
+ target = package[:r19_target] unless package[:r19_target] == 'nil'
+ target = package[:r20_target] unless package[:r20_target] == 'nil'
+ target = package[:r21_target] unless package[:r21_target] == 'nil'
+ target = package[:r22_target] unless package[:r22_target] == 'nil'
+ if target.empty?
+ Repoman.where(package_id: package[:identifier]).delete
+ next
+ end
+
+ next_target = ''
+ next_target = 'ruby20' if target == 'ruby19'
+ next_target = 'ruby21' if target == 'ruby20'
+ next_target = 'ruby22' if target == 'ruby21'
+ if next_target.empty?
+ Repoman.where(package_id: package[:identifier]).delete
+ next
+ end
+ end
+end
+
def clear_repoman
Repoman.map(&:delete)
end