diff --git a/src/lib/Hydra/View/TT.pm b/src/lib/Hydra/View/TT.pm index edaac447..f8b3fb64 100644 --- a/src/lib/Hydra/View/TT.pm +++ b/src/lib/Hydra/View/TT.pm @@ -3,13 +3,14 @@ package Hydra::View::TT; use strict; use base 'Catalyst::View::TT'; use Hydra::Helper::Nix; +use Time::Seconds; __PACKAGE__->config( TEMPLATE_EXTENSION => '.tt', ENCODING => 'utf-8', PRE_CHOMP => 1, POST_CHOMP => 1, - expose_methods => [qw/buildLogExists buildStepLogExists jobExists stripSSHUser/]); + expose_methods => [qw/buildLogExists buildStepLogExists jobExists relativeDuration stripSSHUser/]); sub buildLogExists { my ($self, $c, $build) = @_; @@ -25,6 +26,27 @@ sub buildStepLogExists { return defined findLog($c, $step->drvpath, @outPaths); } +=head2 relativeDuration + +Given an integer of seconds, return an English representation of the +duration as a string. + +Arguments: + +=over 1 + +=item C<$seconds> + +An integer number of seconds + +=back + +=cut +sub relativeDuration { + my ($self, $c, $seconds) = @_; + return Time::Seconds->new($seconds)->pretty(); +} + sub stripSSHUser { my ($self, $c, $name) = @_; if ($name =~ /^.*@(.*)$/) { diff --git a/src/root/jobset.tt b/src/root/jobset.tt index b775ddbd..b933f34c 100644 --- a/src/root/jobset.tt +++ b/src/root/jobset.tt @@ -91,6 +91,7 @@ [% IF latestEval %] [% INCLUDE renderDateTime timestamp = latestEval.timestamp %] + (took [% relativeDuration (latestEval.checkouttime + latestEval.evaltime) %]) [% ELSE %] never [% END %]