diff --git a/.github/workflows/updatesource.yml b/.github/workflows/updatesource.yml deleted file mode 100644 index eb11ca4..0000000 --- a/.github/workflows/updatesource.yml +++ /dev/null @@ -1,104 +0,0 @@ -name: Update StikJIT Source - -on: - release: - types: [published] - workflow_dispatch: - -# Add permissions block to ensure the workflow can push changes -permissions: - contents: write - -jobs: - update-source: - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v3 - with: - token: ${{ secrets.GITHUB_TOKEN }} - repository: 0-Blu/StikJIT - ref: main - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: '3.x' - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install requests - - - name: Record job start time - id: job_start_time - run: echo "start_time=$(date +%s)" >> $GITHUB_OUTPUT - - - name: Debug repository information - run: | - echo "Repository: 0-Blu/StikJIT" - echo "Event name: $GITHUB_EVENT_NAME" - echo "Current directory: $(pwd)" - echo "Repository contents:" - ls -la - - - name: Update StikJIT source - id: update_source - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - # Configure git - git config --global user.name 'GitHub Action' - git config --global user.email 'action@github.com' - - # Run the update script - python update_json.py - - # Check for changes and commit if needed - git add repo.json - if git diff --staged --quiet; then - echo "changes=false" >> $GITHUB_OUTPUT - echo "No changes detected in repo.json" - else - echo "Changes detected in repo.json:" - git diff --staged - git commit -m "Updated source with latest StikJIT release" - # Push to main branch of original repository - git push origin main - echo "changes=true" >> $GITHUB_OUTPUT - fi - - - name: Calculate job duration - id: duration - if: always() - run: | - end_time=$(date +%s) - duration=$((end_time - ${{ steps.job_start_time.outputs.start_time }})) - echo "duration=$duration seconds" >> $GITHUB_OUTPUT - - - name: Create job summary - run: | - if [[ "${{ steps.update_source.outputs.changes }}" == "true" ]]; then - echo "## Update StikJIT Source Summary 🚀" >> $GITHUB_STEP_SUMMARY - echo "✅ Changes Detected and Pushed" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "The repo.json file has been updated with the latest release information." >> $GITHUB_STEP_SUMMARY - else - echo "## Update StikJIT Source Summary 🚀" >> $GITHUB_STEP_SUMMARY - echo "🔍 No Changes Detected" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "The repo.json file is up to date. No changes were necessary." >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "This could be because:" >> $GITHUB_STEP_SUMMARY - echo "- The release version is already in the repo.json file" >> $GITHUB_STEP_SUMMARY - echo "- The release doesn't contain an IPA file" >> $GITHUB_STEP_SUMMARY - echo "- The release tag doesn't match the expected version format" >> $GITHUB_STEP_SUMMARY - fi - echo "" >> $GITHUB_STEP_SUMMARY - echo "🕐 Execution Time" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "This job took ${{ steps.duration.outputs.duration }} to complete." >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "📆 Next Scheduled Run" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "The next scheduled run will be triggered when a new release is published." >> $GITHUB_STEP_SUMMARY \ No newline at end of file diff --git a/repo.json b/repo.json index 670ae4b..d1c605f 100644 --- a/repo.json +++ b/repo.json @@ -6,7 +6,7 @@ "headerURL": "https://github.com/0-Blu/StikJIT/blob/main/assets/StikJIT.png?raw=true", "tintColor": "#293B45", "featuredApps": [ - "com.stik.sj" + "com.stik.sj" ], "apps": [ { @@ -23,23 +23,15 @@ "https://github.com/0-Blu/StikJIT/blob/main/assets/views/dark/Settings.PNG?raw=true" ], "versions": [ - { - "version": "1.3.2", - "date": "2025-04-15", - "localizedDescription": "testing release", - "downloadURL": "https://github.com/neoarz/StikJIT/releases/download/1.3.2/StikJIT_1.3.2.ipa", - "size": 6211010, - "minOSVersion": "17.4" - }, - { + { "version": "1.3.1", - "date": "2025-04-14", - "localizedDescription": "What's Changed\r\n* Fix the no wifi error by @neoarz in https://github.com/0-Blu/StikJIT/pull/122\r\n* Make the -9 error more clear by @neoarz in https://github.com/0-Blu/StikJIT/pull/123\r\n* Fixes the -17 error (hopefully)\r\nFull Changelog: https://github.com/0-Blu/StikJIT/compare/1.3...1.3.1", - "downloadURL": "https://github.com/0-Blu/StikJIT/releases/download/1.3.1/StikJIT_1.3.1.ipa", + "date": "2025-04-14T12:00:00-05:00", "size": 6211010, + "downloadURL": "https://github.com/0-Blu/StikJIT/releases/download/1.3.1/StikJIT_1.3.1.ipa", + "localizedDescription": "Bug fixes - no wifi error, make -9 error more clear, fix -17 error", "minOSVersion": "17.4" - }, - { + }, + { "version": "1.3", "date": "2025-04-12", "size": 6210215, @@ -69,38 +61,13 @@ } ], "appPermissions": { - "entitlements": [], - "privacy": {} - }, - "version": "1.3.2", - "versionDate": "2025-04-15", - "versionDescription": "testing release", - "downloadURL": "https://github.com/neoarz/StikJIT/releases/download/1.3.2/StikJIT_1.3.2.ipa", - "size": 6211010 + "entitlements": [ + ], + "privacy": { + } + } } ], "news": [ - { - "appID": "com.stik.sj", - "caption": "Update of StikJIT just got released!", - "date": "2025-04-14T12:20:23Z", - "identifier": "release-1.3.1", - "imageURL": "https://github.com/0-Blu/StikJIT/blob/main/assets/StikJIT.png?raw=true", - "notify": true, - "tintColor": "#293B45", - "title": "1.3.1 - StikJIT 14/04/25", - "url": "https://github.com/0-Blu/StikJIT/releases/tag/1.3.1" - }, - { - "appID": "com.stik.sj", - "caption": "Update of StikJIT just got released!", - "date": "2025-04-15T01:18:49Z", - "identifier": "release-1.3.2", - "imageURL": "https://github.com/0-Blu/StikJIT/blob/main/assets/StikJIT.png?raw=true", - "notify": true, - "tintColor": "#293B45", - "title": "1.3.2 - StikJIT 15/04/25", - "url": "https://github.com/0-Blu/StikJIT/releases/tag/1.3.2" - } ] } \ No newline at end of file diff --git a/update_json.py b/update_json.py deleted file mode 100644 index 463a8b8..0000000 --- a/update_json.py +++ /dev/null @@ -1,190 +0,0 @@ -import json -import re -import requests -import os -import sys -from datetime import datetime - -def prepare_description(text): - text = re.sub('<[^<]+?>', '', text) # Remove HTML tags - text = re.sub(r'#{1,6}\s?', '', text) # Remove markdown header tags - text = re.sub(r'\*{2}', '', text) # Remove all occurrences of two consecutive asterisks - text = re.sub(r'(?<=\r|\n)-', '•', text) # Only replace - with • if it is preceded by \r or \n - text = re.sub(r'`', '"', text) # Replace ` with " - text = re.sub(r'\r\n\r\n', '\r \n', text) # Replace \r\n\r\n with \r \n (avoid incorrect display of the description regarding paragraphs) - return text - -def fetch_latest_release(repo_url): - api_url = f"https://api.github.com/repos/{repo_url}/releases" - headers = { - "Accept": "application/vnd.github+json", - } - try: - print(f"Fetching releases from: {api_url}") - response = requests.get(api_url, headers=headers) - response.raise_for_status() - releases = response.json() - if not releases: - print("No releases found in the repository") - return None - print(f"Found {len(releases)} releases") - print(f"Latest release: {releases[0]['tag_name']}") - return releases - except requests.RequestException as e: - print(f"Error fetching releases: {e}") - return None - -def get_file_size(url): - try: - response = requests.head(url) - response.raise_for_status() - return int(response.headers.get('Content-Length', 0)) - except requests.RequestException as e: - print(f"Error getting file size: {e}") - return 0 - -def update_json_file(json_file, latest_release): - if isinstance(latest_release, list) and latest_release: - latest_release = latest_release[0] - else: - print("Error getting latest release") - return False - - try: - print(f"Reading JSON file: {json_file}") - with open(json_file, "r") as file: - data = json.load(file) - except json.JSONDecodeError as e: - print(f"Error reading JSON file: {e}") - return False - except FileNotFoundError: - print(f"File {json_file} not found") - return False - - app = data["apps"][0] - current_version = app.get("version", "unknown") - print(f"Current version in repo.json: {current_version}") - - full_version = latest_release["tag_name"] - tag = latest_release["tag_name"] - version_match = re.search(r"(\d+\.\d+\.\d+)", full_version) - if not version_match: - print(f"Could not extract version from tag: {full_version}") - return False - - version = version_match.group(1) - print(f"Latest release version: {version}") - - # Check if the version is already in the versions list - existing_versions = [v["version"] for v in app["versions"]] - print(f"Existing versions: {existing_versions}") - - if version in existing_versions and version == current_version: - print(f"Version {version} already exists and is current, no update needed") - return False - - version_date = latest_release["published_at"] - date_obj = datetime.strptime(version_date, "%Y-%m-%dT%H:%M:%SZ") - version_date = date_obj.strftime("%Y-%m-%d") - - description = latest_release["body"] or "No description provided" - description = prepare_description(description) - - assets = latest_release.get("assets", []) - print(f"Found {len(assets)} assets in the release") - for asset in assets: - print(f"Asset: {asset['name']}") - - download_url = None - size = None - for asset in assets: - if asset["name"].endswith(".ipa"): - download_url = asset["browser_download_url"] - size = asset["size"] - print(f"Found IPA file: {asset['name']}, size: {size}") - break - - if download_url is None or size is None: - print("Error: IPA file not found in release assets.") - return False - - version_entry = { - "version": version, - "date": version_date, - "localizedDescription": description, - "downloadURL": download_url, - "size": size, - "minOSVersion": "17.4" # Adding minOSVersion for StikJIT - } - - # Always update with the latest version - print(f"Adding new version entry: {version}") - app["versions"].insert(0, version_entry) - - print(f"Updating app with version {version}") - app.update({ - "version": version, - "versionDate": version_date, - "versionDescription": description, - "downloadURL": download_url, - "size": size - }) - - if "news" not in data: - data["news"] = [] - - news_identifier = f"release-{full_version}" - date_string = date_obj.strftime("%d/%m/%y") - news_entry = { - "appID": "com.stik.sj", - "caption": f"Update of StikJIT just got released!", - "date": latest_release["published_at"], - "identifier": news_identifier, - "imageURL": "https://github.com/0-Blu/StikJIT/blob/main/assets/StikJIT.png?raw=true", - "notify": True, - "tintColor": "#293B45", - "title": f"{full_version} - StikJIT {date_string}", - "url": f"https://github.com/0-Blu/StikJIT/releases/tag/{tag}" - } - - news_entry_exists = any(item["identifier"] == news_identifier for item in data["news"]) - if not news_entry_exists: - print(f"Adding news entry for version {full_version}") - data["news"].append(news_entry) - else: - print(f"News entry for version {full_version} already exists") - - try: - print(f"Writing updated JSON to {json_file}") - with open(json_file, "w") as file: - json.dump(data, file, indent=2) - print("JSON file updated successfully.") - return True - except IOError as e: - print(f"Error writing to JSON file: {e}") - return False - -def main(): - # Use the original repository instead of fork - repo_url = "0-Blu/StikJIT" - json_file = "repo.json" - - print(f"Using repository: {repo_url}") - print(f"Updating file: {json_file}") - - try: - fetched_data_latest = fetch_latest_release(repo_url) - if fetched_data_latest: - success = update_json_file(json_file, fetched_data_latest) - if not success: - print("Failed to update JSON file or no changes were needed") - sys.exit(0) # Exit with success code since no changes needed is not an error - else: - print("No releases found to update") - sys.exit(1) - except Exception as e: - print(f"An error occurred: {e}") - sys.exit(1) - -if __name__ == "__main__": - main() \ No newline at end of file