From 0a713b2413a3eb252f857dc1e2413c51e3347cc9 Mon Sep 17 00:00:00 2001 From: Guillermo Ramos Date: Fri, 30 Jul 2021 15:17:10 +0200 Subject: gromo: Improve state management --- gromo | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/gromo b/gromo index 9c39937..f4a65bf 100755 --- a/gromo +++ b/gromo @@ -10,35 +10,54 @@ GROMO_SECONDS=$((60 * 20)) STOP_SECONDS=20 DATA_DIR=${XDG_DATA_HOME:-$HOME/.local/share}/gromo -TODAY_FILE=$DATA_DIR/$(date -I) -DING_FILE=${XDG_CACHE_HOME:-$HOME/.cache}/gromo/ding.opus -WORKING_FILE=$DATA_DIR/working +CACHE_DIR=${XDG_CACHE_HOME:-$HOME/.cache}/gromo +STATE_DIR=${XDG_STATE_HOME:-$HOME/.local/state}/gromo -mkdir -p "$DATA_DIR" +TODAY_FILE=$DATA_DIR/$(date -I) +DING_FILE=$CACHE_DIR/ding.opus +STATE_FILE=$STATE_DIR/state gromos=0 [ -f "$TODAY_FILE" ] && read -r gromos < "$TODAY_FILE" if [ "$1" = "--xmobar-status" ]; then - if [ -f "$WORKING_FILE" ]; then - echo "working ($gromos)" + if [ -f "$STATE_FILE" ]; then + echo "$(cat $STATE_FILE) ($gromos)" else echo "idle ($gromos)" fi exit 0 +elif [ "$1" = "--help" ] || [ "$1" = "-h" ]; then + cmd=$(basename $0) + echo -e "Usage: + $cmd --xmobar-status\tReturn state formatted for display in xmobar + $cmd --help | -h \tShow this help + $cmd [task] \tStart counting (default task: "work") + " + exit 0 +elif [ "$#" -ge 1 ]; then + task=$1 +else + task=work fi +mkdir -p "$DATA_DIR" "$STATE_DIR" + [ -f "$DING_FILE" ] || curl $DEFAULT_DING --create-dirs -so "$DING_FILE" -trap "rm -f $WORKING_FILE; exit" INT TERM EXIT -rm -f $WORKING_FILE +if [ -f $STATE_FILE ]; then + echo "Another instance is currently running; exiting (remove $STATE_FILE to override)" + exit 1 +fi +echo idle > "$STATE_FILE" +trap "rm -f $STATE_FILE; exit" INT TERM EXIT while true; do read -rn1 -p "Press any key to start gromo > " echo -ne "\r\033[K" - touch $WORKING_FILE + echo $task > "$STATE_FILE" sleep $GROMO_SECONDS - rm -f $WORKING_FILE + echo idle > "$STATE_FILE" gromos=$((gromos+1)) seconds=$((gromos * GROMO_SECONDS)) -- cgit v1.2.3