diff --git a/checkin-all b/checkin-all index 5d25fc0..0ac19f9 100755 --- a/checkin-all +++ b/checkin-all @@ -1,6 +1,13 @@ #!/bin/bash set -euo pipefail +INTERACTIVE=true +for arg in "$@"; do + case "$arg" in + --no-interactive|-n) INTERACTIVE=false ;; + esac +done + GIT_HOME="${HOME}/git" for dir in "${GIT_HOME}"/*/ "${HOME}/Dotfiles"; do @@ -18,9 +25,22 @@ for dir in "${GIT_HOME}"/*/ "${HOME}/Dotfiles"; do echo "=== ${repo} ===" cd "${dir}" if [ -n "$(git status --porcelain 2>/dev/null)" ]; then - echo " Changes found → committing and pushing..." - git commit -a -m "auto: $(date '+%Y-%m-%d %H:%M')" || echo " Nothing to commit (maybe no tracked files changed)" - git push + if $INTERACTIVE; then + git status --short + echo "" + read -r -p " Commit message (empty = skip): " msg + if [ -z "$msg" ]; then + echo " Skipped." + else + git add -A + git commit -m "$msg" + git push + fi + else + echo " Changes found → committing and pushing..." + git commit -a -m "auto: $(date '+%Y-%m-%d %H:%M')" || echo " Nothing to commit (maybe no tracked files changed)" + git push + fi else echo " Clean." fi