diff options
author | sterni <sternenseemann@systemli.org> | 2021-03-24T19·04+0100 |
---|---|---|
committer | sterni <sternenseemann@systemli.org> | 2021-04-02T09·14+0000 |
commit | 108e19c906d4f6b4a0765f30b6df99e2dd9a19ca (patch) | |
tree | bd9fe8f23d78a86e9a8180f8f43996e0f7f614b7 | |
parent | b6818d3190dea185010b5c320e0545f3a2bbc6d1 (diff) |
feat(sterni/dot-time-man-pages): mdoc port of dotti.me r/2396
More or less direct port of https://dotti.me to mdoc(7) with the following changes: * Add a RFC3339 column to the EXAMPLES table. RFC3339 is a well specified subset of ISO8601 whose specification is also more accessible so this could help someone out. * Add a SEE ALSO section linking to the web site * Add an AUTHORS section Change-Id: I8db00bd402697aa52f6f651f28692617b487f832 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2642 Tested-by: BuildkiteCI Reviewed-by: edef <edef@edef.eu>
-rw-r--r-- | users/sterni/dot-time-man-pages/OWNERS | 3 | ||||
-rw-r--r-- | users/sterni/dot-time-man-pages/default.nix | 70 |
2 files changed, 73 insertions, 0 deletions
diff --git a/users/sterni/dot-time-man-pages/OWNERS b/users/sterni/dot-time-man-pages/OWNERS new file mode 100644 index 000000000000..980c17b424f2 --- /dev/null +++ b/users/sterni/dot-time-man-pages/OWNERS @@ -0,0 +1,3 @@ +inherited: true +owners: + - edef diff --git a/users/sterni/dot-time-man-pages/default.nix b/users/sterni/dot-time-man-pages/default.nix new file mode 100644 index 000000000000..bf7d63dbd797 --- /dev/null +++ b/users/sterni/dot-time-man-pages/default.nix @@ -0,0 +1,70 @@ +{ 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 + ] |