flail
view release on metacpan or search on metacpan
dot.flailrc view on Meta::CPAN
return;
}
my($fbase,$chunk) = @_;
if (!$fbase) {
print "Need at least one arg: base-name\n";
return;
}
$chunk ||= 200;
my @match = (
sort { number_of($b,$fbase) <=> number_of($a,$fbase) } <${fbase}[0-9]*>
);
my $n = @match? 1+number_of($match[0]): 0;
my $nf = $FOLDER->qty;
my $nchunks = POSIX::ceil($nf / $chunk);
my $c = 0;
my $i = 1;
while ($c < $nchunks) {
last if ($i >= $nf);
my $f = "${fbase}${n}";
my $j = $i+$chunk;
$j = $nf if ($j > $nf);
print "[mv $i:$j $f]\n" unless $Quiet;
flail_move("$i:$j",$f);
++$n;
$i = 1+$j;
++$c;
}
return undef;
}
sub cmd_invert_label {
if (!defined($FOLDER)) {
print "No current folder.\n";
return;
}
my($label) = @_;
$label ||= 'marked';
my @labeled = $FOLDER->select_label($label);
if (!@labeled) {
print "No messages marked \"$label\"\n";
return;
}
my %hash = map { $_ => 1 } (1 .. $FOLDER->qty);
delete $hash{$_} foreach @labeled;
$FOLDER->clear_label($label);
$FOLDER->add_label($_,$label) foreach sort { $a <=> $b } keys %hash;
my @new = $FOLDER->select_label($label);
print "Inverted \"$label\" ".scalar(@labeled)." => ".scalar(@new)." msgs\n";
return undef;
}
flail_defcmd1("be",\&cmd_be,"switch identities, or list available");
{ local($Quiet) = (1); cmd_be("MyDefaultID"); }
flail_defcmd1("reconf",\&cmd_reconf,"reload configuration file(s)");
flail_defcmd1("ssz",\&cmd_ssz,"total up spam folders' sizes");
flail_defcmd1("split",\&cmd_split_folder,"base chunk: split up a folder");
flail_defcmd1("invert",\&cmd_invert_label,"label: invert label selection");
## aliases
flail_alias("verify","|gpg --verify");
flail_alias("mm","|metamail -p"); # subtly wrong... also: metamail SUCKS
flail_alias("mark_before","mark ,is_before(%m,\"%*\")");
flail_alias("mark_after","mark ,is_after(%m,\"%*\")");
flail_alias("mark_about","mark ,is_about(%m,\"%*\")");
flail_alias("mark_from","mark ,is_from(%m,\"%*\")");
flail_alias("mark_to","mark ,is_to(%m,\"%*\")");
flail_alias("mark_spam", "mark ,is_spam(%m)");
#flail_alias("toss_spam", "map all { toss_spam(); }");
flail_alias("incoming","cd INCOMING");
#flail_alias("spam", "map cur mv %m spam");
flail_alias("slurp","map all { slurp1(%*); }");
flail_alias("mgrep","map cur { grep_msg(%*); }");
flail_alias("agrep","map all { grep_msg(%*); }");
flail_alias("hgrep","map cur { grep_headers('_',%*); }");
flail_alias("fgrep","map all { grep_headers('_',%*); }");
flail_alias("mls","ls -marked");
flail_alias("gls","ls -matched");
flail_alias("mmv","mv -marked %*");
flail_alias("mcp","cp -marked %*");
flail_alias("autofile","map all { autofile(); }");
flail_alias("automark","map all { automark(); }");
flail_alias("load",",print do \"%*\""); # so you can say: load autofile.pl
flail_alias("sls",'!ls -l spam*');
flail_alias("ils",'!ls -l INCOMING');
flail_alias("allspam",',flail_move(q|1:$|,latest_spam_folder)');
flail_alias("mspam",',flail_move(q|-marked|,latest_spam_folder)');
print " done]\n" unless $SingleCommand;
42;
# Local variables:
# mode: perl
# indent-tabs-mode: nil
# tab-width: 4
# perl-indent-level: 4
# End:
( run in 0.902 second using v1.01-cache-2.11-cpan-df04353d9ac )