diff --git a/.github/workflows/update_versions.yml b/.github/workflows/update_versions.yml index 511a924..ce90ed8 100644 --- a/.github/workflows/update_versions.yml +++ b/.github/workflows/update_versions.yml @@ -17,19 +17,17 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v4 with: token: ${{ secrets.PERSONAL_TOKEN }} - name: Set up Python - uses: actions/setup-python@v6 + uses: actions/setup-python@v5 with: python-version: 3.12.2 - - name: Update versions.json - run: | - echo '${{ github.event.inputs.datajson }}' > temp_data.json - python3 update_versions.py + - name: Update version in versions.json + run: python3 update_version.py '${{ github.event.inputs.datajson }}' - name: Commit changes run: | diff --git a/update_version.py b/update_version.py new file mode 100644 index 0000000..2772724 --- /dev/null +++ b/update_version.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 +import json +import re +import sys + + +def update_version(data_json: str, version_file: str = "versions.json") -> bool: + try: + data = json.loads(data_json) + + with open(version_file, 'r', encoding='utf-8') as f: + file_data = json.load(f) + + version_key = list(data.keys())[0] + file_data[version_key] = data[version_key] + + sorted_data = dict( + sorted( + file_data.items(), + key=lambda x: [ + int(part) if part.isdigit() else part + for part in re.split(r'(\d+)', x[0]) + ], + reverse=True + ) + ) + + with open(version_file, 'w', encoding='utf-8') as f: + json.dump(sorted_data, f, indent=2) + + return True + + except: + return False + + +def main(): + if len(sys.argv) < 2: + sys.exit(1) + + data_json = sys.argv[1] + version_file = sys.argv[2] if len(sys.argv) > 2 else "versions.json" + + success = update_version(data_json, version_file) + sys.exit(0 if success else 1) + + +if __name__ == "__main__": + main() diff --git a/update_versions.py b/update_versions.py deleted file mode 100644 index 885ac14..0000000 --- a/update_versions.py +++ /dev/null @@ -1,23 +0,0 @@ -import json -import re -with open('temp_data.json', 'r') as f: - data = json.load(f) - -with open('versions.json', 'r') as f: - file_data = json.load(f) - -key = list(data.keys())[0] -file_data[key] = data[key] - -file_data = dict( - sorted( - file_data.items(), - key=lambda x: [ - int(part) if part.isdigit() else part for part in re.split(r'(\d+)', x[0]) - ], - reverse=True - ) -) - -with open('versions.json', 'w') as f: - json.dump(file_data, f, indent=2) \ No newline at end of file