From c63b3c4ee2dc6980288add9c56e8666285ca2166 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=84min=20Baumeler?= Date: Mon, 30 Jun 2025 15:15:05 +0200 Subject: [PATCH] feat: git support --- src/main.sh | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/src/main.sh b/src/main.sh index 296fae6..53fa513 100644 --- a/src/main.sh +++ b/src/main.sh @@ -114,6 +114,8 @@ if [ "${1:-}" = "--help" ]; then echo "Usage: $0 [--help | --new [FILTER..] | [FILTER..] ] --help Show this help and exit --new Create new entry and do not exit + --git-init Activate git usage and exit + --git Run git command and exit [FILTER] You may specify any of these filters. Filters can be negated using the @@ -131,6 +133,35 @@ if [ "${1:-}" = "--help" ]; then exit fi +# Git +if command -v "git" >/dev/null && [ -d "$ROOT/.git" ]; then + GIT="git -C $ROOT" +fi +if [ "${1:-}" = "--git-init" ]; then + shift + if [ -n "${GIT:-}" ]; then + err "Git already enabled" + return 1 + fi + if ! command -v "git" >/dev/null; then + err "Git not installed" + return 1 + fi + git -C "$ROOT" init + git -C "$ROOT" add -A + git -C "$ROOT" commit -m 'Initial commit: Start git tracking' + exit +fi +if [ "${1:-}" = "--git" ]; then + shift + if [ -z "${GIT:-}" ]; then + err "Git not supported, run \`$0 --git-init\` first" + return 1 + fi + $GIT "$@" + exit +fi + # Command line arguments to be self-contained # Generate preview of file from selection if [ "${1:-}" = "--preview" ]; then @@ -155,6 +186,10 @@ if [ "${1:-}" = "--delete" ]; then case $yn in "yes") rm -v "$file" + if [ -n "$GIT" ]; then + $GIT add "$file" + $GIT commit -q -m "File deleted" -- "$file" + fi break ;; "no") @@ -193,6 +228,10 @@ if [ "${1:-}" = "--new" ]; then tmpfile="$tmpmd.ics" awk -v uid="$uuid" "$AWK_NEW" "$tmpmd" >"$tmpfile" mv "$tmpfile" "$file" + if [ -n "$GIT" ]; then + $GIT add "$file" + $GIT commit -q -m "File added" -- "$file" + fi fi rm "$tmpmd" fi @@ -205,6 +244,10 @@ if [ "${1:-}" = "--toggle-completed" ]; then tmpfile=$(mktemp) awk "$AWK_ALTERTODO" "$file" >"$tmpfile" mv "$tmpfile" "$file" + if [ -n "$GIT" ]; then + $GIT add "$file" + $GIT commit -q -m "Completed toggle" -- "$file" + fi fi # Increase priority if [ "${1:-}" = "--increase-priority" ]; then @@ -215,6 +258,10 @@ if [ "${1:-}" = "--increase-priority" ]; then tmpfile=$(mktemp) awk -v delta="1" "$AWK_ALTERTODO" "$file" >"$tmpfile" mv "$tmpfile" "$file" + if [ -n "$GIT" ]; then + $GIT add "$file" + $GIT commit -q -m "Priority increased" -- "$file" + fi fi # Decrease priority if [ "${1:-}" = "--decrease-priority" ]; then @@ -225,6 +272,10 @@ if [ "${1:-}" = "--decrease-priority" ]; then tmpfile=$(mktemp) awk -v delta="-1" "$AWK_ALTERTODO" "$file" >"$tmpfile" mv "$tmpfile" "$file" + if [ -n "$GIT" ]; then + $GIT add "$file" + $GIT commit -q -m "Priority decreased" -- "$file" + fi fi # Reload view if [ "${1:-}" = "--reload" ]; then @@ -339,6 +390,10 @@ if [ "$checksum" != "$(cksum "$filetmp")" ]; then file_new="$filetmp.ics" awk "$AWK_UPDATE" "$filetmp" "$file" >"$file_new" mv "$file_new" "$file" + if [ -n "$GIT" ]; then + $GIT add "$file" + $GIT commit -q -m "File modified" -- "$file" + fi fi rm "$filetmp"