diff --git a/.github/workflows/update-cursor.yml b/.github/workflows/update-cursor.yml index a14c29f..b8f9663 100644 --- a/.github/workflows/update-cursor.yml +++ b/.github/workflows/update-cursor.yml @@ -23,12 +23,18 @@ jobs: nix_path: nixpkgs=channel:nixpkgs-unstable - name: Update Cursor using script + id: update-cursor run: | # Make the script executable chmod +x update-cursor.sh - # Run the update script with auto-confirm - echo "y" | ./update-cursor.sh + # Run the update script (it will auto-confirm in CI mode) + ./update-cursor.sh + + # Capture version info from script output + if [[ -f "$GITHUB_OUTPUT" ]]; then + grep "CURSOR_VERSION_INFO=" "$GITHUB_OUTPUT" || echo "CURSOR_VERSION_INFO=no_update" >> "$GITHUB_OUTPUT" + fi - name: Update flake lock file run: | @@ -41,15 +47,35 @@ jobs: - name: Commit and push changes run: | + # Get version info from the update step + VERSION_INFO="${{ steps.update-cursor.outputs.CURSOR_VERSION_INFO }}" + + # Only commit if there was an actual update + if [[ "$VERSION_INFO" == "no_update" ]]; then + echo "No Cursor update needed, skipping commit" + exit 0 + fi + # Check if there are any changes to commit if git diff --quiet; then echo "No changes to commit" exit 0 fi + # Create commit message based on version info + if [[ "$VERSION_INFO" == completed:* ]]; then + # Extract version from format: completed:old_version:new_version + NEW_VERSION=$(echo "$VERSION_INFO" | cut -d: -f3) + COMMIT_MSG="Update Cursor to version $NEW_VERSION" + else + COMMIT_MSG="Update Cursor to latest version" + fi + + echo "Commit message: $COMMIT_MSG" + git config --local user.email "action@github.com" git config --local user.name "GitHub Action" git add flake.nix flake.lock - git commit -m "Update Cursor to latest version" + git commit -m "$COMMIT_MSG" git push diff --git a/update-cursor.sh b/update-cursor.sh index 7fffc0d..2cf913f 100755 --- a/update-cursor.sh +++ b/update-cursor.sh @@ -103,24 +103,34 @@ main() { # Check if update is needed if [[ "$target_version" == "$current_version" ]]; then echo "No update needed. Current version is up to date." + echo "CURSOR_VERSION_INFO=no_update" >> "$GITHUB_OUTPUT" 2>/dev/null || true exit 0 fi echo "Update needed: $current_version -> $target_version" - read -p "Do you want to proceed with the update? (y/N): " -n 1 -r - echo + echo "CURSOR_VERSION_INFO=updated:$current_version:$target_version" >> "$GITHUB_OUTPUT" 2>/dev/null || true + + # Check if running in CI/GitHub Actions (auto-confirm) + if [[ -n "${CI:-}" ]] || [[ -n "${GITHUB_ACTIONS:-}" ]]; then + echo "Running in CI mode, auto-confirming update..." + REPLY="y" + else + read -p "Do you want to proceed with the update? (y/N): " -n 1 -r + echo + fi if [[ $REPLY =~ ^[Yy]$ ]]; then update_flake "$target_version" test_flake echo "Update completed successfully!" + echo "CURSOR_VERSION_INFO=completed:$current_version:$target_version" >> "$GITHUB_OUTPUT" 2>/dev/null || true echo "You can now commit the changes:" echo " git add flake.nix" echo " git commit -m \"Update Cursor to version $target_version\"" else echo "Update cancelled." - exit 1 -fi + exit 1 + fi } # Check dependencies