Michael Stone:

Anyway, if there was a simple solution someone would have implemented it by now.

Indeed, that is the case; and it has been around for almost as long as those 20 years that you have been watching people use the GNU tool. In 2001, Paul Jarc invented a fairly simple notation for such things; providing what is effectively a mini-language, made out of chaining programs and using environment variables for variables, with |add|, |sub|, |min|, |max|, |statfile|, and |match| operators.

* http://code.dogmap.org/runwhen/example/

* http://code.dogmap.org/runwhen/stamp-fmt/

* http://code.dogmap.org/runwhen/

Xe even went through the second-system-effect process of not liking the first way that xe implemented it.

* http://code.dogmap.org/runwhen/caldelay/

Leаh Neukirchen took the old |caldelay| idea, and turned environment variables into command-line options.

* https://github.com/chneukirchen/snooze

Although |add n d1s now1s match $now1s ,H=2,M=30 wake statfile started add $MTAI64N d1H earliest ||max $wake $earliest wake| (which is effectively a prefix notation which in an infix form would be something like |$now1s := ||now add d1s ; $||wake := ||$now1s findnextmatching H=2,M=30 ; $||MTAI64N||:= timestampof started ; $||earliest :=||$MTAI64N add d1H ; $||wake :=||$wake max $earliest|) is more along the lines that you were writing about earlier. (One can imagine a pair of date calculator tools akin to |dc| and |bc| that understand the prefix and infix forms.)

Reply via email to