From c97d0ee53a2ed1ea3060490e3d435d5f31a966a4 Mon Sep 17 00:00:00 2001 From: Alexander Ilyin Date: Thu, 12 Dec 2024 11:12:31 +0000 Subject: [PATCH 1/3] feat(keep-a-changelog): Add $REQUEST_BODY_FILE for curl request and cleanup - Added $REQUEST_BODY_FILE for curl request and cleanup. --- CHANGELOG.md | 1 + keep-a-changelog.sh | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a7677b5..de245fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -107,3 +107,4 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Renamed "Changelog AI" hooks to "PartCAD: Update CHANGELOG.md" - Renamed "Git Commit AI" hooks to "PartCAD: Prepare Commit Message" - Improved cleanup mechanism for temporary files +- Added $REQUEST_BODY_FILE for curl request and cleanup. diff --git a/keep-a-changelog.sh b/keep-a-changelog.sh index 03d0ba4..d91c149 100755 --- a/keep-a-changelog.sh +++ b/keep-a-changelog.sh @@ -205,7 +205,7 @@ debug_log "System prompt saved to $SYSTEM_PROMPT_FILE" # Ensure cleanup on script exit cleanup() { local exit_code=$? - rm -f "$PROMPT_FILE" "$SYSTEM_PROMPT_FILE" 2>/dev/null + rm -f "$PROMPT_FILE" "$SYSTEM_PROMPT_FILE" "$REQUEST_BODY_FILE" 2>/dev/null exit $exit_code } trap cleanup EXIT INT TERM @@ -227,13 +227,19 @@ REQUEST_BODY=$(jq -n \ ) debug_log "Request body prepared with model: $MODEL" "$REQUEST_BODY" +REQUEST_BODY_FILE=$(mktemp) +echo "$REQUEST_BODY" > "$REQUEST_BODY_FILE" +debug_log "Request body saved to $REQUEST_BODY_FILE" + # Make the API request debug_log "Making API request to OpenRouter" RESPONSE=$(curl -s -X POST "https://openrouter.ai/api/v1/chat/completions" \ -H "Authorization: Bearer ${OPENROUTER_API_KEY}" \ -H "Content-Type: application/json" \ - -d "$REQUEST_BODY") + -d @"$REQUEST_BODY_FILE") debug_log "API response received" "$RESPONSE" +debug_log "Cleaning up temporary files" +rm -v "$REQUEST_BODY_FILE" # Check for errors if [[ "$RESPONSE" == *'"error"'* ]]; then From f4fc67f16cdd9db76ad2d52aed54895f52309031 Mon Sep 17 00:00:00 2001 From: Alexander Ilyin Date: Thu, 12 Dec 2024 11:35:56 +0000 Subject: [PATCH 2/3] feat(OpenRouter): Add $REQUEST_BODY_FILE for curl request and cleanup - Add $REQUEST_BODY_FILE for curl request and cleanup. - Improved error handling for curl requests. - Update CHANGELOG.md with 1.8.1 version. - Improved cleanup mechanism for temporary files. --- CHANGELOG.md | 3 +++ keep-a-changelog.sh | 13 ++++++++++--- prepare-commit-msg.sh | 11 +++++++++-- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index de245fd..692c3a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -107,4 +107,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Renamed "Changelog AI" hooks to "PartCAD: Update CHANGELOG.md" - Renamed "Git Commit AI" hooks to "PartCAD: Prepare Commit Message" - Improved cleanup mechanism for temporary files + +## [1.8.1] - 2024-12-12 + - Added $REQUEST_BODY_FILE for curl request and cleanup. diff --git a/keep-a-changelog.sh b/keep-a-changelog.sh index d91c149..ac6f4cd 100755 --- a/keep-a-changelog.sh +++ b/keep-a-changelog.sh @@ -228,18 +228,25 @@ REQUEST_BODY=$(jq -n \ debug_log "Request body prepared with model: $MODEL" "$REQUEST_BODY" REQUEST_BODY_FILE=$(mktemp) +if [ ! -f "$REQUEST_BODY_FILE" ]; then + echo "ERROR: Failed to create temporary file" + exit 1 +fi echo "$REQUEST_BODY" > "$REQUEST_BODY_FILE" debug_log "Request body saved to $REQUEST_BODY_FILE" # Make the API request debug_log "Making API request to OpenRouter" -RESPONSE=$(curl -s -X POST "https://openrouter.ai/api/v1/chat/completions" \ +if ! RESPONSE=$(curl -s -X POST "https://openrouter.ai/api/v1/chat/completions" \ -H "Authorization: Bearer ${OPENROUTER_API_KEY}" \ -H "Content-Type: application/json" \ - -d @"$REQUEST_BODY_FILE") + -d @"$REQUEST_BODY_FILE"); then + echo "ERROR: API request failed with exit code $?" + exit 1 +fi debug_log "API response received" "$RESPONSE" debug_log "Cleaning up temporary files" -rm -v "$REQUEST_BODY_FILE" +rm -v "$REQUEST_BODY_FILE" 2>/dev/null || true # Check for errors if [[ "$RESPONSE" == *'"error"'* ]]; then diff --git a/prepare-commit-msg.sh b/prepare-commit-msg.sh index ec56756..315c7fc 100755 --- a/prepare-commit-msg.sh +++ b/prepare-commit-msg.sh @@ -242,15 +242,22 @@ debug_log "Cleaning up temporary files" rm -v "$PROMPT_FILE" "$SYSTEM_PROMPT_FILE" REQUEST_BODY_FILE=$(mktemp) +if [ ! -f "$REQUEST_BODY_FILE" ]; then + echo "ERROR: Failed to create temporary file" + exit 1 +fi echo "$REQUEST_BODY" > "$REQUEST_BODY_FILE" debug_log "Request body saved to $REQUEST_BODY_FILE" # Make the API request debug_log "Making API request to OpenRouter" -RESPONSE=$(curl -s -X POST "https://openrouter.ai/api/v1/chat/completions" \ +if ! RESPONSE=$(curl -s -X POST "https://openrouter.ai/api/v1/chat/completions" \ -H "Authorization: Bearer ${OPENROUTER_API_KEY}" \ -H "Content-Type: application/json" \ - -d @"$REQUEST_BODY_FILE") + -d @"$REQUEST_BODY_FILE"); then + echo "ERROR: API request failed with exit code $?" + exit 1 +fi debug_log "API response received" "$RESPONSE" debug_log "Cleaning up temporary files" rm -v "$REQUEST_BODY_FILE" From 7157c0713f9871139ce44364147c5cbacf1be318 Mon Sep 17 00:00:00 2001 From: Alexander Ilyin Date: Thu, 12 Dec 2024 12:00:57 +0000 Subject: [PATCH 3/3] feat: add $REQUEST_BODY_FILE for curl, secure temp files - Added `$REQUEST_BODY_FILE` for curl request handling and cleanup. - Secure permissions on temporary files using `chmod 600`. - Updated documentation in CHANGELOG.md and README.md to reflect the change. --- CHANGELOG.md | 3 +++ README.md | 9 +++++++++ keep-a-changelog.sh | 5 +++++ prepare-commit-msg.sh | 5 +++++ 4 files changed, 22 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 692c3a1..303496f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -110,4 +110,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [1.8.1] - 2024-12-12 +### Added + - Added $REQUEST_BODY_FILE for curl request and cleanup. +- Secure permissions on temporary files - `chmod 600`. diff --git a/README.md b/README.md index c34c08a..8bbd546 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ +![GitHub Release](https://img.shields.io/github/v/release/partcad/pre-commit) +[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-%23FE5196?logo=conventionalcommits&logoColor=white)](https://conventionalcommits.org) +[![Keep a Changelog v1.1.0 badge][changelog-badge]][changelog] [![Apache 2.0 License Badge][license-badge]][license] + # `pre-commit` - Git Hooks backed by AI Fed up with crafting commit messages by hand? @@ -217,3 +221,8 @@ Join `#pre-commit` channel on [Apache License 2.0]: https://github.com/partcad/pre-commit/blob/main/.github/LICENSE [`mrgoonie/cmai.git`]: https://github.com/mrgoonie/cmai [MIT]: https://github.com/mrgoonie/cmai/tree/3398ab52778b999fa170a734411be6d69c4f1697?tab=readme-ov-file#license +[changelog]: ./CHANGELOG.md +[changelog-badge]: https://img.shields.io/badge/changelog-Keep%20a%20Changelog%20v1.1.0-%23E05735 +[license]: ./.github/LICENSE +[version-badge]: https://img.shields.io/badge/version-1.8.1-blue.svg +[license-badge]: https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg diff --git a/keep-a-changelog.sh b/keep-a-changelog.sh index ac6f4cd..ef4496a 100755 --- a/keep-a-changelog.sh +++ b/keep-a-changelog.sh @@ -232,6 +232,11 @@ if [ ! -f "$REQUEST_BODY_FILE" ]; then echo "ERROR: Failed to create temporary file" exit 1 fi +chmod 600 "$REQUEST_BODY_FILE" || { + echo "ERROR: Failed to set secure permissions on temporary file" + rm -f "$REQUEST_BODY_FILE" + exit 1 +} echo "$REQUEST_BODY" > "$REQUEST_BODY_FILE" debug_log "Request body saved to $REQUEST_BODY_FILE" diff --git a/prepare-commit-msg.sh b/prepare-commit-msg.sh index 315c7fc..d5ab85e 100755 --- a/prepare-commit-msg.sh +++ b/prepare-commit-msg.sh @@ -246,6 +246,11 @@ if [ ! -f "$REQUEST_BODY_FILE" ]; then echo "ERROR: Failed to create temporary file" exit 1 fi +chmod 600 "$REQUEST_BODY_FILE" || { + echo "ERROR: Failed to set secure permissions on temporary file" + rm -f "$REQUEST_BODY_FILE" + exit 1 +} echo "$REQUEST_BODY" > "$REQUEST_BODY_FILE" debug_log "Request body saved to $REQUEST_BODY_FILE"