#!/usr/bin/perl

use strict;
use warnings;
use Cwd;

my $updatedb_program = '/usr/local/bin/updatedb';
my $sary_updatedb_program = 'sary-updatedb';
my $db_name = 'PATH';
my $config_name = '.updatedbrc';

my $db;
my $global = 0;

my @args = ();
for (@ARGV) {
    if ($_ eq '-g') {
        $global = 1;
    } else {
        push @args, $_;
    }
}

if (!$global) {
    my $localpath = getcwd;
    my $config = "$ENV{HOME}/$config_name";
    my $db = "$localpath/$db_name";

    if (-f $config) {
        open my $fh, '<', $config or die "Cannot open $config: $!";
        while (<$fh>) {
            chomp;
            push @args, $_ if /\Q$db\E/ .. /^\s*$/ and /^-/;
        }
        close $fh;
    }

    push @args, "--localpaths=$localpath", "--output=$db";

    for (my $i = 0; $i < @args;) {
        if ($args[$i] eq '--dbformat=sary') {
            # delegate
            $updatedb_program = $sary_updatedb_program;
            splice @args, $i, 1;
        } else {
            $i++;
        }
    }
}

exec $updatedb_program, @args;
