Dotfiles, utilities, and other apparatus.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

46 lines
1.3 KiB

#!/usr/bin/env perl
use strict;
use warnings;
use 5.10.0;
use POSIX qw(strftime);
use File::Basename;
my $root;
if (defined $ENV{P1K3_ROOT}) {
$root = $ENV{P1K3_ROOT} . '/archives';
} else {
# Fall back to a default:
$root = $ENV{HOME} . '/workspace/p1k3/archives';
}
# I used to think strftime didn't have a non-zero-padded month/day;
# it turns out you can do this with a - after the % (this may not
# work everywhere, so my original workaround is commented below):
my $dayfile = strftime("%Y/%-m/%-e", localtime());
# $dayfile =~ s{/[0 ]}{/}gx;
#
# (Or: Use it anyway and apply an ad-hoc regex fix, because though we often
# feel we know better in this day and age, we are not ashamed of text
# transformation. not when the chips are down. text is the most powerful
# computational abstraction i've ever come close to understanding, if i'm
# honest, and past a certain point life is too short and too precious a span to
# abandon the only tools you have ready to hand.)
my $today = "$root/$dayfile";
if (-d $today) {
print $today;
} else {
my $dirname = $today;
until (-d ($dirname)) {
# If a dir for the month or year doesn't exist, this moves one step up.
# Should land in archives/ if no year.
$dirname = dirname($dirname);
}
print $dirname;
}