feat: add generate-week script
This commit is contained in:
commit
d3ff11220b
12
README
Normal file
12
README
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
generate-week.sh
|
||||||
|
----------------
|
||||||
|
|
||||||
|
cron usage:
|
||||||
|
|
||||||
|
1 0 * * 1 TEMPLATE="dhis2 7.5" TIME_DIR=~/plan/time /home/varl/bin/generate-week.sh write
|
||||||
|
|
||||||
|
user alias:
|
||||||
|
|
||||||
|
function te () {
|
||||||
|
$EDITOR ~/plan/time/current.timedot
|
||||||
|
}
|
106
generate-week.sh
Executable file
106
generate-week.sh
Executable file
|
@ -0,0 +1,106 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
#
|
||||||
|
## environment variables
|
||||||
|
#
|
||||||
|
|
||||||
|
time_dir=${TIME_DIR:-.}
|
||||||
|
montofri_template=${TEMPLATE:-}
|
||||||
|
|
||||||
|
#
|
||||||
|
## script arguments
|
||||||
|
#
|
||||||
|
|
||||||
|
command=${1:-nonegiven}
|
||||||
|
in_date=${2:-$(date +%Y-%m-%d)}
|
||||||
|
|
||||||
|
weekday=$(date -d "$in_date" +%u)
|
||||||
|
|
||||||
|
if [[ $weekday -eq 1 ]]; then
|
||||||
|
base_monday=$in_date
|
||||||
|
else
|
||||||
|
overshoot=$(($weekday - 1))
|
||||||
|
base_monday=$(date -d "$in_date -${overshoot}days" +%Y-%m-%d)
|
||||||
|
fi
|
||||||
|
|
||||||
|
year="$(date +%Y)"
|
||||||
|
week="$(date -d "$base_monday" +%V)"
|
||||||
|
|
||||||
|
fname="${time_dir}/${year}-${week}".timedot
|
||||||
|
current="${time_dir}/current.timedot"
|
||||||
|
|
||||||
|
#
|
||||||
|
## support functions
|
||||||
|
#
|
||||||
|
|
||||||
|
function weekdays () {
|
||||||
|
local monday="$1"
|
||||||
|
|
||||||
|
days_in_week=(
|
||||||
|
"$monday"
|
||||||
|
$(date -d "$monday +1day" +%Y-%m-%d)
|
||||||
|
$(date -d "$monday +2day" +%Y-%m-%d)
|
||||||
|
$(date -d "$monday +3day" +%Y-%m-%d)
|
||||||
|
$(date -d "$monday +4day" +%Y-%m-%d)
|
||||||
|
$(date -d "$monday +5day" +%Y-%m-%d)
|
||||||
|
$(date -d "$monday +6day" +%Y-%m-%d)
|
||||||
|
)
|
||||||
|
|
||||||
|
for day in "${days_in_week[@]}"; do
|
||||||
|
local day_name="$(date -d $day +%A)"
|
||||||
|
|
||||||
|
echo "# $day_name"
|
||||||
|
echo "$day"
|
||||||
|
|
||||||
|
if [[ ! -z $montofri_template && "$day_name" != "Saturday" && "$day_name" != "Sunday" ]]; then
|
||||||
|
echo "$montofri_template"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function write () {
|
||||||
|
local fname="$1"
|
||||||
|
local content="$2"
|
||||||
|
|
||||||
|
tee $fname <<EOF
|
||||||
|
$content
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
## main script
|
||||||
|
#
|
||||||
|
|
||||||
|
case "$command" in
|
||||||
|
print)
|
||||||
|
weekdays "$base_monday"
|
||||||
|
;;
|
||||||
|
write)
|
||||||
|
if [[ ! -f $fname ]]; then
|
||||||
|
echo "Writing to $fname"
|
||||||
|
write "$fname" "$(weekdays $base_monday)"
|
||||||
|
else
|
||||||
|
echo "File exists: $fname"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Usage: generate-week.sh <command> [<args>]"
|
||||||
|
echo ""
|
||||||
|
echo "Commands: print, write"
|
||||||
|
echo "Args: datestring in format: YYYY-MM-DD (+%Y-%m-%d)"
|
||||||
|
echo ""
|
||||||
|
echo "Generate a weekly timedot file. Week starts on Monday."
|
||||||
|
echo "Does not print the TEMPLATE string on Sat/Sun."
|
||||||
|
echo "Updates symlink to current.timedot in the TIME_DIR."
|
||||||
|
echo ""
|
||||||
|
echo "Environment variables:"
|
||||||
|
echo "TIME_DIR Output directory, defaults to current directory."
|
||||||
|
echo " E.g. TIME_DIR=~/timedots"
|
||||||
|
echo "TEMPLATE The template string to use, defaults to empty."
|
||||||
|
echo " E.g. TEMPLATE='myproject 8'"
|
||||||
|
;;
|
||||||
|
esac
|
Loading…
Reference in a new issue