tvl-depot/users/sterni/dot-time-man-pages/default.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

71 lines
2.3 KiB
Nix
Raw Permalink Normal View History

{ depot, lib, ... }:
let
# TODO(sterni): find a better place for this: is dot time //fun?
# get the email address of a depot user from //ops/users
findEmail = user:
let
res = builtins.filter ({ username, ... }: username == user) depot.ops.users;
len = builtins.length res;
in
if len == 1
then (builtins.head res).email
else builtins.throw "findEmail: got ${toString len} results instead of 1";
# dot-time(7) man page, ported from dotti.me
dot-time = rec {
name = "dot-time";
section = 7;
content = ''
.Dd $Mdocdate$
.Dt ${lib.toUpper name} ${toString section}
.Os
.Sh NAME
.Nm ${name}
.Nd a universal convention for conveying time
.Sh DESCRIPTION
For those of us who travel often or coordinate across many timezones,
working with local time is frequently impractical.
ISO8601, in all its wisdom, allows for time zone designators,
but still represents the hours and minutes as local time,
thus making it inconvenient for quickly comparing timestamps from
different locations.
.Pp
Dot time instead uses UTC for all date, hour, and minute indications,
and while it allows for time zone designators, they are optional
information that can be dropped without changing the indicated time.
It uses an alternate hour separator to make it easy to distinguish from
regular ISO8601.
When a time zone designator is provided, one can easily obtain
the matching local time by adding the UTC offset to the UTC time.
.Sh EXAMPLES
These timestamps all represent the same point in time.
.TS
allbox tab(|);
lb | lb | lb
l | l | l.
dot time|ISO8601|RFC3339
2019-06-19T22·13-04|2019-06-19T18:13-04|2019-06-19T18:13:00-04:00
2019-06-19T22·13+00|2019-06-19T22:13+00|2019-06-19T22:13:00Z
2019-06-19T22·13+02|2019-06-20T00:13+02|2019-06-20T00:13:00+02:00
.TE
.Sh SEE ALSO
.Lk https://dotti.me dotti.me
.Sh AUTHORS
.An -nosplit
.Sy dot time
has been proposed and documented by
.An edef Aq Mt ${findEmail "edef"}
and ported to
.Xr mdoc 7
by
.An sterni Aq Mt ${findEmail "sterni"} .
'';
};
in
depot.nix.buildManPages "dot-time" { } [
dot-time
]