From 281459cac16b6a60cf88cb4f020b56b78266db00 Mon Sep 17 00:00:00 2001 From: Loup-Garou911XD Date: Sat, 20 Apr 2024 04:26:43 +0530 Subject: [PATCH 1/2] Updated actiont to run on commit --- .github/workflows/release.yml | 68 ++++++++++++++++++++--------------- test/get_changes.py | 7 ++-- test/get_latest.py | 12 +++++++ test/version_is_lower.py | 31 ++++++++++++++++ 4 files changed, 86 insertions(+), 32 deletions(-) create mode 100644 test/get_latest.py create mode 100644 test/version_is_lower.py diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 32a39fb2..2dffa345 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -2,44 +2,56 @@ name: Create Release on: push: - tags: - - v1.* + paths: + - index.json jobs: build: name: Create Release runs-on: ubuntu-latest steps: - - name: Checkout code - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - - run: | - output=$(python3 test/get_changes.py "${{ github.ref }}") - echo "::set-output name=changelog::$output" - id: set_changelog - - name: Create Release - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token + + - name: 'Get Previous tag' + uses: oprypin/find-latest-tag@v1.1.2 + with: + repository: ${{ github.repository }} + releases-only: true # We know that all relevant tags have a GitHub release for them. + id: previoustag + + - name: set_variables + run: | + output1=$(python3 test/get_latest.py) + output2=$(python3 test/get_changes.py "$output1") + output3=$(python3 test/version_is_lower.py ${{ steps.previoustag.outputs.tag }}) + echo "latestVersion=$output1" >> $GITHUB_OUTPUT + echo "changelog=$output2" >> $GITHUB_OUTPUT + echo "shouldRun=$output3" >> $GITHUB_OUTPUT + id: set_variables + + + + - name: Bump version and push tag + if: ${{ steps.set_variables.outputs.shouldRun == '1' }} + id: tag_version + uses: mathieudutour/github-tag-action@v6.2 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + custom_tag: | + ${{ steps.set_variables.outputs.latestVersion }} + + - name: Create release + if: ${{ steps.tag_version.outputs.new_tag }} + uses: ncipollo/release-action@v1 with: - tag_name: ${{ github.ref }} - release_name: ${{ github.ref }} + tag: ${{ steps.tag_version.outputs.new_tag }} + name: Release ${{ steps.tag_version.outputs.new_tag }} + artifacts: "plugin_manager.py" body: | ## Changelog - ${{ steps.set_changelog.outputs.changelog }} - draft: false - prerelease: false\ - - name: Upload Release Asset - id: upload-release-asset - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps - asset_path: ./plugin_manager.py - asset_name: plugin_manager.py - asset_content_type: application \ No newline at end of file + ${{ steps.set_variables.outputs.changelog }} + \ No newline at end of file diff --git a/test/get_changes.py b/test/get_changes.py index 5e185613..861a2a56 100644 --- a/test/get_changes.py +++ b/test/get_changes.py @@ -2,7 +2,7 @@ import sys -def get_version_changelog(version): +def get_version_changelog(version: str): with open('CHANGELOG.md', 'r') as file: content = file.read() pattern = rf"### {version} \(\d\d-\d\d-\d{{4}}\)\n(.*?)(?=### \d+\.\d+\.\d+|\Z)" @@ -15,10 +15,9 @@ def get_version_changelog(version): if __name__ == "__main__": if len(sys.argv) < 2: - print("Usage: python3 script.py version_number") + print(f"Usage: python3 {__file__.split('/')[-1]} version_number") sys.exit(1) - version = sys.argv[1].replace("refs/tags/", "") - version = version.replace("v", "", 1) + version = sys.argv[1].replace("v", "", 1) changelog = get_version_changelog(version) print(changelog) diff --git a/test/get_latest.py b/test/get_latest.py new file mode 100644 index 00000000..31b1f40d --- /dev/null +++ b/test/get_latest.py @@ -0,0 +1,12 @@ +import json + + +def get_latest(): + with open('index.json', 'r') as file: + content = json.loads(file.read()) + latest_version = list(content["versions"].keys())[0] + return latest_version + + +if __name__ == "__main__": + print(get_latest()) diff --git a/test/version_is_lower.py b/test/version_is_lower.py new file mode 100644 index 00000000..43f33502 --- /dev/null +++ b/test/version_is_lower.py @@ -0,0 +1,31 @@ +import sys +from get_latest import get_latest + + +def semantic_to_str(semantic_version: str): + out = "" + for i in (semantic_version.split(".")): + if len(i) == 1: + out += "00"+i + if len(i) == 2: + out += "0"+i + return out + + +def version_is_lower(version: str): + latest = semantic_to_str(get_latest()) + version = semantic_to_str(version) + if latest > version: + return True + else: + return False + + +if __name__ == "__main__": + if len(sys.argv) < 2: + print(f"Usage: python3 {__file__.split('/')[-1]} version_number") + sys.exit(1) + + version = sys.argv[1].replace("v", "", 1) + out = version_is_lower(version) + print(int(out)) From 9fcf0386c5399e6c3f2efea10e810e652c91d483 Mon Sep 17 00:00:00 2001 From: Loup-Garou911XD Date: Sat, 20 Apr 2024 09:06:50 +0530 Subject: [PATCH 2/2] added documentation --- test/get_changes.py | 1 + test/get_latest.py | 1 + test/version_is_lower.py | 3 +++ 3 files changed, 5 insertions(+) diff --git a/test/get_changes.py b/test/get_changes.py index 861a2a56..2e6701a8 100644 --- a/test/get_changes.py +++ b/test/get_changes.py @@ -3,6 +3,7 @@ def get_version_changelog(version: str): + """Get changelog entry from CHANGELOG.md for given version""" with open('CHANGELOG.md', 'r') as file: content = file.read() pattern = rf"### {version} \(\d\d-\d\d-\d{{4}}\)\n(.*?)(?=### \d+\.\d+\.\d+|\Z)" diff --git a/test/get_latest.py b/test/get_latest.py index 31b1f40d..04390685 100644 --- a/test/get_latest.py +++ b/test/get_latest.py @@ -2,6 +2,7 @@ def get_latest(): + """Get latest version entry from index.json""" with open('index.json', 'r') as file: content = json.loads(file.read()) latest_version = list(content["versions"].keys())[0] diff --git a/test/version_is_lower.py b/test/version_is_lower.py index 43f33502..6f65b521 100644 --- a/test/version_is_lower.py +++ b/test/version_is_lower.py @@ -3,6 +3,8 @@ def semantic_to_str(semantic_version: str): + """Convert version in the form of v1.2.3 to 001002003 + for comparing 2 version in semantic versioning format""" out = "" for i in (semantic_version.split(".")): if len(i) == 1: @@ -13,6 +15,7 @@ def semantic_to_str(semantic_version: str): def version_is_lower(version: str): + """Check if given version is lower than the latest entry in index.json""" latest = semantic_to_str(get_latest()) version = semantic_to_str(version) if latest > version: