This commit is contained in:
neoarz 2025-04-14 21:55:11 -04:00
parent 5519ece7ad
commit 06f16e39dd
3 changed files with 12 additions and 339 deletions

View file

@ -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

View file

@ -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"
}
]
}

View file

@ -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()