diff --git a/.github/workflows/createchangelog.yml b/.github/workflows/createchangelog.yml deleted file mode 100644 index 65028a43..00000000 --- a/.github/workflows/createchangelog.yml +++ /dev/null @@ -1,117 +0,0 @@ -name: Update changelog.md on Release - -on: - release: - types: [published, created, edited, deleted] - workflow_dispatch: - inputs: - reason: - description: 'Reason for manual trigger' - required: false - default: 'Manual update' - -jobs: - update-file: - runs-on: ubuntu-latest - - steps: - - name: Checkout Repository - uses: actions/checkout@v4 - - - name: Get all releases and update changelog.md file - run: | - # Initialize some values - changelog_path="docs/changelog.md" - gh release list --exclude-drafts --json tagName,name,isLatest,isPrerelease --limit 1000000 > releases.txt - declare -r number_of_releases=$(cat releases.txt | grep -Po '"tagName"' | wc --lines) - - # Clear the contents of changelog file - echo "" > $changelog_path - - # Write some Initial Content to changelog file - echo "# Changelog" >> $changelog_path - echo "" >> $changelog_path - echo "WinUtil change log received from GitHub Releases, it's autogenerated using GitHub Actions." >> $changelog_path - echo "" >> $changelog_path - echo "> [!WARNING]" >> $changelog_path - echo "> This file **SHOULD NOT** be edited directly, any PRs that tries changing it directly will either be requested on not changing it, or it'll get rejected." >> $changelog_path - echo "" >> $changelog_path - - # Make array for git tag names - tag_arr=() - cat releases.txt | grep -Po '"tagName":\s*.*?[^\\]"' | awk -F ':' '{print $2}' | sed s/\"//g > tags_list.txt - while read -r line; do - tag_arr+=("$line") - done < tags_list.txt - - # Make array for releases names - name_arr=() - cat releases.txt | grep -Po '"name":\s*.*?[^\\]"' | awk -F ':' '{print $2}' | sed s/\"//g > releases_names_list.txt - while read -r line; do - name_arr+=("$line") - done < releases_names_list.txt - - # Make array for isPrerelease - isprerelease_arr=() - cat releases.txt | grep -Po '"isPrerelease":\s*(false|true)' | awk -F ':' '{print $2}' | sed s/\"//g > isprerelease_list.txt - while read -r line; do - isprerelease_arr+=("$line") - done < isprerelease_list.txt - - # Make array for isLatest - islatest_arr=() - cat releases.txt | grep -Po '"isLatest":\s*(false|true)' | awk -F ':' '{print $2}' | sed s/\"//g > islatest_list.txt - while read -r line; do - islatest_arr+=("$line") - done < islatest_list.txt - - # Debug Output - echo "Tag Array: " ${tag_arr[@]} - echo "Array Length: " ${#tag_arr[@]} - echo "" - - echo "Release Name Array: " ${name_arr[@]} - echo "Array Length: " ${#name_arr[@]} - echo "" - - echo "IsPrerelease Array: " ${isprerelease_arr[@]} - echo "Array Length: " ${#isprerelease_arr[@]} - echo "" - - echo "IsLatest Array: " ${islatest_arr[@]} - echo "Array Length: " ${#islatest_arr[@]} - echo "" - - # Exit when this impossible condition is met (just to be safe) - if [[ ! (${#tag_arr[@]}==${#name_arr[@]} && ${#tag_arr[@]}==${#isprerelease_arr[@]} && ${#tag_arr[@]}==${#islatest_arr[@]} ) ]] ; then - echo "Impossible Condition has been met, the Name Array Length Does Not match Tag Array Length, exiting..." - exit 1 - fi - - # Main loop that does the heavy lifting (Content Generation) - for (( i=0; i<${number_of_releases}; i++ )); - do - # The Variables to use on each iteration - tag=${tag_arr[$i]} - name=${name_arr[$i]} - isprerelease=${isprerelease_arr[$i]} - islatest=${islatest_arr[$i]} - body=$(gh release view "$tag" --json body --jq .body) || { echo "Failed to fetch release body for $tag"; exit 1; } - - # The generation of changelog file contents - echo "# $name" >> $changelog_path - echo "" >> $changelog_path - echo "$body" >> $changelog_path - echo "" >> $changelog_path - done - env: - GH_TOKEN: ${{ github.token }} - - - name: Commit and Push Changes - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - git config --global user.name 'github-actions[bot]' - git config --global user.email 'github-actions[bot]@users.noreply.github.com' - git add docs/changelog.md - git diff --quiet && git diff --staged --quiet || (git commit -m "Update changelog.md with all releases" && git push)