diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml new file mode 100644 index 0000000..3acb4c5 --- /dev/null +++ b/.github/workflows/build-and-release.yml @@ -0,0 +1,139 @@ +name: Build and Release + +on: + push: + tags: + - '[0-9]+.[0-9]+.[0-9]+*' # Trigger on version tags like 1.0.0 + workflow_dispatch: # Allow manual trigger + inputs: + hotfix: + description: 'Hotfix mode - update latest release instead of creating new one' + required: false + type: boolean + default: false + +jobs: + build-and-release: + runs-on: ubuntu-latest + + permissions: + contents: write # Required to create releases + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Make + run: | + # Make is pre-installed on Ubuntu, but ensure zip is available + sudo apt-get update + sudo apt-get install -y zip rsync + + - name: Verify GitHub CLI + if: steps.get_version.outputs.hotfix == 'true' + run: | + gh --version || echo "GitHub CLI not available" + + - name: Build zip package + run: make zip + + - name: Get version from tag or use default + id: get_version + run: | + if [ "${{ inputs.hotfix }}" = "true" ]; then + echo "mode=hotfix" >> $GITHUB_OUTPUT + echo "hotfix=true" >> $GITHUB_OUTPUT + elif [ "${{ github.ref_type }}" = "tag" ]; then + VERSION="${{ github.ref_name }}" + IS_PRERELEASE="false" + echo "version=$VERSION" >> $GITHUB_OUTPUT + echo "tag_name=$VERSION" >> $GITHUB_OUTPUT + echo "prerelease=$IS_PRERELEASE" >> $GITHUB_OUTPUT + echo "hotfix=false" >> $GITHUB_OUTPUT + else + VERSION="dev-$(date +'%Y%m%d-%H%M%S')-${GITHUB_SHA::8}" + IS_PRERELEASE="true" + echo "version=$VERSION" >> $GITHUB_OUTPUT + echo "tag_name=$VERSION" >> $GITHUB_OUTPUT + echo "prerelease=$IS_PRERELEASE" >> $GITHUB_OUTPUT + echo "hotfix=false" >> $GITHUB_OUTPUT + fi + + - name: Get latest release for hotfix + if: steps.get_version.outputs.hotfix == 'true' + id: get_latest_release + run: | + # Get the latest release (non-draft, non-prerelease) + LATEST_RELEASE=$(gh api repos/${{ github.repository }}/releases/latest --jq '.tag_name' 2>/dev/null || echo "") + if [ -z "$LATEST_RELEASE" ]; then + echo "Error: No latest release found. Cannot perform hotfix." + exit 1 + fi + RELEASE_ID=$(gh api repos/${{ github.repository }}/releases/latest --jq '.id') + echo "tag_name=$LATEST_RELEASE" >> $GITHUB_OUTPUT + echo "release_id=$RELEASE_ID" >> $GITHUB_OUTPUT + echo "Latest release: $LATEST_RELEASE (ID: $RELEASE_ID)" + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Delete existing asset if hotfix + if: steps.get_version.outputs.hotfix == 'true' + run: | + ASSET_ID=$(gh api repos/${{ github.repository }}/releases/${{ steps.get_latest_release.outputs.release_id }}/assets --jq '.[] | select(.name == "OmniNX Downloader.zip") | .id' || echo "") + if [ -n "$ASSET_ID" ]; then + echo "Deleting existing asset (ID: $ASSET_ID)" + gh api repos/${{ github.repository }}/releases/assets/$ASSET_ID -X DELETE + echo "Waiting for asset deletion to complete..." + sleep 2 + else + echo "No existing asset found" + fi + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Prepare release info + id: release_info + run: | + if [ "${{ inputs.hotfix }}" = "true" ]; then + echo "release_name=Release ${{ steps.get_latest_release.outputs.tag_name }} (Hotfix Update)" >> $GITHUB_OUTPUT + RELEASE_BODY="**HOTFIX UPDATE** - Updated existing release" + echo "release_body<> $GITHUB_OUTPUT + echo "$RELEASE_BODY" >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT + echo "release_tag=${{ steps.get_latest_release.outputs.tag_name }}" >> $GITHUB_OUTPUT + echo "is_prerelease=false" >> $GITHUB_OUTPUT + else + echo "release_name=Release ${{ steps.get_version.outputs.version }}" >> $GITHUB_OUTPUT + RELEASE_BODY="Automated build of OmniNX Downloader" + echo "release_body<> $GITHUB_OUTPUT + echo "$RELEASE_BODY" >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT + echo "release_tag=${{ steps.get_version.outputs.tag_name }}" >> $GITHUB_OUTPUT + echo "is_prerelease=${{ steps.get_version.outputs.prerelease }}" >> $GITHUB_OUTPUT + fi + + - name: Create or Update Release (Normal Mode) + if: steps.get_version.outputs.hotfix != 'true' + uses: softprops/action-gh-release@v1 + with: + tag_name: ${{ steps.release_info.outputs.release_tag }} + name: ${{ steps.release_info.outputs.release_name }} + body: ${{ steps.release_info.outputs.release_body }} + draft: false + prerelease: ${{ steps.release_info.outputs.is_prerelease == 'true' }} + files: ./output/OmniNX Downloader.zip + + - name: Update Release (Hotfix Mode) + if: steps.get_version.outputs.hotfix == 'true' + run: | + # Update release body + gh release edit ${{ steps.get_latest_release.outputs.tag_name }} \ + --title "${{ steps.release_info.outputs.release_name }}" \ + --notes "${{ steps.release_info.outputs.release_body }}" + + # Upload new asset + gh release upload ${{ steps.get_latest_release.outputs.tag_name }} \ + "./output/OmniNX Downloader.zip" \ + --clobber + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/generate-release-files.yml b/.github/workflows/generate-release-files.yml new file mode 100644 index 0000000..3d840d0 --- /dev/null +++ b/.github/workflows/generate-release-files.yml @@ -0,0 +1,46 @@ +name: Generate Release Files + +on: + schedule: + # Run daily at 00:00 UTC + - cron: '0 0 * * *' + workflow_dispatch: # Allow manual trigger + +jobs: + generate-releases: + runs-on: ubuntu-latest + + permissions: + contents: write # Required to commit and push changes + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.x' + + - name: Generate release files + env: + GITHUB_TOKEN: ${{ secrets.GH_API_TOKEN }} + run: python3 generate_release_files.py + + - name: Check for changes + id: verify-changed-files + run: | + if [ -n "$(git status --porcelain)" ]; then + echo "changed=true" >> $GITHUB_OUTPUT + else + echo "changed=false" >> $GITHUB_OUTPUT + fi + + - name: Commit and push changes + if: steps.verify-changed-files.outputs.changed == 'true' + run: | + git config --local user.email "action@github.com" + git config --local user.name "GitHub Action" + git add "include/*/RELEASE_*.ini" + git commit -m "chore: update release files [skip ci]" + git push diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..0b0ff12 --- /dev/null +++ b/Makefile @@ -0,0 +1,23 @@ +.PHONY: zip clean + +zip: "./output/OmniNX Downloader.zip" + +"./output/OmniNX Downloader.zip": + @echo "Creating OmniNX Downloader.zip..." + @mkdir -p output + @rm -rf "output/OmniNX Downloader" + @mkdir -p "output/OmniNX Downloader" + @cp package.ini "output/OmniNX Downloader/" + @rsync -av --exclude='RELEASE*.ini' --exclude='*.pyc' --exclude='__pycache__' --exclude='.DS_Store' include/ "output/OmniNX Downloader/include/" + @cd output && zip -r "OmniNX Downloader.zip" "OmniNX Downloader" \ + -x "*.pyc" \ + -x "__pycache__/*" \ + -x ".DS_Store" \ + -x "*/.DS_Store" + @rm -rf "output/OmniNX Downloader" + @echo "✓ Created output/OmniNX Downloader.zip" + +clean: + @rm -f "output/OmniNX Downloader.zip" + @rm -rf "output/OmniNX Downloader" + @echo "✓ Cleaned up output/OmniNX Downloader.zip" diff --git a/generate_release_files.py b/generate_release_files.py new file mode 100755 index 0000000..d98c1aa --- /dev/null +++ b/generate_release_files.py @@ -0,0 +1,245 @@ +#!/usr/bin/env python3 +""" +Generate RELEASE_X.ini files by fetching latest GitHub release tags +for sysmodules, overlays, apps, and emulatoren. +""" + +import re +import json +import os +import time +import urllib.request +import urllib.error +import configparser +from pathlib import Path +from typing import Dict, List, Tuple, Optional + +# GitHub API base URL +GITHUB_API = "https://api.github.com/repos" + +# Get GitHub token from environment variable if available +GITHUB_TOKEN = os.environ.get('GITHUB_TOKEN', '') + +def extract_repo_from_url(url: str) -> Optional[Tuple[str, str]]: + """Extract owner and repo from GitHub API URL.""" + # Pattern: https://api.github.com/repos/owner/repo/releases?... + match = re.search(r'/repos/([^/]+)/([^/]+)/releases', url) + if match: + return (match.group(1), match.group(2)) + return None + +def get_latest_tag(owner: str, repo: str) -> Optional[str]: + """Fetch the latest release tag from GitHub API.""" + url = f"{GITHUB_API}/{owner}/{repo}/releases?per_page=1" + try: + req = urllib.request.Request(url) + req.add_header('User-Agent', 'Release-Tag-Fetcher/1.0') + if GITHUB_TOKEN: + req.add_header('Authorization', f'token {GITHUB_TOKEN}') + + with urllib.request.urlopen(req, timeout=10) as response: + releases = json.loads(response.read().decode('utf-8')) + if releases and len(releases) > 0: + return releases[0].get('tag_name', releases[0].get('name', '')) + except urllib.error.HTTPError as e: + if e.code == 403: + print(f" Rate limit exceeded. Set GITHUB_TOKEN env var for higher limits.") + elif e.code == 404: + print(f" Repository not found") + else: + print(f" HTTP {e.code}: {e.reason}") + except Exception as e: + print(f" Error: {e}") + return None + +def parse_ini_file(file_path: Path) -> List[Dict[str, str]]: + """Parse .ini file and extract entries with GitHub API URLs.""" + entries = [] + + with open(file_path, 'r', encoding='utf-8') as f: + content = f.read() + + # Find all section headers + sections = re.finditer(r'^\[([^\]]+)\]', content, re.MULTILINE) + + for section_match in sections: + section_name = section_match.group(1) + section_start = section_match.end() + + # Find next section or end of file + next_section = re.search(r'^\[', content[section_start:], re.MULTILINE) + section_end = section_start + (next_section.start() if next_section else len(content[section_start:])) + section_content = content[section_start:section_end] + + # Look for GitHub API URLs in this section + github_urls = re.findall(r'https://api\.github\.com/repos/[^\s]+', section_content) + + if github_urls: + repo_info = extract_repo_from_url(github_urls[0]) + if repo_info: + entries.append({ + 'name': section_name, + 'owner': repo_info[0], + 'repo': repo_info[1], + 'url': github_urls[0] + }) + + return entries + +def generate_release_ini(category: str, entries: List[Dict[str, str]], output_path: Path): + """Generate RELEASE_X.ini file for a category.""" + print(f"\nGenerating {output_path.name}...") + print(f"Found {len(entries)} entries") + + # Create config parser + config = configparser.ConfigParser() + config.optionxform = str # Preserve case + + # Create section based on category + if category == 'sysmodules': + section_name = 'Versions' + elif category == 'overlays': + section_name = 'Versions' + elif category == 'apps': + section_name = 'Versions' + elif category == 'emulatoren': + section_name = 'Versions' + else: + section_name = 'Release Info' + + config.add_section(section_name) + + # Monitoring statistics + success_count = 0 + failure_count = 0 + failed_entries = [] + + # Fetch tags for each entry + for i, entry in enumerate(entries): + # Add delay between requests to avoid rate limiting (except for first request) + if i > 0: + time.sleep(0.5) # 500ms delay between requests + + print(f" Fetching {entry['name']} ({entry['owner']}/{entry['repo']})...", end=' ') + tag = get_latest_tag(entry['owner'], entry['repo']) + if tag: + # Remove 'v' prefix if present for cleaner version + clean_tag = tag.lstrip('v') + # Truncate very long version strings (e.g., commit hashes) to max 30 chars for Switch display + if len(clean_tag) > 30: + # Try to extract meaningful part (e.g., commit hash from "weekly-canary-release-25f89d3...") + if '-' in clean_tag: + parts = clean_tag.split('-') + # If it looks like a commit hash at the end, take last part and truncate to 7 chars + if len(parts) > 1 and len(parts[-1]) > 20: + clean_tag = f"{parts[-2]}-{parts[-1][:7]}" if len(parts) > 1 else parts[-1][:7] + else: + clean_tag = clean_tag[:30] + else: + clean_tag = clean_tag[:30] + config.set(section_name, entry['name'], clean_tag) + success_count += 1 + print(f"✓ {clean_tag}") + else: + failure_count += 1 + failed_entries.append(f"{entry['name']} ({entry['owner']}/{entry['repo']})") + print("✗ Failed") + + # Write to file + with open(output_path, 'w', encoding='utf-8') as f: + config.write(f, space_around_delimiters=False) + + # Print monitoring summary + print(f"\n✓ Created {output_path}") + print(f" Success: {success_count}/{len(entries)}") + if failure_count > 0: + print(f" Failed: {failure_count}/{len(entries)}") + for failed in failed_entries: + print(f" - {failed}") + + return { + 'category': category, + 'total': len(entries), + 'success': success_count, + 'failed': failure_count, + 'failed_entries': failed_entries + } + +def main(): + """Main function.""" + base_path = Path(__file__).parent + include_path = base_path / "include" + + print("GitHub Release Tag Fetcher") + if GITHUB_TOKEN: + print("✓ Using GitHub token (higher rate limit)") + else: + print("⚠ No GitHub token found. Set GITHUB_TOKEN env var for higher rate limits.") + print("=" * 50) + + # Track all results for final summary + all_results = [] + + # Process sysmodules + sysmodules_path = include_path / "sysmodules" / "sysmodules.ini" + if sysmodules_path.exists(): + entries = parse_ini_file(sysmodules_path) + if entries: + output_path = include_path / "sysmodules" / "RELEASE_SM.ini" + result = generate_release_ini('sysmodules', entries, output_path) + all_results.append(result) + + # Process overlays + overlays_path = include_path / "overlays" / "overlays.ini" + if overlays_path.exists(): + entries = parse_ini_file(overlays_path) + if entries: + output_path = include_path / "overlays" / "RELEASE_OV.ini" + result = generate_release_ini('overlays', entries, output_path) + all_results.append(result) + + # Process apps + apps_path = include_path / "apps" / "apps.ini" + if apps_path.exists(): + entries = parse_ini_file(apps_path) + if entries: + output_path = include_path / "apps" / "RELEASE_APPS.ini" + result = generate_release_ini('apps', entries, output_path) + all_results.append(result) + + # Process emulatoren + emulatoren_path = include_path / "emulatoren" / "emulatoren.ini" + if emulatoren_path.exists(): + entries = parse_ini_file(emulatoren_path) + if entries: + output_path = include_path / "emulatoren" / "RELEASE_EM.ini" + result = generate_release_ini('emulatoren', entries, output_path) + all_results.append(result) + + # Print final monitoring summary + print("\n" + "=" * 50) + print("FINAL SUMMARY") + print("=" * 50) + total_entries = sum(r['total'] for r in all_results) + total_success = sum(r['success'] for r in all_results) + total_failed = sum(r['failed'] for r in all_results) + + print(f"Total entries processed: {total_entries}") + print(f"Successfully fetched: {total_success} ({total_success/total_entries*100:.1f}%)" if total_entries > 0 else "Successfully fetched: 0") + print(f"Failed: {total_failed} ({total_failed/total_entries*100:.1f}%)" if total_entries > 0 else "Failed: 0") + + # List all failed entries by category + if total_failed > 0: + print("\nFailed entries by category:") + for result in all_results: + if result['failed'] > 0: + print(f" {result['category']}:") + for failed in result['failed_entries']: + print(f" - {failed}") + + print("\n" + "=" * 50) + print("Done!") + +if __name__ == "__main__": + main() + diff --git a/include/apps/RELEASE_APPS.ini b/include/apps/RELEASE_APPS.ini new file mode 100644 index 0000000..b7ebcae --- /dev/null +++ b/include/apps/RELEASE_APPS.ini @@ -0,0 +1,23 @@ +[Versions] +Amiibo Generator=2.2.1 +Amiigo=2.4.1 +DBI_EN=849 +DBI_DE=849 +Chiaki_NG=release-af569df +DNS_mitm Tester=1.0.4 +Hekate-Toolbox=4.0.4 +JKSV=12/02/2025 +Moonlight Switch=1.3.4 +Neumann=0.0.30-2 +NX-Activity-Log=1.4.0 +Sphaira=1.0.0 +ThemezerNX=2.0.3 +emuiibo=1.1.2 +Tinwoo=1.0.28 +Goldleaf=1.2.0 +linkalho=2.0.2 +nxmp=0.9.3 +aio-switch-updater=2.23.3 +switchfin=0.8.3 +NXThemesInstaller=4.8.3 + diff --git a/include/apps/apps.ini b/include/apps/apps.ini new file mode 100644 index 0000000..63ec0b8 --- /dev/null +++ b/include/apps/apps.ini @@ -0,0 +1,194 @@ +[Homebrew Apps] + +[Amiibo Generator] +try: +download https://api.github.com/repos/yusufakg/AmiiboGenerator/releases?per_page=1 /config/ultrahand/downloads/amiibo-generator-api.json +json_file /config/ultrahand/downloads/amiibo-generator-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/amiibo-generator.nro +mv /config/ultrahand/downloads/amiibo-generator.nro /switch/AmiiboGenerator/ +delete /config/ultrahand/downloads/amiibo-generator-api.json + +[Amiigo] +try: +download https://api.github.com/repos/CompSciOrBust/Amiigo/releases?per_page=1 /config/ultrahand/downloads/amiigo-api.json +json_file /config/ultrahand/downloads/amiigo-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/amiigo.nro +mv /config/ultrahand/downloads/amiigo.nro /switch/Amiigo/ +delete /config/ultrahand/downloads/amiigo-api.json + +[DBI_EN] +try: +download https://git.niklascfw.de/api/v1/repos/OmniNX/DBI_EN/releases?limit=1 /config/ultrahand/downloads/dbi-api.json +json_file /config/ultrahand/downloads/dbi-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/dbi.zip +unzip /config/ultrahand/downloads/dbi.zip / +delete /config/ultrahand/downloads/dbi-api.json +delete /config/ultrahand/downloads/dbi.zip + +[DBI_DE] +try: +download https://git.niklascfw.de/api/v1/repos/OmniNX/DBI_DE/releases?limit=1 /config/ultrahand/downloads/dbi-api.json +json_file /config/ultrahand/downloads/dbi-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/dbi.zip +unzip /config/ultrahand/downloads/dbi.zip / +delete /config/ultrahand/downloads/dbi-api.json +delete /config/ultrahand/downloads/dbi.zip + +[Chiaki_NG] +try: +download https://api.github.com/repos/streetpea/chiaki-ng/releases?per_page=1 /config/ultrahand/downloads/chiaki-api.json +json_file /config/ultrahand/downloads/chiaki-api.json +download {json_file(0,assets,8,browser_download_url)} /config/ultrahand/downloads/chiaki.nro +mv /config/ultrahand/downloads/chiaki.nro /switch/Chiaki/ +delete /config/ultrahand/downloads/chiaki-api.json + +[DNS_mitm Tester] +try: +download https://api.github.com/repos/meganukebmp/Switch_90DNS_tester/releases?per_page=1 /config/ultrahand/downloads/dns-tester-api.json +json_file /config/ultrahand/downloads/dns-tester-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/dns-tester.nro +mv /config/ultrahand/downloads/dns-tester.nro /switch/DNS-Block_Tester/ +delete /config/ultrahand/downloads/dns-tester-api.json + +[Hekate-Toolbox] +try: +download https://api.github.com/repos/WerWolv/Hekate-Toolbox/releases?per_page=1 /config/ultrahand/downloads/hekate-toolbox-api.json +json_file /config/ultrahand/downloads/hekate-toolbox-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/hekate-toolbox.nro +mv /config/ultrahand/downloads/hekate-toolbox.nro /switch/Hekate-Toolbox/ +delete /config/ultrahand/downloads/hekate-toolbox-api.json + +[JKSV] +try: +download https://api.github.com/repos/J-D-K/JKSV/releases?per_page=1 /config/ultrahand/downloads/jksv-api.json +json_file /config/ultrahand/downloads/jksv-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/jksv.nro +mv /config/ultrahand/downloads/jksv.nro /switch/JKSV/ +delete /config/ultrahand/downloads/jksv-api.json + +[Moonlight Switch] +try: +download https://api.github.com/repos/XITRIX/Moonlight-Switch/releases?per_page=1 /config/ultrahand/downloads/moonlight-api.json +json_file /config/ultrahand/downloads/moonlight-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/moonlight.nro +mv /config/ultrahand/downloads/moonlight.nro /switch/Moonlight Switch/ +delete /config/ultrahand/downloads/moonlight-api.json + +[Neumann] +try: +download https://api.github.com/repos/turtle-insect/Neumann/releases?per_page=1 /config/ultrahand/downloads/neumann-api.json +json_file /config/ultrahand/downloads/neumann-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/neumann.nro +mv /config/ultrahand/downloads/neumann.nro /switch/Neumann/ +delete /config/ultrahand/downloads/neumann-api.json + +[NX-Activity-Log] +try: +download https://api.github.com/repos/tallbl0nde/NX-Activity-Log/releases?per_page=1 /config/ultrahand/downloads/nx-activity-log-api.json +json_file /config/ultrahand/downloads/nx-activity-log-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/nx-activity-log.nro +mv /config/ultrahand/downloads/nx-activity-log.nro /switch/NX-Activity-Log/ +delete /config/ultrahand/downloads/nx-activity-log-api.json + +[Sphaira] +try: +download https://api.github.com/repos/ITotalJustice/sphaira/releases?per_page=1 /config/ultrahand/downloads/sphaira-api.json +json_file /config/ultrahand/downloads/sphaira-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/sphaira.zip +unzip /config/ultrahand/downloads/sphaira.zip / +delete /config/ultrahand/downloads/sphaira-api.json +delete /config/ultrahand/downloads/sphaira.zip + +[ThemezerNX] +try: +download https://api.github.com/repos/suchmememanyskill/themezer-nx/releases?per_page=1 /config/ultrahand/downloads/themezer-api.json +json_file /config/ultrahand/downloads/themezer-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/themezer.nro +mv /config/ultrahand/downloads/themezer.nro /switch/ThemezerNX/ +cp /Backup/SB/Icongrabber/config.json /config/Icongrabber/config.json +delete /config/ultrahand/downloads/themezer-api.json + +[emuiibo] +try: +download https://api.github.com/repos/XorTroll/emuiibo/releases?per_page=1 /config/ultrahand/downloads/emuiibo-api.json +json_file /config/ultrahand/downloads/emuiibo-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/emuiibo.nro +mv /config/ultrahand/downloads/emuiibo.nro /switch/emuiibo/ +delete /config/ultrahand/downloads/emuiibo-api.json + +[Tinwoo] +try: +download https://api.github.com/repos/mrdude2478/Tinwoo-Release/releases?per_page=1 /config/ultrahand/downloads/tinwoo-api.json +json_file /config/ultrahand/downloads/tinwoo-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/tinwoo.nro +mv /config/ultrahand/downloads/tinwoo.nro /switch/Tinwoo/ +delete /config/ultrahand/downloads/tinwoo-api.json + +[Goldleaf] +try: +download https://api.github.com/repos/XorTroll/Goldleaf/releases?per_page=1 /config/ultrahand/downloads/goldleaf-api.json +json_file /config/ultrahand/downloads/goldleaf-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/goldleaf.zip +unzip /config/ultrahand/downloads/goldleaf.zip / +delete /config/ultrahand/downloads/goldleaf-api.json +delete /config/ultrahand/downloads/goldleaf.zip + +[linkalho] +try: +download https://api.github.com/repos/impeeza/linkalho/releases?per_page=1 /config/ultrahand/downloads/linkalho-api.json +json_file /config/ultrahand/downloads/linkalho-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/linkalho.nro +mv /config/ultrahand/downloads/linkalho.nro /switch/linkalho/ +delete /config/ultrahand/downloads/linkalho-api.json + +[nxmp] +try: +download https://api.github.com/repos/proconsule/nxmp/releases?per_page=1 /config/ultrahand/downloads/nxmp-api.json +json_file /config/ultrahand/downloads/nxmp-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/nxmp.nro +mv /config/ultrahand/downloads/nxmp.nro /switch/nxmp/ +delete /config/ultrahand/downloads/nxmp-api.json + +[aio-switch-updater] +try: +download https://api.github.com/repos/HamletDuFromage/aio-switch-updater/releases?per_page=1 /config/ultrahand/downloads/aio-switch-updater-api.json +json_file /config/ultrahand/downloads/aio-switch-updater-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/aio-switch-updater.nro +mv /config/ultrahand/downloads/aio-switch-updater.nro /switch/aio-switch-updater/ +delete /config/ultrahand/downloads/aio-switch-updater-api.json + +[switchfin] +try: +download https://api.github.com/repos/dragonflylee/switchfin/releases?per_page=1 /config/ultrahand/downloads/switchfin-api.json +json_file /config/ultrahand/downloads/switchfin-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/switchfin.nro +mv /config/ultrahand/downloads/switchfin.nro /switch/switchfin/ +delete /config/ultrahand/downloads/switchfin-api.json + +[NXThemesInstaller] +try: +download https://api.github.com/repos/exelix11/SwitchThemeInjector/releases?per_page=1 /config/ultrahand/downloads/switchthemeinjector-api.json +json_file /config/ultrahand/downloads/switchthemeinjector-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/switchthemeinjector.nro +mv /config/ultrahand/downloads/switchthemeinjector.nro /switch/NXThemesInstaller/ +delete /config/ultrahand/downloads/switchthemeinjector-api.json + + +[Patched Apps] + +[Crunchyroll Patched] +try: +download 'https://cdn.niklascfw.de/switch/pack/apps/Crunchyroll_Patched.zip' '/config/ultrahand/downloads/Crunchyroll_Patched.zip' +unzip '/config/ultrahand/downloads/Crunchyroll_Patched.zip' '/Patched Apps/' +delete '/config/ultrahand/downloads/Crunchyroll_Patched.zip' + +[YouTube Patched] +try: +download 'https://cdn.niklascfw.de/switch/pack/apps/YouTube_Patched.zip' '/config/ultrahand/downloads/YouTube_Patched.zip' +unzip '/config/ultrahand/downloads/YouTube_Patched.zip' '/Patched Apps/' +delete '/config/ultrahand/downloads/YouTube_Patched.zip' + +[gap] +;mode=table +;background=false +;gap=30 \ No newline at end of file diff --git a/include/apps/boot_package.ini b/include/apps/boot_package.ini new file mode 100644 index 0000000..9b23ec6 --- /dev/null +++ b/include/apps/boot_package.ini @@ -0,0 +1,48 @@ +[boot] +set-ini-val ./include/apps/config.ini 'Amiibo Generator' 'footer' '' +set-ini-val ./include/apps/config.ini Amiigo 'footer' '' +set-ini-val ./include/apps/config.ini DBI_EN 'footer' '' +set-ini-val ./include/apps/config.ini DBI_DE 'footer' '' +set-ini-val ./include/apps/config.ini Chiaki_NG 'footer' '' +set-ini-val ./include/apps/config.ini 'DNS_mitm Tester' 'footer' '' +set-ini-val ./include/apps/config.ini Hekate-Toolbox 'footer' '' +set-ini-val ./include/apps/config.ini JKSV 'footer' '' +set-ini-val ./include/apps/config.ini 'Moonlight Switch' 'footer' '' +set-ini-val ./include/apps/config.ini Neumann 'footer' '' +set-ini-val ./include/apps/config.ini 'NX-Activity-Log' 'footer' '' +set-ini-val ./include/apps/config.ini RetroArch 'footer' '' +set-ini-val ./include/apps/config.ini Sphaira 'footer' '' +set-ini-val ./include/apps/config.ini ThemezerNX 'footer' '' +set-ini-val ./include/apps/config.ini emuiibo 'footer' '' +set-ini-val ./include/apps/config.ini Tinwoo 'footer' '' +set-ini-val ./include/apps/config.ini Goldleaf 'footer' '' +set-ini-val ./include/apps/config.ini linkalho 'footer' '' +set-ini-val ./include/apps/config.ini nxmp 'footer' '' +set-ini-val ./include/apps/config.ini aio-switch-updater 'footer' '' +set-ini-val ./include/apps/config.ini switchfin 'footer' '' +set-ini-val ./include/apps/config.ini NXThemesInstaller 'footer' '' + +download https://git.niklascfw.de/OmniNX/Omni-Downloader/raw/branch/main/include/apps/RELEASE_APPS.ini ./include/apps/RELEASE_APPS.ini +ini_file ./include/apps/RELEASE_APPS.ini +set-ini-val ./include/apps/config.ini 'Amiibo Generator' 'footer' '{ini_file(Versions,Amiibo Generator)}' +set-ini-val ./include/apps/config.ini Amiigo 'footer' '{ini_file(Versions,Amiigo)}' +set-ini-val ./include/apps/config.ini DBI_EN 'footer' '{ini_file(Versions,DBI_EN)}' +set-ini-val ./include/apps/config.ini DBI_DE 'footer' '{ini_file(Versions,DBI_DE)}' +set-ini-val ./include/apps/config.ini Chiaki_NG 'footer' '{ini_file(Versions,Chiaki_NG)}' +set-ini-val ./include/apps/config.ini 'DNS_mitm Tester' 'footer' '{ini_file(Versions,DNS_mitm Tester)}' +set-ini-val ./include/apps/config.ini Hekate-Toolbox 'footer' '{ini_file(Versions,Hekate-Toolbox)}' +set-ini-val ./include/apps/config.ini JKSV 'footer' '{ini_file(Versions,JKSV)}' +set-ini-val ./include/apps/config.ini 'Moonlight Switch' 'footer' '{ini_file(Versions,Moonlight Switch)}' +set-ini-val ./include/apps/config.ini Neumann 'footer' '{ini_file(Versions,Neumann)}' +set-ini-val ./include/apps/config.ini 'NX-Activity-Log' 'footer' '{ini_file(Versions,NX-Activity-Log)}' +set-ini-val ./include/apps/config.ini RetroArch 'footer' '{ini_file(Versions,RetroArch)}' +set-ini-val ./include/apps/config.ini Sphaira 'footer' '{ini_file(Versions,Sphaira)}' +set-ini-val ./include/apps/config.ini ThemezerNX 'footer' '{ini_file(Versions,ThemezerNX)}' +set-ini-val ./include/apps/config.ini emuiibo 'footer' '{ini_file(Versions,emuiibo)}' +set-ini-val ./include/apps/config.ini Tinwoo 'footer' '{ini_file(Versions,Tinwoo)}' +set-ini-val ./include/apps/config.ini Goldleaf 'footer' '{ini_file(Versions,Goldleaf)}' +set-ini-val ./include/apps/config.ini linkalho 'footer' '{ini_file(Versions,linkalho)}' +set-ini-val ./include/apps/config.ini nxmp 'footer' '{ini_file(Versions,nxmp)}' +set-ini-val ./include/apps/config.ini aio-switch-updater 'footer' '{ini_file(Versions,aio-switch-updater)}' +set-ini-val ./include/apps/config.ini switchfin 'footer' '{ini_file(Versions,switchfin)}' +set-ini-val ./include/apps/config.ini NXThemesInstaller 'footer' '{ini_file(Versions,NXThemesInstaller)}' \ No newline at end of file diff --git a/include/apps/config.ini b/include/apps/config.ini new file mode 100644 index 0000000..e69de29 diff --git a/include/emulatoren/RELEASE_EM.ini b/include/emulatoren/RELEASE_EM.ini new file mode 100644 index 0000000..2d05668 --- /dev/null +++ b/include/emulatoren/RELEASE_EM.ini @@ -0,0 +1,4 @@ +[Versions] +melonDS=7.2.1 +PPSSPP-NX=1.19.3 + diff --git a/include/emulatoren/boot_package.ini b/include/emulatoren/boot_package.ini new file mode 100644 index 0000000..03c78a5 --- /dev/null +++ b/include/emulatoren/boot_package.ini @@ -0,0 +1,8 @@ +[boot] +set-ini-val ./include/emulatoren/config.ini melonDS 'footer' '' +set-ini-val ./include/emulatoren/config.ini PPSSPP-NX 'footer' '' + +download https://git.niklascfw.de/OmniNX/Omni-Downloader/raw/branch/main/include/emulatoren/RELEASE_EM.ini ./include/emulatoren/RELEASE_EM.ini +ini_file ./include/emulatoren/RELEASE_EM.ini +set-ini-val ./include/emulatoren/config.ini melonDS 'footer' '{ini_file(Versions,melonDS)}' +set-ini-val ./include/emulatoren/config.ini PPSSPP-NX 'footer' '{ini_file(Versions,PPSSPP-NX)}' diff --git a/include/emulatoren/config.ini b/include/emulatoren/config.ini new file mode 100644 index 0000000..e69de29 diff --git a/include/emulatoren/emulatoren.ini b/include/emulatoren/emulatoren.ini new file mode 100644 index 0000000..126dbc1 --- /dev/null +++ b/include/emulatoren/emulatoren.ini @@ -0,0 +1,35 @@ +;show_widget=true + +[Emulatoren] + + +[Lakka - 6.1.0] +try: +download 'https://cdn.niklascfw.de/switch/pack/os/lakka.zip' '/config/ultrahand/downloads/lakka.zip' +unzip '/config/ultrahand/downloads/lakka.zip' '/' +delete '/config/ultrahand/downloads/lakka.zip' + +[RetroArch - 1.22.2] +try: +download 'https://cdn.niklascfw.de/switch/pack/apps/RetroArch_1.22.2.zip' '/config/ultrahand/downloads/RetroArch_1.22.2.zip' +unzip '/config/ultrahand/downloads/RetroArch_1.22.2.zip' '/' +delete '/config/ultrahand/downloads/RetroArch_1.22.2.zip' + +[melonDS] +try: +download https://api.github.com/repos/ArcDelta/melonDS/releases?per_page=1 /config/ultrahand/downloads/melonds-api.json +json_file /config/ultrahand/downloads/melonds-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/melonds.nro +mv /config/ultrahand/downloads/melonds.nro /switch/melonDS/ +delete /config/ultrahand/downloads/melonds-api.json + +[PPSSPP-NX] +try: +download https://git.niklascfw.de/api/v1/repos/OmniNX/PPSSPP-NX/releases?limit=1 /config/ultrahand/downloads/ppsspp-nx-api.json +json_file /config/ultrahand/downloads/ppsspp-nx-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/ppsspp-nx.zip +unzip /config/ultrahand/downloads/ppsspp-nx.zip '/switch/' +delete /config/ultrahand/downloads/ppsspp-nx-api.json +delete /config/ultrahand/downloads/ppsspp-nx.zip + + diff --git a/include/os/android.ini b/include/os/android.ini new file mode 100644 index 0000000..567ad90 --- /dev/null +++ b/include/os/android.ini @@ -0,0 +1,20 @@ +[Android] + +[Android TAB - 15] +try: +download 'https://cdn.niklascfw.de/switch/pack/os/Android_Tab.zip' '/config/ultrahand/downloads/Android_Tab.zip' +unzip '/config/ultrahand/downloads/Android_Tab.zip' '/' +delete '/config/ultrahand/downloads/Android_Tab.zip' + +[Android TV - 15] +try: +download 'https://cdn.niklascfw.de/switch/pack/os/Android_TV.zip' '/config/ultrahand/downloads/Android_TV.zip' +unzip '/config/ultrahand/downloads/Android_TV.zip' '/' +delete '/config/ultrahand/downloads/Android_TV.zip' + +[CrDroid - 15] +try: +download 'https://cdn.niklascfw.de/switch/pack/os/CrDroid.zip' '/config/ultrahand/downloads/CrDroid.zip' +unzip '/config/ultrahand/downloads/CrDroid.zip' '/' +delete '/config/ultrahand/downloads/CrDroid.zip' + diff --git a/include/os/hekate_inis.ini b/include/os/hekate_inis.ini new file mode 100644 index 0000000..3a70eb7 --- /dev/null +++ b/include/os/hekate_inis.ini @@ -0,0 +1,79 @@ +[Hekate INIs] + +[*SD Installation] +[Android_LineageOS.ini - SD] +try: +download 'https://cdn.niklascfw.de/switch/pack/inis/Android_LineageOS.ini' '/bootloader/ini/' + +[CrDroid.ini - SD] +try: +download 'https://cdn.niklascfw.de/switch/pack/inis/CrDroid.ini' '/bootloader/ini/' + +[Fedora.ini - SD] +try: +download 'https://cdn.niklascfw.de/switch/pack/inis/Fedora.ini' '/bootloader/ini/' + +[Lakka.ini - SD] +try: +download 'https://cdn.niklascfw.de/switch/pack/inis/Lakka.ini' '/bootloader/ini/' + +[Ubuntu_Bionic.ini - SD] +try: +download 'https://cdn.niklascfw.de/switch/pack/inis/Ubuntu_Bionic.ini' '/bootloader/ini/' + +[Ubuntu_Jammy.ini - SD] +try: +download 'https://cdn.niklascfw.de/switch/pack/inis/Ubuntu_Jammy.ini' '/bootloader/ini/' + +[Ubuntu_Noble.ini - SD] +try: +download 'https://cdn.niklascfw.de/switch/pack/inis/Ubuntu_Jammy_eMMC.ini' '/bootloader/ini/' + +[Stock_CFW.ini - SysMMC] +try: +download 'https://cdn.niklascfw.de/switch/pack/inis/Stock_CFW.ini' '/bootloader/ini/' + +[Stock_CFW_8GB.ini - SysMMC] +try: +download 'https://cdn.niklascfw.de/switch/pack/inis/Stock_CFW_8GB.ini' '/bootloader/ini/' + +[gap] +;mode=table +;background=false +;gap=30 + +[*eMMC Installation] +[Android_LineageOS.ini - eMMC] +try: +download 'https://cdn.niklascfw.de/switch/pack/inis/Android_LineageOS_eMMC.ini' '/bootloader/ini/' +delete '/bootloader/ini/Android_LineageOS.ini' + +[CrDroid.ini - eMMC] +try: +download 'https://cdn.niklascfw.de/switch/pack/inis/CrDroid_eMMC.ini' '/bootloader/ini/' +delete '/bootloader/ini/CrDroid.ini' + +[Fedora.ini - eMMC] +try: +download 'https://cdn.niklascfw.de/switch/pack/inis/Fedora_eMMC.ini' '/bootloader/ini/' +delete '/bootloader/ini/Fedora.ini' + +[Ubuntu_Bionic.ini - eMMC] +try: +download 'https://cdn.niklascfw.de/switch/pack/inis/Ubuntu_Bionic_eMMC.ini' '/bootloader/ini/' +delete '/bootloader/ini/Ubuntu_Bionic.ini' + +[Ubuntu_Jammy.ini - eMMC] +try: +download 'https://cdn.niklascfw.de/switch/pack/inis/Ubuntu_Jammy_eMMC.ini' '/bootloader/ini/' +delete '/bootloader/ini/Ubuntu_Jammy.ini' + +[Ubuntu_Noble.ini - eMMC] +try: +download 'https://cdn.niklascfw.de/switch/pack/inis/Ubuntu_Noble_eMMC.ini' '/bootloader/ini/' +delete '/bootloader/ini/Ubuntu_Noble.ini' + +[gap] +;mode=table +;background=false +;gap=30 diff --git a/include/os/linux.ini b/include/os/linux.ini new file mode 100644 index 0000000..d767a35 --- /dev/null +++ b/include/os/linux.ini @@ -0,0 +1,26 @@ +[Linux] + +[Fedora - 42] +try: +download 'https://cdn.niklascfw.de/switch/pack/os/Fedora.zip' '/config/ultrahand/downloads/Fedora.zip' +unzip '/config/ultrahand/downloads/Fedora.zip' '/' +delete '/config/ultrahand/downloads/Fedora.zip' + +[Ubuntu - Bionic] +try: +download 'https://cdn.niklascfw.de/switch/pack/os/Ubuntu_Bionic.zip' '/config/ultrahand/downloads/Ubuntu_Bionic.zip' +unzip '/config/ultrahand/downloads/Ubuntu_Bionic.zip' '/' +delete '/config/ultrahand/downloads/Ubuntu_Bionic.zip' + +[Ubuntu - Jammy] +try: +download 'https://cdn.niklascfw.de/switch/pack/os/Ubuntu_Jammy.zip' '/config/ultrahand/downloads/Ubuntu_Jammy.zip' +unzip '/config/ultrahand/downloads/Ubuntu_Jammy.zip' '/' +delete '/config/ultrahand/downloads/Ubuntu_Jammy.zip' + +[Ubuntu - Noble] +try: +download 'https://cdn.niklascfw.de/switch/pack/os/Ubuntu_Noble.zip' '/config/ultrahand/downloads/Ubuntu_Noble.zip' +unzip '/config/ultrahand/downloads/Ubuntu_Noble.zip' '/' +delete '/config/ultrahand/downloads/Ubuntu_Noble.zip' + diff --git a/include/os/os.ini b/include/os/os.ini new file mode 100644 index 0000000..fa919a9 --- /dev/null +++ b/include/os/os.ini @@ -0,0 +1,16 @@ +;show_widget=true + +[Betriebssysteme] + +[*Android] +;mode=forwarder +package_source ./android.ini + +[*Linux] +;mode=forwarder +package_source ./linux.ini + +[*Hekate INIs] +;mode=forwarder +package_source ./hekate_inis.ini + diff --git a/include/overlays/RELEASE_OV.ini b/include/overlays/RELEASE_OV.ini new file mode 100644 index 0000000..2806d88 --- /dev/null +++ b/include/overlays/RELEASE_OV.ini @@ -0,0 +1,13 @@ +[Versions] +DNS-MITM_Manager=0.2.0 +EdiZon-Overlay=1.0.14 +FPSLocker=3.2.4 +Fizeau=2.8.2 +NXFanControl+=1.0.5+ +QuickNTP=1.6.0 +ReverseNX-RT=2.2.1 +Sysmodules=1.4.7 +Sys-Clk=2.0.1+r21 +SysDVR=1.0.14 +Status-Monitor-Overlay=1.3.2+r6 + diff --git a/include/overlays/boot_package.ini b/include/overlays/boot_package.ini new file mode 100644 index 0000000..ca11233 --- /dev/null +++ b/include/overlays/boot_package.ini @@ -0,0 +1,26 @@ +[boot] +set-ini-val ./include/overlays/config.ini DNS-MITM_Manager 'footer' '' +set-ini-val ./include/overlays/config.ini EdiZon-Overlay 'footer' '' +set-ini-val ./include/overlays/config.ini FPSLocker 'footer' '' +set-ini-val ./include/overlays/config.ini Fizeau 'footer' '' +set-ini-val ./include/overlays/config.ini NXFanControl+ 'footer' '' +set-ini-val ./include/overlays/config.ini QuickNTP 'footer' '' +set-ini-val ./include/overlays/config.ini ReverseNX-RT 'footer' '' +set-ini-val ./include/overlays/config.ini Sysmodules 'footer' '' +set-ini-val ./include/overlays/config.ini Sys-Clk 'footer' '' +set-ini-val ./include/overlays/config.ini SysDVR 'footer' '' +set-ini-val ./include/overlays/config.ini Status-Monitor-Overlay 'footer' '' + +download https://git.niklascfw.de/OmniNX/Omni-Downloader/raw/branch/main/include/overlays/RELEASE_OV.ini ./include/overlays/RELEASE_OV.ini +ini_file ./include/overlays/RELEASE_OV.ini +set-ini-val ./include/overlays/config.ini DNS-MITM_Manager 'footer' '{ini_file(Versions,DNS-MITM_Manager)}' +set-ini-val ./include/overlays/config.ini EdiZon-Overlay 'footer' '{ini_file(Versions,EdiZon-Overlay)}' +set-ini-val ./include/overlays/config.ini FPSLocker 'footer' '{ini_file(Versions,FPSLocker)}' +set-ini-val ./include/overlays/config.ini Fizeau 'footer' '{ini_file(Versions,Fizeau)}' +set-ini-val ./include/overlays/config.ini NXFanControl+ 'footer' '{ini_file(Versions,NXFanControl+)}' +set-ini-val ./include/overlays/config.ini QuickNTP 'footer' '{ini_file(Versions,QuickNTP)}' +set-ini-val ./include/overlays/config.ini ReverseNX-RT 'footer' '{ini_file(Versions,ReverseNX-RT)}' +set-ini-val ./include/overlays/config.ini Sysmodules 'footer' '{ini_file(Versions,Sysmodules)}' +set-ini-val ./include/overlays/config.ini Sys-Clk 'footer' '{ini_file(Versions,Sys-Clk)}' +set-ini-val ./include/overlays/config.ini SysDVR 'footer' '{ini_file(Versions,SysDVR)}' +set-ini-val ./include/overlays/config.ini Status-Monitor-Overlay 'footer' '{ini_file(Versions,Status-Monitor-Overlay)}' \ No newline at end of file diff --git a/include/overlays/config.ini b/include/overlays/config.ini new file mode 100644 index 0000000..e69de29 diff --git a/include/overlays/overlays.ini b/include/overlays/overlays.ini new file mode 100644 index 0000000..82a520d --- /dev/null +++ b/include/overlays/overlays.ini @@ -0,0 +1,99 @@ +[UltraHand Overlays] + +[DNS-MITM_Manager] +try: +download https://api.github.com/repos/sthetix/DNS-MITM_Manager/releases?per_page=1 /config/ultrahand/downloads/dns-mitm-api.json +json_file /config/ultrahand/downloads/dns-mitm-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/dns-mitm.zip +unzip /config/ultrahand/downloads/dns-mitm.zip / +delete /config/ultrahand/downloads/dns-mitm-api.json +delete /config/ultrahand/downloads/dns-mitm.zip + +[EdiZon-Overlay] +try: +download https://api.github.com/repos/proferabg/EdiZon-Overlay/releases?per_page=1 /config/ultrahand/downloads/edizon-api.json +json_file /config/ultrahand/downloads/edizon-api.json +download {json_file(0,assets,1,browser_download_url)} /config/ultrahand/downloads/edizon.ovl +move /config/ultrahand/downloads/edizon.ovl /switch/.overlays/ +delete /config/ultrahand/downloads/edizon-api.json + +[FPSLocker] +try: +download https://api.github.com/repos/masagrator/FPSLocker/releases?per_page=1 /config/ultrahand/downloads/fpslocker-api.json +json_file /config/ultrahand/downloads/fpslocker-api.json +download {json_file(0,assets,1,browser_download_url)} /config/ultrahand/downloads/fpslocker.ovl +move /config/ultrahand/downloads/fpslocker.ovl /switch/.overlays/ +delete /config/ultrahand/downloads/fpslocker-api.json + +[Fizeau] +try: +download https://api.github.com/repos/averne/Fizeau/releases?per_page=1 /config/ultrahand/downloads/fizeau-api.json +json_file /config/ultrahand/downloads/fizeau-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/fizeau.zip +unzip /config/ultrahand/downloads/fizeau.zip / +delete /config/ultrahand/downloads/fizeau-api.json +delete /config/ultrahand/downloads/fizeau.zip + +[NXFanControl+] +try: +download https://api.github.com/repos/dominatorul/NX-FanControl/releases?per_page=1 /config/ultrahand/downloads/nxfancontrol-api.json +json_file /config/ultrahand/downloads/nxfancontrol-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/nxfancontrol.zip +unzip /config/ultrahand/downloads/nxfancontrol.zip / +delete /config/ultrahand/downloads/nxfancontrol-api.json +delete /config/ultrahand/downloads/nxfancontrol.zip + +[QuickNTP] +try: +download https://api.github.com/repos/nedex/QuickNTP/releases?per_page=1 /config/ultrahand/downloads/quickntp-api.json +json_file /config/ultrahand/downloads/quickntp-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/quickntp.zip +unzip /config/ultrahand/downloads/quickntp.zip / +delete /config/ultrahand/downloads/quickntp-api.json +delete /config/ultrahand/downloads/quickntp.zip + +[ReverseNX-RT] +try: +download https://api.github.com/repos/masagrator/ReverseNX-RT/releases?per_page=1 /config/ultrahand/downloads/reversenx-api.json +json_file /config/ultrahand/downloads/reversenx-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/reversenx.ovl +move /config/ultrahand/downloads/reversenx.ovl /switch/.overlays/ +delete /config/ultrahand/downloads/reversenx-api.json + +[Sysmodules] +try: +download https://api.github.com/repos/ppkantorski/ovl-sysmodules/releases?per_page=1 /config/ultrahand/downloads/sysmodules-ovl-api.json +json_file /config/ultrahand/downloads/sysmodules-ovl-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/sysmodules.ovl +move /config/ultrahand/downloads/sysmodules.ovl /switch/.overlays/ +delete /config/ultrahand/downloads/sysmodules-ovl-api.json + +[Sys-Clk] +try: +download https://api.github.com/repos/ppkantorski/sys-clk/releases?per_page=1 /config/ultrahand/downloads/sys-clk-api.json +json_file /config/ultrahand/downloads/sys-clk-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/sys-clk.ovl +move /config/ultrahand/downloads/sys-clk.ovl /switch/.overlays/ +delete /config/ultrahand/downloads/sys-clk-api.json + +[SysDVR] +try: +download https://api.github.com/repos/zdm65477730/sysdvr-overlay/releases?per_page=1 /config/ultrahand/downloads/sysdvr-api.json +json_file /config/ultrahand/downloads/sysdvr-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/sysdvr.zip +unzip /config/ultrahand/downloads/sysdvr.zip / +delete /config/ultrahand/downloads/sysdvr-api.json +delete /config/ultrahand/downloads/sysdvr.zip + +[Status-Monitor-Overlay] +try: +download https://api.github.com/repos/ppkantorski/Status-Monitor-Overlay/releases?per_page=1 /config/ultrahand/downloads/status-monitor-api.json +json_file /config/ultrahand/downloads/status-monitor-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/status-monitor.ovl +move /config/ultrahand/downloads/status-monitor.ovl /switch/.overlays/ +delete /config/ultrahand/downloads/status-monitor-api.json + +[gap] +;mode=table +;background=false +;gap=30 \ No newline at end of file diff --git a/include/sysmodules/RELEASE_SM.ini b/include/sysmodules/RELEASE_SM.ini new file mode 100644 index 0000000..755a0a3 --- /dev/null +++ b/include/sysmodules/RELEASE_SM.ini @@ -0,0 +1,18 @@ +[Versions] +ldn-mitm=1.20.2 +MissionControl=0.14.2 +sys-patch=1.5.9 +SaltyNX=1.7.3 +sys-botbase=2.41 +TriPlayer=2.2.6 +Alchemist=1.0.5 +Memory-Kit=1.0.0 +Fizeau=2.8.2+r2 +QuickNTP=1.6.0+r2 +ovl-sysmodules=1.4.7 +EdiZon-Overlay=1.0.15 +FPSLocker=3.2.3+r1 +sys-clk=2.0.1+r21 +Status-Monitor-Overlay=1.3.2+r6 +NX-FanControl=1.0.3 + diff --git a/include/sysmodules/boot_package.ini b/include/sysmodules/boot_package.ini new file mode 100644 index 0000000..223fb74 --- /dev/null +++ b/include/sysmodules/boot_package.ini @@ -0,0 +1,36 @@ +[boot] +set-ini-val ./include/sysmodules/config.ini ldn-mitm 'footer' '' +set-ini-val ./include/sysmodules/config.ini MissionControl 'footer' '' +set-ini-val ./include/sysmodules/config.ini sys-patch 'footer' '' +set-ini-val ./include/sysmodules/config.ini SaltyNX 'footer' '' +set-ini-val ./include/sysmodules/config.ini sys-botbase 'footer' '' +set-ini-val ./include/sysmodules/config.ini TriPlayer 'footer' '' +set-ini-val ./include/sysmodules/config.ini Alchemist 'footer' '' +set-ini-val ./include/sysmodules/config.ini Memory-Kit 'footer' '' +set-ini-val ./include/sysmodules/config.ini Fizeau 'footer' '' +set-ini-val ./include/sysmodules/config.ini QuickNTP 'footer' '' +set-ini-val ./include/sysmodules/config.ini ovl-sysmodules 'footer' '' +set-ini-val ./include/sysmodules/config.ini EdiZon-Overlay 'footer' '' +set-ini-val ./include/sysmodules/config.ini FPSLocker 'footer' '' +set-ini-val ./include/sysmodules/config.ini sys-clk 'footer' '' +set-ini-val ./include/sysmodules/config.ini Status-Monitor-Overlay 'footer' '' +set-ini-val ./include/sysmodules/config.ini NX-FanControl 'footer' '' + +download https://git.niklascfw.de/OmniNX/Omni-Downloader/raw/branch/main/include/sysmodules/RELEASE_SM.ini ./include/sysmodules/RELEASE_SM.ini +ini_file ./include/sysmodules/RELEASE_SM.ini +set-ini-val ./include/sysmodules/config.ini ldn-mitm 'footer' '{ini_file(Versions,ldn-mitm)}' +set-ini-val ./include/sysmodules/config.ini MissionControl 'footer' '{ini_file(Versions,MissionControl)}' +set-ini-val ./include/sysmodules/config.ini sys-patch 'footer' '{ini_file(Versions,sys-patch)}' +set-ini-val ./include/sysmodules/config.ini SaltyNX 'footer' '{ini_file(Versions,SaltyNX)}' +set-ini-val ./include/sysmodules/config.ini sys-botbase 'footer' '{ini_file(Versions,sys-botbase)}' +set-ini-val ./include/sysmodules/config.ini TriPlayer 'footer' '{ini_file(Versions,TriPlayer)}' +set-ini-val ./include/sysmodules/config.ini Alchemist 'footer' '{ini_file(Versions,Alchemist)}' +set-ini-val ./include/sysmodules/config.ini Memory-Kit 'footer' '{ini_file(Versions,Memory-Kit)}' +set-ini-val ./include/sysmodules/config.ini Fizeau 'footer' '{ini_file(Versions,Fizeau)}' +set-ini-val ./include/sysmodules/config.ini QuickNTP 'footer' '{ini_file(Versions,QuickNTP)}' +set-ini-val ./include/sysmodules/config.ini ovl-sysmodules 'footer' '{ini_file(Versions,ovl-sysmodules)}' +set-ini-val ./include/sysmodules/config.ini EdiZon-Overlay 'footer' '{ini_file(Versions,EdiZon-Overlay)}' +set-ini-val ./include/sysmodules/config.ini FPSLocker 'footer' '{ini_file(Versions,FPSLocker)}' +set-ini-val ./include/sysmodules/config.ini sys-clk 'footer' '{ini_file(Versions,sys-clk)}' +set-ini-val ./include/sysmodules/config.ini Status-Monitor-Overlay 'footer' '{ini_file(Versions,Status-Monitor-Overlay)}' +set-ini-val ./include/sysmodules/config.ini NX-FanControl 'footer' '{ini_file(Versions,NX-FanControl)}' \ No newline at end of file diff --git a/include/sysmodules/config.ini b/include/sysmodules/config.ini new file mode 100644 index 0000000..e69de29 diff --git a/include/sysmodules/sysmodules.ini b/include/sysmodules/sysmodules.ini new file mode 100644 index 0000000..519460b --- /dev/null +++ b/include/sysmodules/sysmodules.ini @@ -0,0 +1,144 @@ +[System Module] + +[ldn-mitm] +try: +download https://api.github.com/repos/DefenderOfHyrule/ldn_mitm/releases?per_page=1 /config/ultrahand/downloads/ldn-mitm-api.json +json_file /config/ultrahand/downloads/ldn-mitm-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/ldn-mitm.zip +unzip /config/ultrahand/downloads/ldn-mitm.zip / +delete /config/ultrahand/downloads/ldn-mitm-api.json +delete /config/ultrahand/downloads/ldn-mitm.zip + +[MissionControl] +try: +download https://api.github.com/repos/ndeadly/MissionControl/releases?per_page=1 /config/ultrahand/downloads/missioncontrol-api.json +json_file /config/ultrahand/downloads/missioncontrol-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/missioncontrol.zip +unzip /config/ultrahand/downloads/missioncontrol.zip / +delete /config/ultrahand/downloads/missioncontrol-api.json +delete /config/ultrahand/downloads/missioncontrol.zip + +[sys-patch] +try: +download https://api.github.com/repos/impeeza/sys-patch/releases?per_page=1 /config/ultrahand/downloads/sys-patch-api.json +json_file /config/ultrahand/downloads/sys-patch-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/sys-patch.zip +unzip /config/ultrahand/downloads/sys-patch.zip / +delete /config/ultrahand/downloads/sys-patch-api.json +delete /config/ultrahand/downloads/sys-patch.zip + +[SaltyNX] +try: +download https://api.github.com/repos/masagrator/SaltyNX/releases?per_page=1 /config/ultrahand/downloads/saltynx-api.json +json_file /config/ultrahand/downloads/saltynx-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/saltynx.zip +unzip /config/ultrahand/downloads/saltynx.zip / +delete /config/ultrahand/downloads/saltynx-api.json +delete /config/ultrahand/downloads/saltynx.zip + +[sys-botbase] +try: +download https://api.github.com/repos/olliz0r/sys-botbase/releases?per_page=1 /config/ultrahand/downloads/sys-botbase-api.json +json_file /config/ultrahand/downloads/sys-botbase-api.json +download {json_file(0,assets,1,browser_download_url)} /config/ultrahand/downloads/sys-botbase.zip +unzip /config/ultrahand/downloads/sys-botbase.zip / +delete /config/ultrahand/downloads/sys-botbase-api.json +delete /config/ultrahand/downloads/sys-botbase.zip + +[TriPlayer] +try: +download https://api.github.com/repos/DefenderOfHyrule/TriPlayer/releases?per_page=1 /config/ultrahand/downloads/triplayer-api.json +json_file /config/ultrahand/downloads/triplayer-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/triplayer.zip +unzip /config/ultrahand/downloads/triplayer.zip / +delete /config/ultrahand/downloads/triplayer-api.json +delete /config/ultrahand/downloads/triplayer.zip + +[Alchemist] +try: +download https://api.github.com/repos/ppkantorski/Alchemist/releases?per_page=1 /config/ultrahand/downloads/alchemist-api.json +json_file /config/ultrahand/downloads/alchemist-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/alchemist.zip +unzip /config/ultrahand/downloads/alchemist.zip / +delete /config/ultrahand/downloads/alchemist-api.json +delete /config/ultrahand/downloads/alchemist.zip + +[Memory-Kit] +try: +download https://api.github.com/repos/ppkantorski/Memory-Kit/releases?per_page=1 /config/ultrahand/downloads/memory-kit-api.json +json_file /config/ultrahand/downloads/memory-kit-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/memory-kit.zip +unzip /config/ultrahand/downloads/memory-kit.zip / +delete /config/ultrahand/downloads/memory-kit-api.json +delete /config/ultrahand/downloads/memory-kit.zip + +[Fizeau] +try: +download https://api.github.com/repos/ppkantorski/Fizeau/releases?per_page=1 /config/ultrahand/downloads/fizeau-api.json +json_file /config/ultrahand/downloads/fizeau-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/fizeau.ovl +mv /config/ultrahand/downloads/fizeau.ovl /switch/.overlays/ +delete /config/ultrahand/downloads/fizeau-api.json + +[QuickNTP] +try: +download https://api.github.com/repos/ppkantorski/QuickNTP/releases?per_page=1 /config/ultrahand/downloads/quickntp-api.json +json_file /config/ultrahand/downloads/quickntp-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/quickntp.ovl +mv /config/ultrahand/downloads/quickntp.ovl /switch/.overlays/ +delete /config/ultrahand/downloads/quickntp-api.json + +[ovl-sysmodules] +try: +download https://api.github.com/repos/ppkantorski/ovl-sysmodules/releases?per_page=1 /config/ultrahand/downloads/ovl-sysmodules-api.json +json_file /config/ultrahand/downloads/ovl-sysmodules-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/ovl-sysmodules.ovl +mv /config/ultrahand/downloads/ovl-sysmodules.ovl /switch/.overlays/ +delete /config/ultrahand/downloads/ovl-sysmodules-api.json + +[EdiZon-Overlay] +try: +download https://api.github.com/repos/Arch9SK7/EdiZon-Overlay/releases?per_page=1 /config/ultrahand/downloads/edizon-overlay-api.json +json_file /config/ultrahand/downloads/edizon-overlay-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/edizon-overlay.ovl +mv /config/ultrahand/downloads/edizon-overlay.ovl /switch/.overlays/ +delete /config/ultrahand/downloads/edizon-overlay-api.json + +[FPSLocker] +try: +download https://api.github.com/repos/ppkantorski/FPSLocker/releases?per_page=1 /config/ultrahand/downloads/fpslocker-api.json +json_file /config/ultrahand/downloads/fpslocker-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/fpslocker.ovl +mv /config/ultrahand/downloads/fpslocker.ovl /switch/.overlays/ +delete /config/ultrahand/downloads/fpslocker-api.json + +[sys-clk] +try: +download https://api.github.com/repos/ppkantorski/sys-clk/releases?per_page=1 /config/ultrahand/downloads/sys-clk-api.json +json_file /config/ultrahand/downloads/sys-clk-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/sys-clk.zip +unzip /config/ultrahand/downloads/sys-clk.zip / +delete /config/ultrahand/downloads/sys-clk-api.json +delete /config/ultrahand/downloads/sys-clk.zip + +[Status-Monitor-Overlay] +try: +download https://api.github.com/repos/ppkantorski/Status-Monitor-Overlay/releases?per_page=1 /config/ultrahand/downloads/status-monitor-overlay-api.json +json_file /config/ultrahand/downloads/status-monitor-overlay-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/status-monitor-overlay.ovl +mv /config/ultrahand/downloads/status-monitor-overlay.ovl /switch/.overlays/ +delete /config/ultrahand/downloads/status-monitor-overlay-api.json + +[NX-FanControl] +try: +download https://api.github.com/repos/auggeythecat/NX-FanControl-recomp/releases?per_page=1 /config/ultrahand/downloads/nx-fancontrol-api.json +json_file /config/ultrahand/downloads/nx-fancontrol-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/nx-fancontrol.zip +unzip /config/ultrahand/downloads/nx-fancontrol.zip / +delete /config/ultrahand/downloads/nx-fancontrol-api.json +delete /config/ultrahand/downloads/nx-fancontrol.zip + +[gap] +;mode=table +;background=false +;gap=30 \ No newline at end of file diff --git a/include/updater/CURRENT.ini b/include/updater/CURRENT.ini new file mode 100644 index 0000000..8f303cb --- /dev/null +++ b/include/updater/CURRENT.ini @@ -0,0 +1,2 @@ +[OmniNX Downloader] +version=1.0.0 \ No newline at end of file diff --git a/include/updater/RELEASE.ini b/include/updater/RELEASE.ini new file mode 100644 index 0000000..ebbac42 --- /dev/null +++ b/include/updater/RELEASE.ini @@ -0,0 +1,3 @@ +[Release Info] +pack_version=1.0.0 +firmware_version=21.2.0 \ No newline at end of file diff --git a/include/updater/boot_package.ini b/include/updater/boot_package.ini new file mode 100644 index 0000000..ecd2b3c --- /dev/null +++ b/include/updater/boot_package.ini @@ -0,0 +1,34 @@ +[boot] +make /config/omninx/manifest.ini +set-ini-val ./include/updater/config.ini 'OmniNX' footer '' +set-ini-val ./include/updater/config.ini 'Switch Firmware' footer '' +set-ini-val ./include/updater/config.ini 'Omni Downloader' footer '' + +try: +download https://git.niklascfw.de/OmniNX/Omni-Downloader/raw/branch/main/include/updater/RELEASE.ini ./include/updater/RELEASE.ini +ini_file ./include/updater/RELEASE.ini + +set-ini-val ./include/updater/config.ini 'OmniNX' footer '{ini_file(Release Info,pack_version)}' +ini_file /config/omninx/manifest.ini +json '{"null":"true","{ini_file(OmniNX,version)}":"false"}' +ini_file ./include/updater/RELEASE.ini +set-ini-val ./include/updater/config.ini 'OmniNX' footer_highlight '{json({ini_file(Release Info,pack_version)})}' + +set-ini-val ./include/updater/config.ini 'Switch Firmware' footer '{ini_file(Release Info,firmware_version)}' +json '{"null":"true","{hos_version}":"false"}' +set-ini-val ./include/updater/config.ini 'Switch Firmware' footer_highlight '{json({ini_file(Release Info,firmware_version)})}' + +set-ini-val ./include/updater/config.ini 'Omni Downloader' footer '{ini_file(Release Info,pack_version)}' +ini_file ./include/updater/CURRENT.ini +json '{"null":"true","{ini_file(OmniNX Downloader,version)}":"false"}' +ini_file ./include/updater/RELEASE.ini +set-ini-val ./include/updater/config.ini 'Omni Downloader' footer_highlight '{json({ini_file(Release Info,pack_version)})}' + +ini_file /config/omninx/manifest.ini +json '{"null":"notify","{ini_file(OmniNX,version)}":""}' +ini_file ./include/updater/RELEASE.ini +'{json({ini_file(Release Info,pack_version)})}' '{WARNING_SYMBOL} Pack update verfügbar!' 24 + +ini_file ./include/updater/RELEASE.ini +json '{"null":"notify","{hos_version}":""}' +'{json({ini_file(Release Info,firmware_version)})}' '{WARNING_SYMBOL} Firmware update verfügbar!' 24 diff --git a/include/updater/change_channel.ini b/include/updater/change_channel.ini new file mode 100644 index 0000000..a1df7e5 --- /dev/null +++ b/include/updater/change_channel.ini @@ -0,0 +1,14 @@ +[Pack Varianten] + +[Light Pack] +ini_file '/config/omninx/manifest.ini' +set-ini-val '/config/omninx/manifest.ini' 'OmniNX' 'channel_pack' 'Light' +set-ini-val '/config/omninx/manifest.ini' 'OmniNX' 'update_channel' '0' +[Standard Pack] +ini_file '/config/omninx/manifest.ini' +set-ini-val '/config/omninx/manifest.ini' 'OmniNX' 'channel_pack' 'Standard' +set-ini-val '/config/omninx/manifest.ini' 'OmniNX' 'update_channel' '2' +[OC Pack] +ini_file '/config/omninx/manifest.ini' +set-ini-val '/config/omninx/manifest.ini' 'OmniNX' 'channel_pack' 'OC' +set-ini-val '/config/omninx/manifest.ini' 'OmniNX' 'update_channel' '1' \ No newline at end of file diff --git a/include/updater/config.ini b/include/updater/config.ini new file mode 100644 index 0000000..05dac2e --- /dev/null +++ b/include/updater/config.ini @@ -0,0 +1,8 @@ +[OmniNX Pack] +footer= +footer_highlight= + +[Switch Firmware] +footer= +footer_highlight= + diff --git a/include/updater/updater.ini b/include/updater/updater.ini new file mode 100644 index 0000000..c7d12b9 --- /dev/null +++ b/include/updater/updater.ini @@ -0,0 +1,80 @@ +;title='OmniNX Updater' +;creator=Woody2408, NiklasCFW +;version=1.0.0 +;about='OmniNX Updater' +;show_widget=true + +[@CFW Pack] + +[Version] +;mode=table +;background=true +;gap=20 +ini_file '/config/omninx/manifest.ini' +'Pack Variante' = '{ini_file(OmniNX,channel_pack)}' +'Zurzeit installiert' = '{ini_file(OmniNX,version)}' + +[OmniNX] +try: +download https://git.niklascfw.de/api/v1/repos/OmniNX/OmniNX/releases?limit=1 /config/ultrahand/downloads/omninx-api.json +json_file /config/ultrahand/downloads/omninx-api.json +ini_file '/config/omninx/manifest.ini' +download {json_file(0,assets,{ini_file(OmniNX,update_channel)},browser_download_url)} /config/ultrahand/downloads/OmniNX.zip +unzip /config/ultrahand/downloads/OmniNX.zip / +delete /config/ultrahand/downloads/omninx-api.json +delete /config/ultrahand/downloads/OmniNX.zip +notify '{WARNING_SYMBOL} Führe in Hekate fort' 24 + +[*Update Channel ändern] +;mini=true +;mode=forwarder +package_source ./change_channel.ini +refresh-to *Update Channel ändern + +[gap] +;mode=table +;background=false +;gap=30 + +[Version] +;mode=table +;background=true +;gap=20 +'Zurzeit installiert' = '{hos_version}' + +[Switch Firmware] +try: +ini_file ./RELEASE.ini +download https://git.niklascfw.de/api/v1/repos/OmniNX/NX_Firmware/releases?limit=1 /config/ultrahand/downloads/firmware-api.json +json_file /config/ultrahand/downloads/firmware-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/firmware.zip +mkdir '/Firmware.{ini_file(Release Info,firmware_version)}/' +unzip '/config/ultrahand/downloads/firmware.zip' '/Firmware.{ini_file(Release Info,firmware_version)}/' +delete '/config/ultrahand/downloads/firmware-api.json' +delete '/config/ultrahand/downloads/firmware.zip' +notify '{WARNING_SYMBOL} Führe in Daybreak fort' 24 + +[gap] +;mode=table +;background=false +;gap=30 + +[Package Info] + +[@Erweitert] + +[Version] +;mode=table +;background=true +;gap=20 +ini_file './CURRENT.ini' +'Zurzeit installiert' = '{ini_file(OmniNX Downloader,version)}' + +[Omni Downloader] +try: +download https://git.niklascfw.de/api/v1/repos/OmniNX/Omni-Downloader/releases?limit=1 /config/ultrahand/downloads/omni-downloader-api.json +json_file /config/ultrahand/downloads/omni-downloader-api.json +download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/omni-downloader.zip +unzip /config/ultrahand/downloads/omni-downloader.zip '/switch/.packages/' +delete /config/ultrahand/downloads/omni-downloader-api.json +delete /config/ultrahand/downloads/omni-downloader.zip \ No newline at end of file diff --git a/package.ini b/package.ini new file mode 100644 index 0000000..21a4ef1 --- /dev/null +++ b/package.ini @@ -0,0 +1,48 @@ +;creator=Woody2408 +;version=1.0.0 +;about='OmniNX Downloader' + +[@CFW Pack] + +[Version] +;mode=table +;background=true +;gap=20 +ini_file './include/updater/config.ini' +'Nach neuen Update suchen' = '' + +[*OmniNX Updater] +;mode=forwarder +exec boot ./include/updater/boot_package.ini +package_source ./include/updater/updater.ini + + +[gap] +;mode=table +;background=false +;gap=30 + + +[*Apps] +;mode=forwarder +exec boot ./include/apps/boot_package.ini +package_source ./include/apps/apps.ini + +[*Betriebssysteme] +;mode=forwarder +package_source ./include/os/os.ini + +[*Emulatoren] +;mode=forwarder +exec boot ./include/emulatoren/boot_package.ini +package_source ./include/emulatoren/emulatoren.ini + +[*System Module] +;mode=forwarder +exec boot ./include/sysmodules/boot_package.ini +package_source ./include/sysmodules/sysmodules.ini + +[*Overlays] +;mode=forwarder +exec boot ./include/overlays/boot_package.ini +package_source ./include/overlays/overlays.ini