namespace :apt do

desc 'Clears out the local repository of retrieved package files only removing package files '\
     'that can no longer be downloaded'
task :autoclean do
  on release_roles :app do |role|
    execute :sudo, 'apt-get', 'autoclean'
  end
end

desc 'Check if a reboot is required'
task :check_reboot do
  on release_roles :app do |role|
    if test('ls /var/run/ | grep reboot-required')
      pkgs = capture(:cat, '/var/run/reboot-required.pkgs').split(/\s/)
      warn "Reboot is required for #{role} to update #{pkgs.join(' ')}"
    end
  end
end

desc 'Check for upgradable packages'
task :check_upgradable do
  on release_roles :app do |role|
    info 'Upgradable packages:'
    execute :apt, 'list', '-qq', '--upgradable'
  end
end

desc 'In addition to performing the function of upgrade, also intelligently handles changing '\
     'dependencies with new versions of packages'
task :distupgrade do
  on release_roles :app do |role|
    execute :sudo, 'apt-get', 'dist-upgrade'
  end
end

desc 'Install the newest versions of all packages currently installed on the system'
task :upgrade do
  on release_roles :app do |role|
    execute :sudo, 'apt-get', 'upgrade'
  end
end

desc 'Download package information from all configured sources'
task :update do
  on release_roles :app do |role|
    execute :sudo, 'apt-get', 'update'
  end
end

end