#!/usr/bin/env bash SCOPE="plugin" elif echo "$CHANGED_FILES" | grep -q "skill"; then SCOPE="skill" elif echo "$CHANGED_FILES" | grep -q "agent"; then SCOPE="agent" else FIRST_FILE=$(echo "$CHANGED_FILES" | head -n 1) if [[ "$FIRST_FILE" == */* ]]; then SCOPE="${FIRST_FILE%%/*}" fi fi # Determine description DESC="" if [[ "$TYPE" == "docs" ]]; then DESC="update documentation" elif [[ "$TYPE" == "test" ]]; then DESC="update tests" elif [[ "$TYPE" == "chore" ]]; then DESC="update dependencies" else FILE_COUNT=$(echo "$CHANGED_FILES" | wc -l | tr -d ' ') DESC="update ${FILE_COUNT} file(s)" fi if [[ -n "$SCOPE" ]]; then COMMIT_MSG="${TYPE}(${SCOPE}): ${DESC}" else COMMIT_MSG="${TYPE}: ${DESC}" fi fi info "Commit message: $COMMIT_MSG" # ----------------------------- # Commit # ----------------------------- info "Creating commit..." git commit -m "$COMMIT_MSG" -m "Generated with Claude Code" -m "Co-Authored-By: Claude " # ----------------------------- # Push # ----------------------------- info "Pushing to remote '$REMOTE_NAME'..." if git ls-remote --exit-code --heads "$REMOTE_NAME" "$BRANCH" >/dev/null 2>&1; then git push "$REMOTE_NAME" else git push -u "$REMOTE_NAME" "$BRANCH" fi info "Push complete" echo "$DIFF_STAT" # ----------------------------- # Gitea PR link (best-effort) # ----------------------------- # For Gitea, creating a PR is usually: # https://host/owner/repo/compare/?expand=1 REMOTE_URL=$(git remote get-url "$REMOTE_NAME" 2>/dev/null || true) extract_host_and_path() { local url="$1" if [[ "$url" =~ ^https?://([^/]+)/(.+)$ ]]; then echo "${BASH_REMATCH[1]}|${BASH_REMATCH[2]}" return 0 elif [[ "$url" =~ ^git@([^:]+):(.+)$ ]]; then echo "${BASH_REMATCH[1]}|${BASH_REMATCH[2]}" return 0 fi return 1 } if HP=$(extract_host_and_path "$REMOTE_URL"); then HOST="${HP%%|*}" PATH_REPO="${HP#*|}" PATH_REPO="${PATH_REPO%.git}" # If configured host matches (or no configured host) if [[ -z "${GITEA_HOST:-}" || "$HOST" == "$GITEA_HOST" ]]; then warn "Create PR: https://${HOST}/${PATH_REPO}/compare/${BRANCH}?expand=1" fi fi