#!/usr/bin/perl -w

my $cache = shift;
$cache or die "usage: create_cache cache_root [ 1|2 [ 1|2 [ 1|2 ] ] ]\n";
my @dir = $ARGV[0] ? @ARGV[0 .. 2] : (1, 2);

print "cache levels: @dir\n";
print "creating cache ...\n";

makedir($cache, 0);

print "cache created\n";

sub makedir {
    my($cache, $level) = @_;

    return unless $dir[$level];

    my $pattern = sprintf "$cache/%%0%dx", $dir[$level];
    for (my $i = 0; $i < 16 ** $dir[$level]; $i++) {
        my $dir = sprintf $pattern, $i;
        next if -d "$dir";
        print "$dir\n";
        mkdir $dir, 0700 or die "error creating $dir\n" ;
        makedir("$dir", $level + 1);
    }
}
