#!/usr/bin/perl
#
# Record packages from --depclean to world, asking user about every ebuild
# (C) 2007 Michal Gorny <peres@peres.int.pl>
# Covered by GPL2 terms
#
# At first, I thought about writing this in bash, but it was easier for me
# to use Perl. So, as tribute to shell scripts, I tried to use as few
# parentheses as possible. I apologize to all, who can't read this ( ;.
#
use Term::ReadKey;
print "Please wait, running depclean-pretend...\n";
`emerge --pretend --depclean &> /tmp/depclean`;
print "Done.\n";
my $f, $d, $e, @l, @m;
open $f, '</tmp/depclean';
ReadMode 3;
while (<$f>) {
next if !/^ (.*?)\/(.*?)$/;
push @m, "$1/$2";
}
@m = sort @m;
foreach $e (@m) {
print "\n$e ? ";
print $d = ReadKey 0;
last if $d eq 'q';
push @l, $e if $d eq 'y';
}
unlink '/tmp/depclean';
$e = join ' ', @l;
if ($e) {
print "\nemerge --verbose --noreplace $e\n\nrecord/merge? ";
`emerge --verbose --noreplace $e` if ReadKey 0 eq 'y';
}
if ($m) {
print "\ndepclean? ";
`emerge --verbose --depclean` if ReadKey 0 eq 'y';
} else {
print "\nNothing to depclean.";
}
print "\n";
ReadMode 0;