diff options
Diffstat (limited to 'vagrant/lib/Respin.pm')
-rw-r--r-- | vagrant/lib/Respin.pm | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/vagrant/lib/Respin.pm b/vagrant/lib/Respin.pm new file mode 100644 index 000000000..e72c601a1 --- /dev/null +++ b/vagrant/lib/Respin.pm @@ -0,0 +1,30 @@ +package Respin; + +use strict; +use warnings; +use DateTime; +use DateTime::Format::Duration; +use DateTime::Duration; +use JSON::XS; + +my $iso8601_rx = qr{^(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})(\d{2})$}; + +my $json = JSON::XS->new->utf8; + +my $dur_fmt = DateTime::Format::Duration->new( + normalize => 1, + pattern => + q{{"week":"%V","day":"%u","hour":"%k","minute":"%M","second":"%S"}} +); + +sub latest_src_age { + my ( $now, $src ) = @_; + + my ( %now, %src ); + @now{qw(year month day hour minute second)} = ( $now =~ $iso8601_rx ); + @src{qw(year month day hour minute second)} = ( $src =~ $iso8601_rx ); + + print $dur_fmt->format_duration_from_deltas( + DateTime->new(%now)->subtract_datetime_absolute( DateTime->new(%src) ) + ->deltas ); +} |