#!/usr/bin/env bash
set -euo pipefail
if [[ $# -lt 1 ]]; then echo "Usage: git-commit-push \"<message>\" [repo_path]" >&2; exit 1; fi
MESSAGE="$1"; REPO_PATH="${2:-.}"; REMOTE="${REMOTE_ORIGIN:-origin}"
if [[ ! -d "$REPO_PATH" ]]; then echo "Error: directory not found: $REPO_PATH" >&2; exit 1; fi
cd "$REPO_PATH"
git add .
git commit -m "$MESSAGE"
BRANCH=$(git rev-parse --abbrev-ref HEAD)
if git rev-parse --abbrev-ref --symbolic-full-name "@{u}" >/dev/null 2>&1; then git push
elif git rev-parse --verify --quiet "$REMOTE/main" >/dev/null 2>&1; then git push -u "$REMOTE" "$BRANCH"
elif git rev-parse --verify --quiet "$REMOTE/master" >/dev/null 2>&1; then git push -u "$REMOTE" "$BRANCH"
else git push -u "$REMOTE" "$BRANCH" || true; fi
