sane-deadlines: port from bash -> ysh
This commit is contained in:
@@ -82,7 +82,7 @@ let
|
||||
srcRoot = ./src;
|
||||
pkgs = [ "nix" ];
|
||||
};
|
||||
deadlines = static-nix-shell.mkBash {
|
||||
deadlines = static-nix-shell.mkYsh {
|
||||
pname = "sane-deadlines";
|
||||
srcRoot = ./src;
|
||||
pkgs = [ "coreutils-full" "gnused" ];
|
||||
|
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p bash -p coreutils-full -p gnused
|
||||
#!nix-shell -i ysh -p coreutils-full -p gnused -p oils-for-unix
|
||||
|
||||
# processes a tab-separated "deadlines" file and alerts for any upcoming events.
|
||||
#
|
||||
@@ -17,29 +17,31 @@
|
||||
# 2023-04-01 7d the other pie day :o
|
||||
|
||||
# configurables:
|
||||
deadlines=~/knowledge/planner/deadlines.tsv
|
||||
var deadlines = "$[ENV.HOME]/knowledge/planner/deadlines.tsv"
|
||||
|
||||
if ! test -f "$deadlines"; then
|
||||
echo "WARNING: $deadlines sane-deadlines file not found"
|
||||
exit 1
|
||||
fi
|
||||
if ! test -f "$deadlines" {
|
||||
echo "WARNING: $deadlines sane-deadlines file not found"
|
||||
exit 1
|
||||
}
|
||||
|
||||
now=$(date +%s)
|
||||
sort "$deadlines" | while read line; do
|
||||
# parse line
|
||||
deadline_field=$(echo "$line" | cut -f 1)
|
||||
threshold_field=$(echo "$line" | cut -f 2)
|
||||
description_field=$(echo "$line" | cut -f 3)
|
||||
var now=$(date +%s)
|
||||
for line in ($(cat "$deadlines") => split(u'\n')) {
|
||||
# parse line
|
||||
var deadline_field=$(echo "$line" | cut -f 1)
|
||||
var threshold_field=$(echo "$line" | cut -f 2)
|
||||
var description_field=$(echo "$line" | cut -f 3)
|
||||
|
||||
# normalize dates into seconds since unix epoch
|
||||
deadline=$(date -d "$deadline_field" +%s)
|
||||
threshold=$(echo "$threshold_field" | sed 's/d/day /g')
|
||||
birthtime=$(date -d "$deadline_field - $threshold" +%s)
|
||||
# normalize dates into seconds since unix epoch
|
||||
var deadline=$(date -d "$deadline_field" +%s)
|
||||
var threshold=$(echo "$threshold_field" | sed 's/d/day /g')
|
||||
var birthtime=$(date -d "$deadline_field - $threshold" +%s)
|
||||
|
||||
# show the event iff it's near
|
||||
# 86400 = 24*60*60 = # of seconds in a day
|
||||
if test "$now" -ge "$birthtime"; then
|
||||
days_until=$(( ($deadline - $now + 86399) / 86400 ))
|
||||
echo "in $days_until day(s): $description_field"
|
||||
fi
|
||||
done
|
||||
# show the event iff it's near
|
||||
# 86400 = 24*60*60 = # of seconds in a day
|
||||
# 10080 = 24*60*7 = # of seconds between UTC and UTC-7
|
||||
# 11520 = 24*60*8 = # of seconds between UTC and UTC-8
|
||||
if (now >= birthtime) {
|
||||
var days_until = int((deadline - now + 86399) / 86400)
|
||||
echo "in $days_until day(s): $description_field"
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user