require 'json'

task :default do
  system('rake', '-T')
end

desc 'prints failing packages (default)'
task :failing => 'failing.json' do
  failing = JSON.load(File.read('failing.json'))
  failing.sort_by { |entry| -Integer(entry['duration_seconds']) }.each do |entry|
    puts "%-50s %10ds" % [entry['package'], entry['duration_seconds']]
  end
end

file 'failing.json' => ['packages.json'] do |task|
  packages = JSON.load(File.read('packages.json'))
  data = packages.select { |p| p['status'] == 'fail' }
  File.open(task.name, 'w') { |f| f.write(JSON.pretty_generate(data)) }
end

file 'packages.json' do
  sh 'wget', 'http://ci.debian.net/data/status/unstable/amd64/packages.json'
end

desc 'clean'
task :clean do
  rm_f 'failing.json'
end

desc 'clean everything including downloads'
task 'fullclean' => :clean do
  rm_f 'packages.json'
end
