From d3dd568e41c83bc51b102dea66287cf303370e2c Mon Sep 17 00:00:00 2001 From: zowe-robot Date: Fri, 4 Aug 2023 14:53:46 +0000 Subject: [PATCH 01/20] v2.11.0 Signed-off-by: zowe-robot --- manifest.yaml | 2 +- pluginDefinition.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest.yaml b/manifest.yaml index e6c2c52a..67b315cd 100644 --- a/manifest.yaml +++ b/manifest.yaml @@ -2,7 +2,7 @@ name: editor id: org.zowe.editor # Without the v -version: 2.10.0 +version: 2.11.0 # Human readable component name title: Editor # Human readable component description diff --git a/pluginDefinition.json b/pluginDefinition.json index ac9a52e4..c49e5c5e 100644 --- a/pluginDefinition.json +++ b/pluginDefinition.json @@ -1,7 +1,7 @@ { "identifier": "org.zowe.editor", "apiVersion": "2.0.0", - "pluginVersion": "2.10.0", + "pluginVersion": "2.11.0", "license": "EPL-2.0", "author": "Zowe", "homepage": "https://github.com/zowe/zlux-editor", From f22cad15b28fa7e9168a3b8f994f663e31e67d3b Mon Sep 17 00:00:00 2001 From: syadav3 Date: Wed, 9 Aug 2023 23:40:15 +0530 Subject: [PATCH 02/20] Added Merge Check for Changelog file --- .github/workflows/build_test.yml | 44 ++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml index 9561b960..c23fdf34 100644 --- a/.github/workflows/build_test.yml +++ b/.github/workflows/build_test.yml @@ -33,6 +33,50 @@ jobs: github-repo: ${{ github.repository }} github-token: ${{ secrets.GITHUB_TOKEN }} + check_changelog: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + with: + path: copy-repo + fetch-depth: ${{ github.event_name == 'pull_request' && 2 || 0 }} + + - name: Get changed files + id: changed-files + run: | + cd copy-repo + if ${{ github.event_name == 'pull_request' }}; then + echo "changed_files=$(git diff --name-only -r HEAD^1 HEAD | xargs)" >> $GITHUB_OUTPUT + else + echo "changed_files=$(git diff --name-only ${{ github.event.before }} ${{ github.event.after }} | xargs)" >> $GITHUB_OUTPUT + fi + + - name: List changed files + id: set-flag + run: | + cd copy-repo + for file in ${{ steps.changed-files.outputs.changed_files }}; do + echo "$file was changed" + if [[ $file == "CHANGELOG.md" ]] + then + echo "file-flag=true" >> $GITHUB_OUTPUT + break; + else + echo "file-flag=false" >> $GITHUB_OUTPUT + fi + done + + - name: Check if CHANGELOG is Updated and Abort if not updated + if: steps.set-flag.outputs.file-flag != 'true' + run: | + echo "CHANGELOG.md not updated, please update CHANGELOG.md with the changes made in the pull request" + exit 1 + + - name: Remove copy-repo + if: always() + run: rm -r copy-repo + build: runs-on: ubuntu-latest needs: check-permission From 81989f84a76abe11466cf4bcf1e7957bb7e54939 Mon Sep 17 00:00:00 2001 From: Himani1519 Date: Tue, 22 Aug 2023 23:07:46 +0530 Subject: [PATCH 03/20] Automate changelog note Signed-off-by: Himani1519 --- .github/workflows/build_test.yml | 111 ++++++++++++++++++++++--------- 1 file changed, 79 insertions(+), 32 deletions(-) diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml index c23fdf34..8b815d1b 100644 --- a/.github/workflows/build_test.yml +++ b/.github/workflows/build_test.yml @@ -33,49 +33,96 @@ jobs: github-repo: ${{ github.repository }} github-token: ${{ secrets.GITHUB_TOKEN }} - check_changelog: + update-changelog: runs-on: ubuntu-latest + outputs: + was_updated: ${{ steps.check-change.outputs.change_detected }} + check_commit: ${{ steps.check-changelog.outputs.check_commit }} steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v2 with: - path: copy-repo - fetch-depth: ${{ github.event_name == 'pull_request' && 2 || 0 }} + ref: ${{ github.head_ref }} + fetch-depth: 0 - - name: Get changed files - id: changed-files + - name: Check for updated CHANGELOG.md using git + id: check-changelog + run: | + if git diff --name-only origin/${{ github.base_ref }} | grep -q "^CHANGELOG.md$"; then + echo "CHANGELOG.md has been updated." + echo "::set-output name=check_commit::true" + else + echo "ERROR: CHANGELOG.md has not been updated." + echo "::set-output name=check_commit::false" + fi + - name: Extract changelog info + if: steps.check-changelog.outputs.check_commit == 'false' + id: extract-changelog run: | - cd copy-repo - if ${{ github.event_name == 'pull_request' }}; then - echo "changed_files=$(git diff --name-only -r HEAD^1 HEAD | xargs)" >> $GITHUB_OUTPUT + PR_DESCRIPTION="${{ github.event.pull_request.body }}" + # Check if "changelog:" exists in PR description + if echo "$PR_DESCRIPTION" | grep -q "VERSION:" && echo "$PR_DESCRIPTION" | grep -q "CHANGELOG:"; then + # Extract text after "changelog:" + CHANGELOG_TEXT=$(echo $PR_DESCRIPTION | sed -n 's/.*CHANGELOG: \(.*\)/\1/p') + # Extract VERSION: from PR description + VERSION=$(echo "$PR_DESCRIPTION" | grep -oP 'VERSION:\s*\K\d+\.\d+\.\d+') + echo "Extracted changelog: $CHANGELOG_TEXT" + echo "::set-output name=changelog::$CHANGELOG_TEXT" + echo "::set-output name=version::$VERSION" + else + echo -e "No changelog and version information found in PR description please add them.\n Expected Format:\n VERSION:vX.XX.X\n CHANGELOG:This is changelog note.\n + To re-run the action, just make a push or commit after updating the PR description or updating the changelog via a manual file changing commit." + exit 1 + fi + - name: Check PR body against changelog + if: steps.check-changelog.outputs.check_commit == 'false' + run: | + ESCAPED_CHANGELOG="${{ steps.extract-changelog.outputs.changelog }}" + ESCAPED_CHANGELOG=$(echo "$ESCAPED_CHANGELOG" | sed "s/'/\\\\'/g") + VERSION="${{ steps.extract-changelog.outputs.version }}" + + if ! grep -Fq "$ESCAPED_CHANGELOG" CHANGELOG.md; then + # Check if version exists in CHANGELOG.md + if grep -q "^## \`$VERSION\`" CHANGELOG.md; then + # Append PR description to existing version + sed -i "/^## \`$VERSION\`/a - $ESCAPED_CHANGELOG (#${{ github.event.pull_request.number }})" CHANGELOG.md else - echo "changed_files=$(git diff --name-only ${{ github.event.before }} ${{ github.event.after }} | xargs)" >> $GITHUB_OUTPUT + # Append new version and PR description + ANCHOR_LINE=$(awk '/# Zlux Editor Changelog/ {print NR}' CHANGELOG.md) + sed -i "$ANCHOR_LINE a\\ + \n## \`$VERSION\`\n- $ESCAPED_CHANGELOG (#${{ github.event.pull_request.number }})\n" CHANGELOG.md fi - - - name: List changed files - id: set-flag + git config --local user.email "action@github.com" + git config --local user.name "GitHub Action" + git add CHANGELOG.md + git commit -m "Update changelog with PR #${{ github.event.pull_request.number }} description" + git push + fi + - name: check for changes + id: check-change run: | - cd copy-repo - for file in ${{ steps.changed-files.outputs.changed_files }}; do - echo "$file was changed" - if [[ $file == "CHANGELOG.md" ]] - then - echo "file-flag=true" >> $GITHUB_OUTPUT - break; - else - echo "file-flag=false" >> $GITHUB_OUTPUT - fi - done + if git diff --name-only HEAD^ HEAD | grep 'changelog.md'; then + echo "No Changes detected, setting flag to false" + echo "::set-output name=change_detected::false" + else + echo "::set-output name=change_detected::true" + fi - - name: Check if CHANGELOG is Updated and Abort if not updated - if: steps.set-flag.outputs.file-flag != 'true' - run: | - echo "CHANGELOG.md not updated, please update CHANGELOG.md with the changes made in the pull request" - exit 1 + check_changelog: + needs: update-changelog + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 - - name: Remove copy-repo - if: always() - run: rm -r copy-repo + - name: Verify Changelog update + run: | + if [ "${{ needs.update-changelog.outputs.was_updated }}" != "true" ]; then + echo "CHANGELOG.md not updated, please update CHANGELOG.md with the changes made in the pull request" + exit 1 + else + echo "changelog was updated successfully." + fi build: runs-on: ubuntu-latest From e0e2c7dc23e7f7928d6a49363aab899a0d8dc7e7 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Tue, 22 Aug 2023 17:39:04 +0000 Subject: [PATCH 04/20] Update changelog with PR #338 description Signed-off-by: Himani1519 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5dfb4d4e..0f1e699d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # Zlux Editor Changelog ## `3.0.1` +- This action making a CHANGELOG note via special syntax from the GitHub PR commit message, like it could automatically update CHANGELOG.md with the message. First job checks if PR body has changelog note or not if it's not there then it asked them to add it and second job is to check if changelog note has been added in changelog.md file or not. (#338) - Bugfix: Added a few rules for JCL syntax highlighter - Bugfix: Set USS path to correct directory, when opening the directory or file in new browser tab respectively - Added the feature to copy the line content and copy URL link to open a file at a specific line From 4bdbeccf3825b883cdf8a041cd33b645c21e5d96 Mon Sep 17 00:00:00 2001 From: Himani1519 Date: Wed, 23 Aug 2023 19:53:13 +0530 Subject: [PATCH 05/20] Fix version format Signed-off-by: Himani1519 --- .github/workflows/build_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml index 8b815d1b..5589e83f 100644 --- a/.github/workflows/build_test.yml +++ b/.github/workflows/build_test.yml @@ -70,7 +70,7 @@ jobs: echo "::set-output name=changelog::$CHANGELOG_TEXT" echo "::set-output name=version::$VERSION" else - echo -e "No changelog and version information found in PR description please add them.\n Expected Format:\n VERSION:vX.XX.X\n CHANGELOG:This is changelog note.\n + echo -e "No changelog and version information found in PR description please add them.\n Expected Format:\n VERSION:X.XX.X\n CHANGELOG:This is changelog note.\n To re-run the action, just make a push or commit after updating the PR description or updating the changelog via a manual file changing commit." exit 1 fi From 27ed2f35413de9b29aab46cb8e1196317c04b012 Mon Sep 17 00:00:00 2001 From: Himani1519 Date: Tue, 29 Aug 2023 20:10:01 +0530 Subject: [PATCH 06/20] minor change Signed-off-by: Himani1519 --- .github/workflows/build_test.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml index 5589e83f..f657753d 100644 --- a/.github/workflows/build_test.yml +++ b/.github/workflows/build_test.yml @@ -92,10 +92,10 @@ jobs: sed -i "$ANCHOR_LINE a\\ \n## \`$VERSION\`\n- $ESCAPED_CHANGELOG (#${{ github.event.pull_request.number }})\n" CHANGELOG.md fi - git config --local user.email "action@github.com" - git config --local user.name "GitHub Action" + git config --global user.email "zowe-robot@users.noreply.github.com" + git config --global user.name "Zowe Robot" git add CHANGELOG.md - git commit -m "Update changelog with PR #${{ github.event.pull_request.number }} description" + git commit -s -m "Update changelog with PR #${{ github.event.pull_request.number }} description" git push fi - name: check for changes From 5e719254dedde40e4ec5c2b048ec2117125c17de Mon Sep 17 00:00:00 2001 From: Himani1519 Date: Tue, 5 Sep 2023 20:44:56 +0530 Subject: [PATCH 07/20] update changelog.md Signed-off-by: Himani1519 --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f1e699d..5dfb4d4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,6 @@ # Zlux Editor Changelog ## `3.0.1` -- This action making a CHANGELOG note via special syntax from the GitHub PR commit message, like it could automatically update CHANGELOG.md with the message. First job checks if PR body has changelog note or not if it's not there then it asked them to add it and second job is to check if changelog note has been added in changelog.md file or not. (#338) - Bugfix: Added a few rules for JCL syntax highlighter - Bugfix: Set USS path to correct directory, when opening the directory or file in new browser tab respectively - Added the feature to copy the line content and copy URL link to open a file at a specific line From b8656c129a7d4e828d6c4230c079f8eaeeba0479 Mon Sep 17 00:00:00 2001 From: Zowe Robot Date: Tue, 5 Sep 2023 15:15:46 +0000 Subject: [PATCH 08/20] Update changelog with PR #338 description Signed-off-by: Zowe Robot --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5dfb4d4e..0f1e699d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # Zlux Editor Changelog ## `3.0.1` +- This action making a CHANGELOG note via special syntax from the GitHub PR commit message, like it could automatically update CHANGELOG.md with the message. First job checks if PR body has changelog note or not if it's not there then it asked them to add it and second job is to check if changelog note has been added in changelog.md file or not. (#338) - Bugfix: Added a few rules for JCL syntax highlighter - Bugfix: Set USS path to correct directory, when opening the directory or file in new browser tab respectively - Added the feature to copy the line content and copy URL link to open a file at a specific line From be28a69662f252f91186eb977fe31a53987382a7 Mon Sep 17 00:00:00 2001 From: 1000TurquoisePogs Date: Tue, 5 Sep 2023 14:14:31 -0400 Subject: [PATCH 09/20] Update CHANGELOG.md Signed-off-by: 1000TurquoisePogs --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f1e699d..f706c385 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ # Zlux Editor Changelog ## `3.0.1` -- This action making a CHANGELOG note via special syntax from the GitHub PR commit message, like it could automatically update CHANGELOG.md with the message. First job checks if PR body has changelog note or not if it's not there then it asked them to add it and second job is to check if changelog note has been added in changelog.md file or not. (#338) + - Bugfix: Added a few rules for JCL syntax highlighter - Bugfix: Set USS path to correct directory, when opening the directory or file in new browser tab respectively - Added the feature to copy the line content and copy URL link to open a file at a specific line From 60332913bc34747c9936a143a0357af5fd24cffa Mon Sep 17 00:00:00 2001 From: Himani1519 Date: Fri, 8 Sep 2023 12:16:08 +0530 Subject: [PATCH 10/20] update changelog when its PR Signed-off-by: Himani1519 --- .github/workflows/build_test.yml | 2 ++ CHANGELOG.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml index f657753d..aea07cc3 100644 --- a/.github/workflows/build_test.yml +++ b/.github/workflows/build_test.yml @@ -34,6 +34,7 @@ jobs: github-token: ${{ secrets.GITHUB_TOKEN }} update-changelog: + if: github.event_name == 'pull_request' runs-on: ubuntu-latest outputs: was_updated: ${{ steps.check-change.outputs.change_detected }} @@ -109,6 +110,7 @@ jobs: fi check_changelog: + if: github.event_name == 'pull_request' needs: update-changelog runs-on: ubuntu-latest steps: diff --git a/CHANGELOG.md b/CHANGELOG.md index f706c385..1ce3dba0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ - BugFix: Editor keeps the content of the file, after an opened file is closed. ## `2.9.0` + - Added the feature to update the dataset in the editor - Added the check for e-tag while updating the dataset - Added feature to open a file in new broswer tab @@ -26,6 +27,7 @@ - Added the feature to prompt the user to save the unsaved files before closing ## `2.8.0` + - Bugfix: Fixed error message & phantom tab when opening undefined length dataset - Bugfix: Unable to recalculate the size of monaco-code-container when switching from diff-viewer to code-editor. - Added previously selected content comparison (Diff viewer) From 985b3b1409eeb29350f99a15ec0996312b339fd0 Mon Sep 17 00:00:00 2001 From: zowe-robot Date: Wed, 20 Sep 2023 18:48:52 +0000 Subject: [PATCH 11/20] v2.12.0 Signed-off-by: zowe-robot --- manifest.yaml | 2 +- pluginDefinition.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest.yaml b/manifest.yaml index 67b315cd..47f7ea00 100644 --- a/manifest.yaml +++ b/manifest.yaml @@ -2,7 +2,7 @@ name: editor id: org.zowe.editor # Without the v -version: 2.11.0 +version: 2.12.0 # Human readable component name title: Editor # Human readable component description diff --git a/pluginDefinition.json b/pluginDefinition.json index c49e5c5e..087597f8 100644 --- a/pluginDefinition.json +++ b/pluginDefinition.json @@ -1,7 +1,7 @@ { "identifier": "org.zowe.editor", "apiVersion": "2.0.0", - "pluginVersion": "2.11.0", + "pluginVersion": "2.12.0", "license": "EPL-2.0", "author": "Zowe", "homepage": "https://github.com/zowe/zlux-editor", From 926895f612a520ede3a7f37b902208b4a26801c8 Mon Sep 17 00:00:00 2001 From: Himani1519 Date: Thu, 5 Oct 2023 15:01:42 +0530 Subject: [PATCH 12/20] seperate steps for template comparsion and extract changelog Signed-off-by: Himani1519 --- .github/workflows/build_test.yml | 40 ++++++++++++++++++++++++++++---- CHANGELOG.md | 2 +- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml index aea07cc3..dfec8260 100644 --- a/.github/workflows/build_test.yml +++ b/.github/workflows/build_test.yml @@ -56,25 +56,55 @@ jobs: echo "ERROR: CHANGELOG.md has not been updated." echo "::set-output name=check_commit::false" fi + - name: Compare PR description with template + if: steps.check-changelog.outputs.check_commit == 'false' + run: | + PR_DESCRIPTION="${{ github.event.pull_request.body }}" + echo "$PR_DESCRIPTION" > /tmp/pr_description.txt + echo "PR DESCRIPTION saved to /tmp/pr_description.txt." + cat /tmp/pr_description.txt + + # Save the template content to a file + TEMPLATE_CONTENT=$(sed 's/"//g' .github/pull_request_template.md) + echo "$TEMPLATE_CONTENT" > /tmp/template_content.txt + echo "Template content saved to /tmp/template_content.txt." + cat /tmp/template_content.txt + + # Use diff to compare the two files + if diff -wB /tmp/pr_description.txt /tmp/template_content.txt > /dev/null; then + echo "ERROR: PR description is identical to the template." + exit 1 + else + echo "PR description and template are different." + fi + - name: Extract changelog info if: steps.check-changelog.outputs.check_commit == 'false' id: extract-changelog run: | - PR_DESCRIPTION="${{ github.event.pull_request.body }}" + PR_DESCRIPTION=$(cat /tmp/pr_description.txt) # Check if "changelog:" exists in PR description if echo "$PR_DESCRIPTION" | grep -q "VERSION:" && echo "$PR_DESCRIPTION" | grep -q "CHANGELOG:"; then - # Extract text after "changelog:" + # Extract content after "changelog:" CHANGELOG_TEXT=$(echo $PR_DESCRIPTION | sed -n 's/.*CHANGELOG: \(.*\)/\1/p') + + # Check if extracted CHANGELOG_TEXT is empty or identical to the template content + TEMPLATE_CONTENT=$(cat /tmp/template_content.txt) + if [ -z "$CHANGELOG_TEXT" ] || [ "$CHANGELOG_TEXT" == "$TEMPLATE_CONTENT" ]; then + echo "The changelog information after 'CHANGELOG:' cannot be empty or identical to pull_request_template.md." + exit 1 + fi + # Extract VERSION: from PR description - VERSION=$(echo "$PR_DESCRIPTION" | grep -oP 'VERSION:\s*\K\d+\.\d+\.\d+') + VERSION=$(echo "$PR_DESCRIPTION" | grep -oP 'VERSION:\s*\K\d+\.\d+\.\d+') echo "Extracted changelog: $CHANGELOG_TEXT" echo "::set-output name=changelog::$CHANGELOG_TEXT" echo "::set-output name=version::$VERSION" else - echo -e "No changelog and version information found in PR description please add them.\n Expected Format:\n VERSION:X.XX.X\n CHANGELOG:This is changelog note.\n - To re-run the action, just make a push or commit after updating the PR description or updating the changelog via a manual file changing commit." + echo -e "No changelog and version information found in PR description. Please add them.\nExpected Format:\nVERSION:vX.XX.X\nCHANGELOG:This is changelog note.\nTo re-run the action, just make a push or commit after updating the PR description or updating the changelog via a manual file changing commit." exit 1 fi + - name: Check PR body against changelog if: steps.check-changelog.outputs.check_commit == 'false' run: | diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ce3dba0..1a0743e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# Zlux Editor Changelog +# Zlux Editor Changelog ## `3.0.1` From da2c75dae74cdfb4299ee671830076a72cb05b69 Mon Sep 17 00:00:00 2001 From: Himani1519 Date: Thu, 5 Oct 2023 15:03:05 +0530 Subject: [PATCH 13/20] some fixes Signed-off-by: Himani1519 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a0743e7..1ce3dba0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# Zlux Editor Changelog +# Zlux Editor Changelog ## `3.0.1` From c2b78d4416dc0573bdb7436a590758447aa87f72 Mon Sep 17 00:00:00 2001 From: Himani1519 Date: Mon, 16 Oct 2023 13:10:56 +0530 Subject: [PATCH 14/20] automation to rely upon JS rather than shell Signed-off-by: Himani1519 --- .github/workflows/build_test.yml | 82 ++++++++---------------------- .github/workflows/set-changelog.js | 59 +++++++++++++++++++++ 2 files changed, 80 insertions(+), 61 deletions(-) create mode 100644 .github/workflows/set-changelog.js diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml index dfec8260..46f8b426 100644 --- a/.github/workflows/build_test.yml +++ b/.github/workflows/build_test.yml @@ -58,77 +58,38 @@ jobs: fi - name: Compare PR description with template if: steps.check-changelog.outputs.check_commit == 'false' + env: + PR_DESCRIPTION: ${{ github.event.pull_request.body }} run: | - PR_DESCRIPTION="${{ github.event.pull_request.body }}" - echo "$PR_DESCRIPTION" > /tmp/pr_description.txt - echo "PR DESCRIPTION saved to /tmp/pr_description.txt." - cat /tmp/pr_description.txt - - # Save the template content to a file - TEMPLATE_CONTENT=$(sed 's/"//g' .github/pull_request_template.md) - echo "$TEMPLATE_CONTENT" > /tmp/template_content.txt - echo "Template content saved to /tmp/template_content.txt." - cat /tmp/template_content.txt - - # Use diff to compare the two files - if diff -wB /tmp/pr_description.txt /tmp/template_content.txt > /dev/null; then - echo "ERROR: PR description is identical to the template." - exit 1 - else - echo "PR description and template are different." - fi - - - name: Extract changelog info - if: steps.check-changelog.outputs.check_commit == 'false' - id: extract-changelog - run: | - PR_DESCRIPTION=$(cat /tmp/pr_description.txt) - # Check if "changelog:" exists in PR description - if echo "$PR_DESCRIPTION" | grep -q "VERSION:" && echo "$PR_DESCRIPTION" | grep -q "CHANGELOG:"; then - # Extract content after "changelog:" - CHANGELOG_TEXT=$(echo $PR_DESCRIPTION | sed -n 's/.*CHANGELOG: \(.*\)/\1/p') - - # Check if extracted CHANGELOG_TEXT is empty or identical to the template content - TEMPLATE_CONTENT=$(cat /tmp/template_content.txt) - if [ -z "$CHANGELOG_TEXT" ] || [ "$CHANGELOG_TEXT" == "$TEMPLATE_CONTENT" ]; then - echo "The changelog information after 'CHANGELOG:' cannot be empty or identical to pull_request_template.md." - exit 1 - fi - - # Extract VERSION: from PR description - VERSION=$(echo "$PR_DESCRIPTION" | grep -oP 'VERSION:\s*\K\d+\.\d+\.\d+') - echo "Extracted changelog: $CHANGELOG_TEXT" - echo "::set-output name=changelog::$CHANGELOG_TEXT" - echo "::set-output name=version::$VERSION" - else - echo -e "No changelog and version information found in PR description. Please add them.\nExpected Format:\nVERSION:vX.XX.X\nCHANGELOG:This is changelog note.\nTo re-run the action, just make a push or commit after updating the PR description or updating the changelog via a manual file changing commit." + # Safely print the PR description using Node.js + + node -e "const fs=require('fs'); fs.writeFileSync('/tmp/pr_description.txt', process.env.PR_DESCRIPTION);" + # Use diff to compare the two files + if diff -wB /tmp/pr_description.txt .github/pull_request_template.md > /dev/null; then + echo "ERROR: PR description is identical to the template." exit 1 + else + echo "PR description and template are different." fi - name: Check PR body against changelog if: steps.check-changelog.outputs.check_commit == 'false' + id: extract-changelog run: | - ESCAPED_CHANGELOG="${{ steps.extract-changelog.outputs.changelog }}" - ESCAPED_CHANGELOG=$(echo "$ESCAPED_CHANGELOG" | sed "s/'/\\\\'/g") - VERSION="${{ steps.extract-changelog.outputs.version }}" - - if ! grep -Fq "$ESCAPED_CHANGELOG" CHANGELOG.md; then - # Check if version exists in CHANGELOG.md - if grep -q "^## \`$VERSION\`" CHANGELOG.md; then - # Append PR description to existing version - sed -i "/^## \`$VERSION\`/a - $ESCAPED_CHANGELOG (#${{ github.event.pull_request.number }})" CHANGELOG.md - else - # Append new version and PR description - ANCHOR_LINE=$(awk '/# Zlux Editor Changelog/ {print NR}' CHANGELOG.md) - sed -i "$ANCHOR_LINE a\\ - \n## \`$VERSION\`\n- $ESCAPED_CHANGELOG (#${{ github.event.pull_request.number }})\n" CHANGELOG.md - fi + result=$(node .github/workflows/set-changelog.js ${{ github.event.pull_request.number }}) + if [ "$result" = "Success" ]; then git config --global user.email "zowe-robot@users.noreply.github.com" git config --global user.name "Zowe Robot" git add CHANGELOG.md git commit -s -m "Update changelog with PR #${{ github.event.pull_request.number }} description" git push + echo "Updated CHANGELOG from description" + else + echo $result + echo -e "No changelog and version information found in PR description. Please add them.\nExpected Format:\nVERSION:X.XX.X\nCHANGELOG:This is changelog note.\nTo re-run the action, just make a push or commit after updating the PR description or updating the changelog via a manual file changing commit." + exit 1 fi + - name: check for changes id: check-change run: | @@ -137,7 +98,7 @@ jobs: echo "::set-output name=change_detected::false" else echo "::set-output name=change_detected::true" - fi + fi check_changelog: if: github.event_name == 'pull_request' @@ -154,8 +115,7 @@ jobs: exit 1 else echo "changelog was updated successfully." - fi - + fi build: runs-on: ubuntu-latest needs: check-permission diff --git a/.github/workflows/set-changelog.js b/.github/workflows/set-changelog.js new file mode 100644 index 00000000..fefb0db2 --- /dev/null +++ b/.github/workflows/set-changelog.js @@ -0,0 +1,59 @@ +/* +This program and the accompanying materials are +made available under the terms of the Eclipse Public License v2.0 which accompanies +this distribution, and is available at https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 + +Copyright Contributors to the Zowe Project. +*/ + +const fs = require('fs'); + +// Must run with args: PR_NUMBER +const PR_NUMBER = process.argv[2]; +const description = fs.readFileSync('/tmp/pr_description.txt', 'utf8'); +let changelogMsg, version; + +if (description.includes('VERSION:') && description.includes('CHANGELOG:')) { + let lines = description.split('\n'); + lines.forEach((line) => { + if (line.startsWith('CHANGELOG:')) { + changelogMsg = line.substring('CHANGELOG:'.length).trim(); + } else if (line.startsWith('VERSION:')) { + version = line.substring('VERSION:'.length).trim(); + } + }); + + if (changelogMsg && version) { + let changelog = fs.readFileSync('CHANGELOG.md', 'utf8'); + let changelogLines = changelog.split('\n'); + let versionIndex = -1; + let anchorIndex = 0; + for (let i = 0; i < changelogLines.length; i++) { + if (changelogLines[i].includes('# Zlux Editor Changelog')) { + anchorIndex = i; + } else if (changelogLines[i].startsWith('## ' + version)) { // Removed "v" prefix + versionIndex = i; + break; + } + } + if (versionIndex != -1) { + changelogLines.splice(versionIndex + 2, 0, `- ${changelogMsg} (#${PR_NUMBER})`); + } else { + changelogLines.splice(anchorIndex + 1, 0, `\n## \`${version}\`\n- ${changelogMsg} (#${PR_NUMBER})`); + } + const newChangelog = changelogLines.join('\n'); + fs.writeFileSync('CHANGELOG.md', newChangelog); + console.log('Success'); + } else { + if (!changelogMsg) { + console.log('Missing CHANGELOG'); + } + if (!version) { + console.log('Missing VERSION'); + } + } +} else { + console.log('Missing CHANGELOG or VERSION'); +} \ No newline at end of file From 9cee23ecf78797a0522fd36bda8025e7431cbb0c Mon Sep 17 00:00:00 2001 From: zowe-robot Date: Fri, 3 Nov 2023 21:19:18 +0000 Subject: [PATCH 15/20] v2.13.0 Signed-off-by: zowe-robot --- manifest.yaml | 2 +- pluginDefinition.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest.yaml b/manifest.yaml index 47f7ea00..32cdc31a 100644 --- a/manifest.yaml +++ b/manifest.yaml @@ -2,7 +2,7 @@ name: editor id: org.zowe.editor # Without the v -version: 2.12.0 +version: 2.13.0 # Human readable component name title: Editor # Human readable component description diff --git a/pluginDefinition.json b/pluginDefinition.json index 087597f8..53852f73 100644 --- a/pluginDefinition.json +++ b/pluginDefinition.json @@ -1,7 +1,7 @@ { "identifier": "org.zowe.editor", "apiVersion": "2.0.0", - "pluginVersion": "2.12.0", + "pluginVersion": "2.13.0", "license": "EPL-2.0", "author": "Zowe", "homepage": "https://github.com/zowe/zlux-editor", From 8fa877137ac4569c51e5e3f145578f83a8447d1e Mon Sep 17 00:00:00 2001 From: zowe-robot Date: Mon, 18 Dec 2023 15:46:04 +0000 Subject: [PATCH 16/20] v2.14.0 Signed-off-by: zowe-robot --- manifest.yaml | 2 +- pluginDefinition.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest.yaml b/manifest.yaml index 32cdc31a..b5aa40cf 100644 --- a/manifest.yaml +++ b/manifest.yaml @@ -2,7 +2,7 @@ name: editor id: org.zowe.editor # Without the v -version: 2.13.0 +version: 2.14.0 # Human readable component name title: Editor # Human readable component description diff --git a/pluginDefinition.json b/pluginDefinition.json index 53852f73..ea00a6b2 100644 --- a/pluginDefinition.json +++ b/pluginDefinition.json @@ -1,7 +1,7 @@ { "identifier": "org.zowe.editor", "apiVersion": "2.0.0", - "pluginVersion": "2.13.0", + "pluginVersion": "2.14.0", "license": "EPL-2.0", "author": "Zowe", "homepage": "https://github.com/zowe/zlux-editor", From fc1ed0ec883af3252cf6ac66bc1127ab7023ef59 Mon Sep 17 00:00:00 2001 From: zowe-robot Date: Tue, 6 Feb 2024 15:07:24 +0000 Subject: [PATCH 17/20] v2.15.0 Signed-off-by: zowe-robot --- manifest.yaml | 2 +- pluginDefinition.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest.yaml b/manifest.yaml index b5aa40cf..4d4609e7 100644 --- a/manifest.yaml +++ b/manifest.yaml @@ -2,7 +2,7 @@ name: editor id: org.zowe.editor # Without the v -version: 2.14.0 +version: 2.15.0 # Human readable component name title: Editor # Human readable component description diff --git a/pluginDefinition.json b/pluginDefinition.json index ea00a6b2..a3352fa8 100644 --- a/pluginDefinition.json +++ b/pluginDefinition.json @@ -1,7 +1,7 @@ { "identifier": "org.zowe.editor", "apiVersion": "2.0.0", - "pluginVersion": "2.14.0", + "pluginVersion": "2.15.0", "license": "EPL-2.0", "author": "Zowe", "homepage": "https://github.com/zowe/zlux-editor", From 2d6fca77a846c11aa8940dc7594571ce55f2b172 Mon Sep 17 00:00:00 2001 From: zowe-robot Date: Wed, 17 Apr 2024 13:31:55 +0000 Subject: [PATCH 18/20] v2.16.0 Signed-off-by: zowe-robot --- manifest.yaml | 2 +- pluginDefinition.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest.yaml b/manifest.yaml index 4d4609e7..b017e789 100644 --- a/manifest.yaml +++ b/manifest.yaml @@ -2,7 +2,7 @@ name: editor id: org.zowe.editor # Without the v -version: 2.15.0 +version: 2.16.0 # Human readable component name title: Editor # Human readable component description diff --git a/pluginDefinition.json b/pluginDefinition.json index a3352fa8..afdb72a5 100644 --- a/pluginDefinition.json +++ b/pluginDefinition.json @@ -1,7 +1,7 @@ { "identifier": "org.zowe.editor", "apiVersion": "2.0.0", - "pluginVersion": "2.15.0", + "pluginVersion": "2.16.0", "license": "EPL-2.0", "author": "Zowe", "homepage": "https://github.com/zowe/zlux-editor", From 88e2e9dd36032159975f41ac451d9d4ffc0a55a9 Mon Sep 17 00:00:00 2001 From: zowe-robot Date: Mon, 1 Jul 2024 14:09:43 +0000 Subject: [PATCH 19/20] v2.17.0 Signed-off-by: zowe-robot --- manifest.yaml | 2 +- pluginDefinition.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest.yaml b/manifest.yaml index b017e789..7e5ecc1b 100644 --- a/manifest.yaml +++ b/manifest.yaml @@ -2,7 +2,7 @@ name: editor id: org.zowe.editor # Without the v -version: 2.16.0 +version: 2.17.0 # Human readable component name title: Editor # Human readable component description diff --git a/pluginDefinition.json b/pluginDefinition.json index afdb72a5..92f0b286 100644 --- a/pluginDefinition.json +++ b/pluginDefinition.json @@ -1,7 +1,7 @@ { "identifier": "org.zowe.editor", "apiVersion": "2.0.0", - "pluginVersion": "2.16.0", + "pluginVersion": "2.17.0", "license": "EPL-2.0", "author": "Zowe", "homepage": "https://github.com/zowe/zlux-editor", From e1807c1a463fce44e3fe55beb2cb44efdcc8d42c Mon Sep 17 00:00:00 2001 From: zowe-robot Date: Wed, 24 Jul 2024 14:36:33 +0000 Subject: [PATCH 20/20] v2.18.0 Signed-off-by: zowe-robot --- manifest.yaml | 2 +- pluginDefinition.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest.yaml b/manifest.yaml index 7e5ecc1b..504a49e1 100644 --- a/manifest.yaml +++ b/manifest.yaml @@ -2,7 +2,7 @@ name: editor id: org.zowe.editor # Without the v -version: 2.17.0 +version: 2.18.0 # Human readable component name title: Editor # Human readable component description diff --git a/pluginDefinition.json b/pluginDefinition.json index 92f0b286..8e6cc7ea 100644 --- a/pluginDefinition.json +++ b/pluginDefinition.json @@ -1,7 +1,7 @@ { "identifier": "org.zowe.editor", "apiVersion": "2.0.0", - "pluginVersion": "2.17.0", + "pluginVersion": "2.18.0", "license": "EPL-2.0", "author": "Zowe", "homepage": "https://github.com/zowe/zlux-editor",