All pastes #457872 Raw Edit

Untitled

public text v1 · immutable
#457872 ·published 2007-04-25 16:46 UTC
rendered paste body
#!/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;