exigrey.pl
changeset 53 86d6f7fdeb7e
parent 50 79b972eb8990
child 54 cd04db2a79cc
equal deleted inserted replaced
52:23160db926d4 53:86d6f7fdeb7e
     5 # $URL$
     5 # $URL$
     6 
     6 
     7 use constant USAGE => <<'#';
     7 use constant USAGE => <<'#';
     8 
     8 
     9 Usage: !ME! --insert item [delay [db]]	# insert an item
     9 Usage: !ME! --insert item [delay [db]]	# insert an item
       
    10        !ME! --remove item               # remove an item
    10        !ME! --list [db]			# list all items
    11        !ME! --list [db]			# list all items
    11        !ME! --stat [db* ...]		# print short statistic
    12        !ME! --stat [db* ...]		# print short statistic
    12        !ME! --clean [days [db* ...]]	# remove items not used since <days> days
    13        !ME! --clean [days [db* ...]]	# remove items not used since <days> days
    13        !ME! --purge [days [db* ...]]	# remove items older than <days> days
    14        !ME! --purge [days [db* ...]]	# remove items older than <days> days
    14        !ME! --dbs [db* ...]		# list data base(s)
    15        !ME! --dbs [db* ...]		# list data base(s)
    41 my $opt_insert;
    42 my $opt_insert;
    42 my $opt_help;
    43 my $opt_help;
    43 my $opt_clean;
    44 my $opt_clean;
    44 my $opt_purge;
    45 my $opt_purge;
    45 my $opt_dbs;
    46 my $opt_dbs;
       
    47 my $opt_remove;
    46 
    48 
    47 sub getDBs(@);
    49 sub getDBs(@);
    48 sub iterate(\%$);
    50 sub iterate(\%$);
    49 
    51 
    50 MAIN: {
    52 MAIN: {
    51 
    53 
    52     GetOptions(
    54     GetOptions(
    53         "list!"   => \$opt_list,
    55         "list!"   => \$opt_list,
    54         "insert!" => \$opt_insert,
    56         "insert!" => \$opt_insert,
       
    57 	"remove!" => \$opt_remove,
    55         "stats!"  => \$opt_stats,
    58         "stats!"  => \$opt_stats,
    56         "clean!"  => \$opt_clean,
    59         "clean!"  => \$opt_clean,
    57         "purge!"  => \$opt_purge,
    60         "purge!"  => \$opt_purge,
    58         "dbs!"    => \$opt_dbs,
    61         "dbs!"    => \$opt_dbs,
    59         "help!"   => \$opt_help,
    62         "help!"   => \$opt_help,
   159 
   162 
   160     if ($opt_insert) {
   163     if ($opt_insert) {
   161         print unseen(@ARGV);
   164         print unseen(@ARGV);
   162         exit 0;
   165         exit 0;
   163     }
   166     }
       
   167 
       
   168     if ($opt_remove) {
       
   169 	my %default = getDefault();
       
   170 	my $item = shift;
       
   171 	my $db = shift // $default{db};
       
   172 
       
   173 	my $key = "$item\0";
       
   174 
       
   175 	connectDB(\my %h, $db);
       
   176 	if (not exists $h{$key}) {
       
   177 	    warn "$0: not found\n";
       
   178 	}
       
   179 	else {
       
   180 	    $_ = delete $h{$key};
       
   181 	    s/\0$/\n/;
       
   182 	    print;
       
   183 	}
       
   184 	exit 0;
       
   185     }
   164 }
   186 }
   165 
   187 
   166 sub getDBs(@) {
   188 sub getDBs(@) {
   167     grep { -f }
   189     grep { !/\.lock$/ } grep { -f -s }
   168       map { m(^\.?/) ? glob($_) : glob(getDBDir() . "/$_") } @_ ? @_ : "*";
   190       map { m(^\.?/) ? glob($_) : glob(getDBDir() . "/$_") } @_ ? @_ : "*";
   169 }
   191 }
   170 
   192 
   171 # Helper to iterate over our hash and call the passed
   193 # Helper to iterate over our hash and call the passed
   172 # "callback" function (item, v0, v1, count)
   194 # "callback" function (item, v0, v1, count)