mirror of
https://github.com/RetroDECK/RetroDECK.git
synced 2025-02-27 16:55:40 +00:00
Merge remote-tracking branch 'origin/cooker' into feat/game-downloader
This commit is contained in:
commit
82e60ebd0d
.github/workflows
build-godot.ymlbuild_release.ymlcooker-selfhosted.ymlemulator-updates.yamlflathub_push_main.ymlgodot.ymlmain-selfhosted.yml
.gitignore.gitmodulesREADME.mdautomation_tools
appdata_management.shautomation_task_list.cfgcodename_wordlist.txtcooker_build_id.shflatpak_build_bundle.shflatpak_build_download_only.shflatpak_build_only.shinstall_dependencies.shmain_version_checker.shpost_build_check.shpre_build_automation.shsearch_missing_libs.shupdate_dates.shversion_extractor.sh
config
PCSX2
cemu
controllerProfiles
SteamInput-P1-Gyro.xmlSteamInput-P1.xmlSteamInput-P2.xmlSteamInput-P3.xmlSteamInput-P4.xmlcontroller0.xmlcontroller1.xmlcontroller2.xmlcontroller3.xml
settings.xmlcitra
dolphin
DSUClient.iniDolphin.iniFreeLookController.iniGBA.iniGCKeyNew.iniGCPadNew.iniGFX.iniHotkeys.iniLogger.iniQt.iniWiimoteNew.ini
duckstation
ecwolf
es-de
gzdoom
mame
melonds
patches/updates
pico-8
portmaster
ppssppsdl
primehack
config
Dolphin.iniFreeLookController.iniGBA.iniGCKeyNew.iniGCPadNew.iniGFX.iniHotkeys.iniLogger.iniQt.iniWiimoteNew.ini
Profiles
GCPad
Hotkeys
Wiimote
data
GameSettings
R3M/0EXTRA - Steam Deck Button Prompts/Common
tex1_32x32_10ca6dca25531ce9_4.ddstex1_32x32_173f3a24d9dd4a66_6.ddstex1_32x32_2a304e0fc49a883c_5.ddstex1_32x32_43be3d9c0c2e2dbd_6.ddstex1_32x32_47002754133e4ff5_6.ddstex1_32x32_4eb90bb511d2b10e_4.ddstex1_32x32_54e294522955b32e_5.ddstex1_32x32_5945fd1a085a2aeb_5.ddstex1_32x32_70a90df632629730_4.ddstex1_32x32_7e31a38b70ecbddd_5.ddstex1_32x32_86475f276fb14e06_5.ddstex1_32x32_889e80824c922249_6.ddstex1_32x32_96342171475066ab_6.ddstex1_32x32_9af2d52683113ecc_6.ddstex1_32x32_a28e2885c4fe7e1c_5.dds
102
.github/workflows/build-godot.yml
vendored
Normal file
102
.github/workflows/build-godot.yml
vendored
Normal file
|
@ -0,0 +1,102 @@
|
|||
name: GoDot Configurator Build Debug
|
||||
run-name: Build Godot Configurator(DEBUG) for RetroDECK
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
job_target:
|
||||
description: 'Select the platform'
|
||||
required: true
|
||||
default: 'linux'
|
||||
type: choice
|
||||
options:
|
||||
- linux
|
||||
- windows
|
||||
- mac
|
||||
- all
|
||||
|
||||
env:
|
||||
GODOT_VERSION: 4.3
|
||||
GODOT_PROJECT_LOCATION: tools/configurator/project.godot
|
||||
EXPORT_FOLDER_LINUX: bin/Linux
|
||||
EXPORT_FOLDER_WINDOWS: bin/Windows
|
||||
EXPORT_FOLDER_MAC: bin/macOS
|
||||
APPLICATION_NAME: godot_configurator
|
||||
|
||||
jobs:
|
||||
linux-build:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: archlinux:latest
|
||||
steps:
|
||||
- name: Set up variable
|
||||
run: |
|
||||
echo "DATE=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
|
||||
echo "MAIN_FOLDER=$(pwd)" >> $GITHUB_ENV
|
||||
|
||||
- name: Installing dependencies
|
||||
run: pacman -Syu --noconfirm git bash yasm python python-pip scons gcc diffutils make wget unzip tar mingw-w64
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Prepare Godot
|
||||
run: |
|
||||
wget -q -O godot_linux.zip https://github.com/godotengine/godot-builds/releases/download/${GODOT_VERSION}-stable/Godot_v${GODOT_VERSION}-stable_linux.x86_64.zip
|
||||
unzip godot_linux.zip
|
||||
wget -q -O godot_export_templates.tpz https://github.com/godotengine/godot-builds/releases/download/${GODOT_VERSION}-stable/Godot_v${GODOT_VERSION}-stable_export_templates.tpz
|
||||
mkdir -p ~/.local/share/godot/export_templates/${GODOT_VERSION}.stable
|
||||
unzip godot_export_templates.tpz -d ~/.local/share/godot/export_templates/${GODOT_VERSION}.stable
|
||||
mv ~/.local/share/godot/export_templates/${GODOT_VERSION}.stable/templates/* ~/.local/share/godot/export_templates/${GODOT_VERSION}.stable/
|
||||
sed -i 's/config\/version=\"[^"]\*"/config\/version=\"${{ env.DATE }}-debug\"/' ${{ env.GODOT_PROJECT_LOCATION }}
|
||||
|
||||
# DEBUG BUILDS
|
||||
# LINUX
|
||||
- name: Building debug Linux
|
||||
if: ${{ github.event.inputs.job_target == 'linux' || github.event.inputs.job_target == 'all' }}
|
||||
run: |
|
||||
mkdir -p ${{ env.EXPORT_FOLDER_LINUX }}
|
||||
./Godot_v${GODOT_VERSION}-stable_linux.x86_64 --import ${{ env.GODOT_PROJECT_LOCATION }} --quiet --headless --export-debug "Linux/X11 64-bit" ${{ env.MAIN_FOLDER }}/${{ env.EXPORT_FOLDER_LINUX }}/${{ env.APPLICATION_NAME}}.x86_64
|
||||
chmod +x ${{ env.EXPORT_FOLDER_LINUX }}/${{ env.APPLICATION_NAME }}.sh
|
||||
chmod +x ${{ env.EXPORT_FOLDER_LINUX }}/${{ env.APPLICATION_NAME }}.x86_64
|
||||
|
||||
# TAR to keep permissions set above
|
||||
- name: Tar File
|
||||
if: ${{ github.event.inputs.job_target == 'linux' || github.event.inputs.job_target == 'all' }}
|
||||
run: tar cvf ${{ env.APPLICATION_NAME}}_linux_debug_${{ env.DATE}}.tar ${{ env.EXPORT_FOLDER_LINUX}}
|
||||
|
||||
- name: Uploading GDExtension artifact debug
|
||||
if: ${{ github.event.inputs.job_target == 'linux' || github.event.inputs.job_target == 'all' }}
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ env.APPLICATION_NAME }}_linux_debug_${{ env.DATE }}.tar
|
||||
path: ${{ env.APPLICATION_NAME }}_linux_debug_${{ env.DATE }}.tar
|
||||
|
||||
# WINDOWS
|
||||
- name: Building debug Windows
|
||||
if: ${{ github.event.inputs.job_target == 'windows' || github.event.inputs.job_target == 'all' }}
|
||||
run: |
|
||||
mkdir -p ${{ env.EXPORT_FOLDER_WINDOWS }}
|
||||
./Godot_v${GODOT_VERSION}-stable_linux.x86_64 --import ${{ env.GODOT_PROJECT_LOCATION }} --quiet --headless --export-debug "windows" ${{ env.MAIN_FOLDER }}/${{ env.EXPORT_FOLDER_WINDOWS }}/${{ env.APPLICATION_NAME}}.exe
|
||||
|
||||
- name: Uploading GDExtension artifact debug
|
||||
if: ${{ github.event.inputs.job_target == 'windows' || github.event.inputs.job_target == 'all' }}
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ env.APPLICATION_NAME }}_windows_debug_${{ env.DATE }}
|
||||
path: ${{ env.EXPORT_FOLDER_WINDOWS }}/
|
||||
|
||||
#MAC
|
||||
- name: Building debug macOS
|
||||
if: ${{ github.event.inputs.job_target == 'mac' || github.event.inputs.job_target == 'all' }}
|
||||
run: |
|
||||
mkdir -p ${{ env.EXPORT_FOLDER_MAC }}
|
||||
./Godot_v${GODOT_VERSION}-stable_linux.x86_64 --import ${{ env.GODOT_PROJECT_LOCATION }} --quiet --headless --export-debug "macOS" ${{ env.MAIN_FOLDER }}/${{ env.EXPORT_FOLDER_MAC}}/${{ env.APPLICATION_NAME}}.app
|
||||
|
||||
- name: Uploading GDExtension artifact debug
|
||||
if: ${{ github.event.inputs.job_target == 'mac' || github.event.inputs.job_target == 'all' }}
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ env.APPLICATION_NAME }}_mac_debug_${{ env.DATE }}
|
||||
path: ${{ env.EXPORT_FOLDER_MAC }}/
|
359
.github/workflows/build_release.yml
vendored
Normal file
359
.github/workflows/build_release.yml
vendored
Normal file
|
@ -0,0 +1,359 @@
|
|||
name: "Build RetroDECK"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- cooker*
|
||||
- feat*
|
||||
- branch/cooker*
|
||||
paths:
|
||||
- '.github/workflows/**'
|
||||
- 'automation_tools/**'
|
||||
- 'config/**'
|
||||
- 'functions/**'
|
||||
- 'rd-submodules/**'
|
||||
- '*.sh'
|
||||
- 'net.retrodeck.retrodeck.yml'
|
||||
- 'net.retrodeck.retrodeck.appdata.xml'
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
- cooker*
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
|
||||
# Build RetroDECK Job
|
||||
Build_RetroDECK:
|
||||
runs-on: retrodeck
|
||||
outputs:
|
||||
TAG: ${{ steps.version-tag.outputs.TAG }}
|
||||
RELEASE_BODY: ${{ steps.version-tag.outputs.RELEASE_BODY }}
|
||||
MAKE_LATEST: ${{ steps.version-tag.outputs.MAKE_LATEST }}
|
||||
|
||||
steps:
|
||||
# Remove Stuck Mounts
|
||||
- name: Remove stuck mounts
|
||||
run: |
|
||||
sudo umount -f /home/ubuntu/actions-runner/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/*
|
||||
sudo umount -f $HOME/actions-run/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/*
|
||||
continue-on-error: true
|
||||
|
||||
# Clone Repository
|
||||
- name: Clone RetroDECK repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
# Install Dependencies
|
||||
- name: Install dependencies
|
||||
run: curl "https://raw.githubusercontent.com/RetroDECK/components-template/main/automation_tools/install_dependencies.sh" | bash
|
||||
|
||||
# Generate Build ID for Cooker Branches
|
||||
- name: Generate cooker build ID
|
||||
if: github.ref != 'refs/heads/main'
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_build_id.sh"
|
||||
|
||||
# Getting branch name, this needs as PR should be managed in a different way
|
||||
- name: Get Branch Name
|
||||
run: |
|
||||
if [[ "$GITHUB_EVENT_NAME" == "pull_request" || "$GITHUB_EVENT_NAME" == "pull_request_target" ]]; then
|
||||
branch_name="$GITHUB_HEAD_REF"
|
||||
else
|
||||
branch_name="$GITHUB_REF_NAME"
|
||||
fi
|
||||
echo "Branch name: $branch_name"
|
||||
echo "BRANCH_NAME=$branch_name" >> $GITHUB_ENV
|
||||
|
||||
# Generates a version tag based on the event type (main branch, PR, or cooker) and sets it as output.
|
||||
- name: Generate Version Tag
|
||||
id: version-tag
|
||||
run: |
|
||||
# Source the version extractor script and fetch the manifest version
|
||||
source automation_tools/version_extractor.sh
|
||||
MANIFEST_VERSION="$(fetch_manifest_version)"
|
||||
|
||||
# Ensure the manifest version was successfully extracted
|
||||
if [[ -z "$MANIFEST_VERSION" ]]; then
|
||||
echo "[ERROR] Failed to extract the manifest version."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Determine the tag based on the GitHub event context
|
||||
if [[ "$GITHUB_REF" == "refs/heads/main" ]]; then
|
||||
# Main branch tag
|
||||
TAG="$MANIFEST_VERSION"
|
||||
MAKE_LATEST=true
|
||||
elif [[ "$GITHUB_EVENT_NAME" == "pull_request" || "$GITHUB_EVENT_NAME" == "pull_request_target" ]]; then
|
||||
# Pull request tag, sanitize the source branch
|
||||
source_branch="${GITHUB_HEAD_REF//\//-}"
|
||||
TAG="PR-$source_branch-${{ github.run_id }}"
|
||||
MAKE_LATEST=false
|
||||
else
|
||||
# Other branches (cooker branches)
|
||||
TAG="$MANIFEST_VERSION-${{ env.BUILD_ID }}"
|
||||
MAKE_LATEST=true
|
||||
fi
|
||||
|
||||
echo "TAG=$TAG" >> $GITHUB_ENV
|
||||
echo "MAKE_LATEST=$MAKE_LATEST" >> $GITHUB_ENV
|
||||
|
||||
echo "TAG=$TAG" >> $GITHUB_OUTPUT
|
||||
echo "MAKE_LATEST=$MAKE_LATEST" >> $GITHUB_OUTPUT
|
||||
|
||||
# backing up manifest in case download fails and hashes must be recalculated
|
||||
- name: Manifest backup
|
||||
run: "cp ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak"
|
||||
|
||||
- name: Run pre-build automation tasks
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh"
|
||||
|
||||
- name: "Adding flatpak portal for automated updates (Cooker only)"
|
||||
if: github.ref != 'refs/heads/main'
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_flatpak_portal_add.sh"
|
||||
|
||||
- name: "Updating release notes in appdata"
|
||||
run: "automation_tools/appdata_management.sh"
|
||||
|
||||
- name: "[DEBUG] Outputting manifest"
|
||||
run: cat net.retrodeck.retrodeck.yml
|
||||
|
||||
# Get Commits Since Last Published Release (Cooker only)
|
||||
- name: Get commits since last published release
|
||||
id: get-commits
|
||||
if: github.ref != 'refs/heads/main'
|
||||
run: |
|
||||
# Get the latest published release tag
|
||||
LATEST_TAG=$(git describe --tags $(git rev-list --tags --max-count=1) 2>/dev/null || echo "")
|
||||
|
||||
if [ -z "$LATEST_TAG" ]; then
|
||||
echo "[INFO] No previous release found. Using all commits."
|
||||
COMMITS=$(git log HEAD --pretty=format:"- %s")
|
||||
else
|
||||
echo "[INFO] Latest published release tag: $LATEST_TAG"
|
||||
COMMITS=$(git log ${LATEST_TAG}..HEAD --pretty=format:"- %s")
|
||||
fi
|
||||
|
||||
# Debug: Print the commits list
|
||||
echo "Commits since $LATEST_TAG:"
|
||||
echo "$COMMITS"
|
||||
|
||||
# Export the commits list to the GitHub environment
|
||||
echo "COMMITS=$COMMITS" >> $GITHUB_ENV
|
||||
|
||||
# - name: Extract XML Description
|
||||
# uses: Mudlet/xmlstarlet-action@master
|
||||
# id: extract-description
|
||||
# with:
|
||||
# args: sel -t -v "/component/releases/release[1]/description//text()" ./net.retrodeck.retrodeck.appdata.xml
|
||||
|
||||
# Generate Release Body
|
||||
- name: Generate release body text
|
||||
id: generate-body
|
||||
run: |
|
||||
# Initialize the release body text
|
||||
RELEASE_BODY="# Release Notes\n"
|
||||
RELEASE_BODY+="This is a cooker snapshot based on the commit: ${{ github.event.repository.full_name }}@${{github.sha}}."
|
||||
RELEASE_BODY+="On branch [${{env.BRANCH_NAME}}](https://repo.retrodeck.net/RetroDECK/RetroDECK/src/branch/${{env.BRANCH_NAME}})."
|
||||
RELEASE_BODY+="## Commits since last release\n"
|
||||
RELEASE_BODY+="$COMMITS\n\n"
|
||||
|
||||
#raw_description="${{ steps.extract-description.outputs.result }}"
|
||||
|
||||
# Convert <p> tags to markdown headers using sed
|
||||
markdown_description=$(echo "$raw_description" | sed -e 's|<p>|\n### |g' -e 's|</p>||g')
|
||||
|
||||
# Convert <li> tags to bullet points and trim spaces
|
||||
markdown_description=$(echo "$markdown_description" | sed -e 's|<ul>||g' -e 's|</ul>||g' -e 's|<li>|- |g' -e 's|</li>||g' | awk '{$1=$1;print}')
|
||||
|
||||
# Remove any remaining XML tags
|
||||
markdown_description=$(echo "$markdown_description" | sed -e 's/<[^>]*>//g')
|
||||
|
||||
# Debug: Print the markdown description
|
||||
echo "Markdown Description:"
|
||||
echo "$markdown_description"
|
||||
|
||||
# Append markdown content to the release body
|
||||
RELEASE_BODY+="$markdown_description"
|
||||
printf "RELEASE_BODY=%s\n" "$RELEASE_BODY" >> $GITHUB_ENV
|
||||
printf "RELEASE_BODY=%s\n" "$RELEASE_BODY" >> $GITHUB_OUTPUT
|
||||
|
||||
echo "[DEBUG] CHECKPOINT 8"
|
||||
|
||||
- name: Generate a token for Rekku
|
||||
id: generate-rekku-token
|
||||
uses: actions/create-github-app-token@v1
|
||||
with:
|
||||
app-id: ${{ vars.REKKU_APP_ID }}
|
||||
private-key: ${{ secrets.REKKU_PRIVATE_KEY }}
|
||||
repositories: "RetroDECK,Cooker"
|
||||
owner: "RetroDECK"
|
||||
|
||||
- name: "Build flatpak: download only"
|
||||
id: flatpak-download
|
||||
run: |
|
||||
git config --global credential.helper store
|
||||
echo "https://${{ steps.generate-rekku-token.outputs.token }}@github.com" > ~/.git-credentials
|
||||
"${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh"
|
||||
|
||||
# Sometimes flatpak download fails, in this case it tries a second time
|
||||
- name: "Build flatpak: download only (retry)"
|
||||
if: steps.flatpak-download.outcome == 'failure'
|
||||
run: |
|
||||
git config --global credential.helper store
|
||||
echo "https://${{ steps.generate-rekku-token.outputs.token }}@github.com" > ~/.git-credentials
|
||||
echo "Download failed, maybe some hash changed since the build start."
|
||||
echo "Recalculating hashes and retrying download..."
|
||||
rm -f "{GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml"
|
||||
cp "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml"
|
||||
"${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh"
|
||||
"${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh"
|
||||
|
||||
- name: Build flatpak
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_only.sh"
|
||||
|
||||
- name: Create Bundle
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_bundle.sh"
|
||||
|
||||
# Upload artifacts for other jobs
|
||||
- name: Upload Build Artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: retrodeck-artifacts
|
||||
include-hidden-files: true
|
||||
path: |
|
||||
RetroDECK*.flatpak
|
||||
RetroDECK*.flatpak.sha
|
||||
RetroDECK*Artifact.tar.gz
|
||||
|
||||
GitHub-publish:
|
||||
runs-on: ubuntu-latest
|
||||
needs: Build_RetroDECK
|
||||
env:
|
||||
TAG: ${{ needs.Build_RetroDECK.outputs.TAG }}
|
||||
RELEASE_BODY: ${{ needs.Build_RetroDECK.outputs.RELEASE_BODY }}
|
||||
MAKE_LATEST: ${{ needs.Build_RetroDECK.outputs.MAKE_LATEST }}
|
||||
steps:
|
||||
|
||||
- name: Generate a token for Rekku
|
||||
id: generate-rekku-token
|
||||
uses: actions/create-github-app-token@v1
|
||||
with:
|
||||
app-id: ${{ vars.REKKU_APP_ID }}
|
||||
private-key: ${{ secrets.REKKU_PRIVATE_KEY }}
|
||||
repositories: "RetroDECK,Cooker"
|
||||
owner: "RetroDECK"
|
||||
|
||||
- name: Download all workflow run artifacts
|
||||
uses: actions/download-artifact@v4.1.8
|
||||
|
||||
# Determine if Target Repository is Main or not, in that case is a Cooker build
|
||||
- name: Determine target repository
|
||||
id: set-repo
|
||||
run: |
|
||||
if [[ "$GITHUB_REF" == "refs/heads/main" ]]; then
|
||||
echo "REPO_NAME=RetroDECK" >> $GITHUB_ENV
|
||||
else
|
||||
echo "REPO_NAME=Cooker" >> $GITHUB_ENV
|
||||
fi
|
||||
|
||||
# Publish Release
|
||||
- name: Publish release
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
tag: ${{ env.TAG }}
|
||||
name: "RetroDECK ${{ env.TAG }}"
|
||||
body: ${{ env.RELEASE_BODY }}
|
||||
artifacts: "retrodeck-artifacts/*.flatpak,retrodeck-artifacts/*.flatpak.sha,retrodeck-artifacts/*Artifact.tar.gz"
|
||||
allowUpdates: true
|
||||
makeLatest: ${{ env.MAKE_LATEST }}
|
||||
repo: ${{ env.REPO_NAME }}
|
||||
token: ${{ steps.generate-rekku-token.outputs.token }}
|
||||
|
||||
# Rewrite Tag (for Main Branch Only)
|
||||
- name: Rewrite Tag
|
||||
if: github.ref == 'refs/heads/main'
|
||||
run: |
|
||||
git submodule deinit -f --all
|
||||
git fetch --tags
|
||||
if git rev-parse --verify "${{ env.TAG }}" >/dev/null 2>&1; then
|
||||
git tag -d "${{ env.TAG }}"
|
||||
git push --delete origin "${{ env.TAG }}"
|
||||
fi
|
||||
git tag "${{ env.TAG }}"
|
||||
git push origin "${{ env.TAG }}"
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ steps.generate-rekku-token.outputs.token }}
|
||||
|
||||
# As backup we're even publishing the build on our own selfhosted Fogejo instance
|
||||
# Forgejo Publish Job if main branch
|
||||
# Forgejo-publish:
|
||||
# runs-on: ubuntu-latest
|
||||
# needs: Build_RetroDECK
|
||||
# env:
|
||||
# TAG: ${{ needs.Build_RetroDECK.outputs.TAG }}
|
||||
# RELEASE_BODY: ${{ needs.Build_RetroDECK.outputs.RELEASE_BODY }}
|
||||
# MAKE_LATEST: ${{ needs.Build_RetroDECK.outputs.MAKE_LATEST }}
|
||||
# steps:
|
||||
#
|
||||
# - name: Download all workflow run artifacts
|
||||
# uses: actions/download-artifact@v4.1.8
|
||||
#
|
||||
# - name: Forgejo-publish
|
||||
# if: github.ref == 'refs/heads/main'
|
||||
# uses: RetroDECK/components-template/.github/workflows/fogejo_publish_release.yml@main
|
||||
# with:
|
||||
# release_body: ${{ env.RELEASE_BODY }}
|
||||
# artifacts: "retrodeck-artifacts/*.flatpak,retrodeck-artifacts/*.flatpak.sha,retrodeck-artifacts/*Artifact.tar.gz"
|
||||
# tag: ${{ env.TAG }}
|
||||
|
||||
|
||||
# Automated Tests
|
||||
Automated_Tests:
|
||||
runs-on: ubuntu-latest
|
||||
needs: Build_RetroDECK
|
||||
continue-on-error: true
|
||||
|
||||
steps:
|
||||
|
||||
# Clone Repository
|
||||
- name: Clone RetroDECK repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
# Download RetroDECK Artifacts
|
||||
- name: Download all workflow run artifacts
|
||||
uses: actions/download-artifact@v4.1.8
|
||||
|
||||
# Install Dependencies
|
||||
- name: Install dependencies
|
||||
run: curl "https://raw.githubusercontent.com/RetroDECK/components-template/main/automation_tools/install_dependencies.sh" | bash
|
||||
|
||||
# Install RetroDECK Flatpak
|
||||
- name: Install RetroDECK Flatpak
|
||||
continue-on-error: true
|
||||
run: |
|
||||
ls -lah retrodeck-artifacts
|
||||
flatpak install --user --bundle --noninteractive -y "retrodeck-artifacts/RetroDECK"*".flatpak
|
||||
|
||||
# Run Post Build Checks
|
||||
- name: Run Post Build Checks
|
||||
continue-on-error: true
|
||||
run: /bin/bash ./automation_tools/post_build_check.sh
|
||||
|
||||
# Search for Missing Libraries
|
||||
- name: Search for Missing Libraries
|
||||
continue-on-error: true
|
||||
run: /bin/bash ./automation_tools/search_missing_libs.sh
|
||||
|
||||
# Uninstall RetroDECK Flatpak - Not needed on a thorwaway ubuntu-latest
|
||||
# - name: Uninstall RetroDECK Flatpak
|
||||
# run: |
|
||||
# flatpak remove --user --noninteractive -y net.retrodeck.retrodeck
|
||||
|
219
.github/workflows/cooker-selfhosted.yml
vendored
219
.github/workflows/cooker-selfhosted.yml
vendored
|
@ -1,219 +0,0 @@
|
|||
name: "Build cooker"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- cooker*
|
||||
- feat*
|
||||
paths:
|
||||
- '.github/workflows/**'
|
||||
- 'automation_tools/**'
|
||||
- 'emu-configs/**'
|
||||
- 'es-configs/**'
|
||||
- 'functions/**'
|
||||
- 'rd-submodules/**'
|
||||
- '*.sh'
|
||||
- 'net.retrodeck.retrodeck.yml'
|
||||
- 'net.retrodeck.retrodeck.appdata.xml'
|
||||
pull_request:
|
||||
branches:
|
||||
- cooker*
|
||||
|
||||
# Italy (CET): 11:00 PM
|
||||
# Japan (JST): 7:00 AM
|
||||
# schedule:
|
||||
# - cron: '0 22 * * *'
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
|
||||
Building_RetroDECK:
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
|
||||
# Circumventing this bug: https://github.com/flatpak/flatpak-builder/issues/317
|
||||
- name: Remove stuck mounts
|
||||
run: sudo umount -f /home/ubuntu/actions-runner/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/*
|
||||
continue-on-error: true
|
||||
|
||||
- name: Clone RetroDECK repo
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: 'true'
|
||||
|
||||
- name: "Install dependencies"
|
||||
run: "automation_tools/install_dependencies.sh"
|
||||
|
||||
- name: Generate cooker build ID
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_build_id.sh"
|
||||
|
||||
- name: Get branch name
|
||||
id: branch_name
|
||||
run: echo "BRANCH_NAME=$(echo $GITHUB_REF | sed 's|refs/heads/||')" >> $GITHUB_ENV
|
||||
|
||||
# if it's a feature branch it will not marked as "latest" cooker version
|
||||
- name: "Set makeLatest (cooker only)"
|
||||
run: |
|
||||
if [[ "$BRANCH_NAME" == 'feat/'* || "$BRANCH_NAME" == 'refs/'* ]]; then
|
||||
echo "MAKE_LATEST=false" >> $GITHUB_ENV
|
||||
else
|
||||
echo "MAKE_LATEST=true" >> $GITHUB_ENV
|
||||
fi
|
||||
|
||||
# if the branch is coming from a PR the tag should be manually built
|
||||
- name: "Generate version tag"
|
||||
run: |
|
||||
if [[ "$BRANCH_NAME" == 'refs/'* ]]; then
|
||||
pr_number=$(echo ${{env.BRANCH_NAME}} | awk -F'/' '{print $3}')
|
||||
source_branch=$(curl -s "https://api.github.com/repos/XargonWan/RetroDECK/pulls/$pr_number" | jq -r '.head.ref')
|
||||
source_branch=${source_branch//\//-}
|
||||
echo "[DEBUG] source branch is: $source_branch"
|
||||
echo "TAG=PR-$pr_number-$source_branch-${{ env.buildid }}" >> $GITHUB_ENV
|
||||
else
|
||||
echo "TAG=${{env.BRANCH_NAME}}-${{ env.buildid }}" >> $GITHUB_ENV
|
||||
fi
|
||||
echo "Version TAG: ${{ env.TAG }}"
|
||||
|
||||
# backing up manifest in case download fails and hashes must be recalculated
|
||||
- name: Manifest backup
|
||||
run: "cp ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak"
|
||||
|
||||
- name: Run pre-build automation tasks
|
||||
run : "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh"
|
||||
|
||||
- name: "Adding flatpak portal for automated updates (cooker only)"
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_flatpak_portal_add.sh"
|
||||
|
||||
- name: "Updating release notes in appdata"
|
||||
run: "automation_tools/appdata_management.sh"
|
||||
|
||||
- name: "[DEBUG] Outputting manifest"
|
||||
run: cat net.retrodeck.retrodeck.yml
|
||||
|
||||
- name: "Build flatpak: download only"
|
||||
id: "flatpak-download"
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh"
|
||||
continue-on-error: true
|
||||
|
||||
# Sometimes flatpak download fails, in this case it tries a second time
|
||||
- name: "Build flatpak: download only (retry)"
|
||||
if: steps.flatpak-download.outcome == 'failure'
|
||||
run: |
|
||||
echo "Download failed, maybe some hash changed since the build start."
|
||||
echo "Recalculating hashes and retrying download..."
|
||||
rm -f "{GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml"
|
||||
cp "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml"
|
||||
"${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh"
|
||||
"${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh"
|
||||
|
||||
- name: Build flatpak
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_only.sh"
|
||||
|
||||
- name: Create Artifact for flathub
|
||||
run: |
|
||||
tar -czf ${GITHUB_WORKSPACE}/RetroDECK-Artifact-cooker.tar.gz -C ${GITHUB_WORKSPACE}/retrodeck-flatpak-cooker .
|
||||
hash=($(sha256sum ${GITHUB_WORKSPACE}/RetroDECK-Artifact-cooker.tar.gz))
|
||||
echo $hash > ${GITHUB_WORKSPACE}/RetroDECK-Artifact-cooker.sha
|
||||
mv -f RetroDECK-Artifact-cooker.* ${{ secrets.ARTIFACT_REPO }}
|
||||
continue-on-error: true
|
||||
|
||||
- name: Create Bundle
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_bundle.sh"
|
||||
|
||||
- name: Set environment variable with current branch name
|
||||
run: echo "GITHUB_REF_SLUG=$(git rev-parse --abbrev-ref HEAD)" >> $GITHUB_ENV
|
||||
|
||||
- name: Get commits since last release
|
||||
run: |
|
||||
# Get the latest release tag
|
||||
LATEST_TAG=$(git describe --tags --abbrev=0)
|
||||
# Get all commits since the latest release tag
|
||||
COMMITS=$(git log $LATEST_TAG..HEAD --pretty=format:"- %s")
|
||||
# Set the output variable
|
||||
echo "::set-output name=commits::$COMMITS"
|
||||
id: commits
|
||||
continue-on-error: true
|
||||
|
||||
- name: Publish the flatpak in a new cooker release
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
tag: "${{env.TAG}}"
|
||||
body: |
|
||||
# Release Notes (Cooker)
|
||||
This is a cooker snapshot based on the commit: ${{ github.event.repository.full_name }}@${{github.sha}}.
|
||||
On branch [${{env.BRANCH_NAME}}](https://github.com/XargonWan/RetroDECK/tree/${{env.BRANCH_NAME}}).
|
||||
|
||||
## Commits since last release
|
||||
${{ steps.commits.outputs.commits }}
|
||||
|
||||
For the full release note for this build please refer to the channel [#BETA-TESTING](https://discord.gg/WDc5C9YWMx) on our Discord server.
|
||||
|
||||
Cooker channel is provided for the community to test fixes and explore new functionality.
|
||||
Please DO NOT open issues or ask support on this build.
|
||||
|
||||
artifacts: "RetroDECK-cooker.flatpak,RetroDECK-cooker.flatpak.sha,RetroDECK-Artifact.tar.gz"
|
||||
allowUpdates: true
|
||||
makeLatest: ${{env.MAKE_LATEST}} # if it's a feat branch is not considered the latest build
|
||||
token: ${{ secrets.TRIGGER_BUILD_TOKEN }}
|
||||
repo: RetroDECK-cooker
|
||||
continue-on-error: true
|
||||
|
||||
# In case it cannot publish the release at least it's providing the flatpak file for creating a manual release
|
||||
- name: Upload RetroDECK-cooker.flatpak
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: retrodeck-flatpak
|
||||
path: RetroDECK-cooker.flatpak
|
||||
continue-on-error: true
|
||||
|
||||
# - name: Upload RetroDECK-cooker.flatpak to Gitea Release
|
||||
# run: |
|
||||
# # Set variables for Gitea host, organization, repository, access token, and release details
|
||||
# GITEA_HOST="repo.retrodeck.net"
|
||||
# ORGANIZATION="RetroDECK"
|
||||
# REPO="RetroDECK-cooker"
|
||||
# GITEA_TOKEN="${{ secrets.GITEA_TRIGGER_BUILD_TOKEN }}"
|
||||
# RELEASE_NAME="RetroDECK ${{env.TAG}}"
|
||||
# TAG="${{env.TAG}}"
|
||||
# RELEASE_BODY="# Release Notes (Cooker)
|
||||
# This is a cooker snapshot based on the commit: ${{ github.event.repository.full_name }}@${{github.sha}}.
|
||||
# On branch [${{env.BRANCH_NAME}}](https://repo.retrodeck.net/RetroDECK/RetroDECK/src/branch/${{env.BRANCH_NAME}}).
|
||||
|
||||
# ## Commits since last release
|
||||
# ${{ steps.commits.outputs.commits }}
|
||||
|
||||
# For the full release note for this build please refer to the channel [#BETA-TESTING](https://discord.gg/WDc5C9YWMx) on our Discord server.
|
||||
|
||||
# Cooker channel is provided for the community to test fixes and explore new functionality.
|
||||
# Please DO NOT open issues or ask support on this build."
|
||||
|
||||
# # Create a release using curl and capture the release ID
|
||||
# release_response=$(curl -X POST \
|
||||
# -H "Authorization: token ${GITEA_TOKEN}" \
|
||||
# -H "Content-Type: application/json" \
|
||||
# -d "{\"tag_name\":\"$TAG\",\"name\":\"$RELEASE_NAME\",\"body\":\"$RELEASE_BODY\"}" \
|
||||
# "http://$GITEA_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases")
|
||||
|
||||
# # Extract the release ID from the response
|
||||
# release_id=$(echo $release_response | jq -r '.id')
|
||||
|
||||
# # Upload artifacts
|
||||
# curl -X POST \
|
||||
# -H "Authorization: token ${GITEA_TOKEN}" \
|
||||
# -H "Content-Type: multipart/form-data" \
|
||||
# -F "attachment=@RetroDECK-cooker.flatpak" \
|
||||
# "http://$GITEA_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-cooker.flatpak"
|
||||
|
||||
# # Upload artifacts sha
|
||||
# curl -X POST \
|
||||
# -H "Authorization: token ${GITEA_TOKEN}" \
|
||||
# -H "Content-Type: multipart/form-data" \
|
||||
# -F "attachment=@RetroDECK-cooker.flatpak.sha" \
|
||||
# "http://$GITEA_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-cooker.flatpak.sha"
|
||||
|
||||
# curl -X POST \
|
||||
# -H "Authorization: token ${GITEA_TOKEN}" \
|
||||
# -H "Content-Type: multipart/form-data" \
|
||||
# -F "attachment=@RetroDECK-Artifact.tar.gz" \
|
||||
# "http://$GITEA_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-Artifact.tar.gz"
|
56
.github/workflows/emulator-updates.yaml
vendored
Normal file
56
.github/workflows/emulator-updates.yaml
vendored
Normal file
|
@ -0,0 +1,56 @@
|
|||
name: Check Emulator Updates
|
||||
|
||||
on:
|
||||
# schedule:
|
||||
# - cron: '0 18 * * *'
|
||||
# push:
|
||||
# branches:
|
||||
# - main
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
check-updates:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: '3.x'
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install flatpak-builder-tools
|
||||
|
||||
- name: Check for emulator updates
|
||||
run: |
|
||||
flatpak-builder --check-updates ./net.retrodeck.retrodeck.yml --modules "modulo1,modulo2" # Sostituisci modulo1,modulo2 con i tuoi moduli specifici
|
||||
|
||||
- name: Configure Git
|
||||
run: |
|
||||
git config --global user.name "github-actions[bot]"
|
||||
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
||||
|
||||
- name: Create or update branch
|
||||
run: |
|
||||
git fetch origin
|
||||
if git rev-parse --verify origin/feat/auto-emulator-updates; then
|
||||
git branch -D feat/auto-emulator-updates
|
||||
fi
|
||||
git checkout -b feat/auto-emulator-updates
|
||||
git add .
|
||||
git commit -m "Update emulators"
|
||||
git push --set-upstream origin feat/auto-emulator-updates --force
|
||||
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v5
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
source: feat/auto-emulator-updates
|
||||
destination: cooker-0.8.2b
|
||||
title: 'Automated Emulator Updates'
|
||||
body: 'This PR contains automated updates for specified emulators.'
|
4
.github/workflows/flathub_push_main.yml
vendored
4
.github/workflows/flathub_push_main.yml
vendored
|
@ -26,7 +26,7 @@ jobs:
|
|||
fi
|
||||
git clone --recursive https://github.com/flathub/net.retrodeck.retrodeck.git flathub
|
||||
cd $gits_folder
|
||||
git clone --recursive https://github.com/XargonWan/RetroDECK RetroDECK
|
||||
git clone --recursive https://github.com/RetroDECK/RetroDECK RetroDECK
|
||||
cd $gits_folder/RetroDECK
|
||||
|
||||
relname="main-"$(git rev-parse --short HEAD)
|
||||
|
@ -83,7 +83,7 @@ jobs:
|
|||
# curl -sL \
|
||||
# -H "Accept: application/vnd.github+json" \
|
||||
# -H "Authorization: Bearer ${{ secrets.TRIGGER_BUILD_TOKEN }}" \
|
||||
# https://api.github.com/repos/XargonWan/RetroDECK-cooker/releases \
|
||||
# https://api.github.com/repos/RetroDECK/Cooker/releases \
|
||||
# | jq .[0].tag_name \
|
||||
# | tr -d \" \
|
||||
# )
|
||||
|
|
26
.github/workflows/godot.yml
vendored
Normal file
26
.github/workflows/godot.yml
vendored
Normal file
|
@ -0,0 +1,26 @@
|
|||
name: Building a mOnKeyX Project
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ feat/godot-uk ]
|
||||
pull_request:
|
||||
branches: [ feat/godot-uk ]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name : exportGame
|
||||
uses: firebelley/godot-export@v5.2.1
|
||||
with:
|
||||
godot_executable_download_url: https://download.tuxfamily.org/godotengine/4.2.2/Godot_v4.2.2-stable_linux.x86_64.zip
|
||||
godot_export_templates_download_url: https://download.tuxfamily.org/godotengine/4.2.2/Godot_v4.2.2-stable_export_templates.tpz
|
||||
relative_project_path: tools/rd-config-test/
|
||||
create_release: true
|
||||
env:
|
||||
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
||||
|
157
.github/workflows/main-selfhosted.yml
vendored
157
.github/workflows/main-selfhosted.yml
vendored
|
@ -1,157 +0,0 @@
|
|||
name: "Build main"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- '.github/workflows/**'
|
||||
- 'automation_tools/**'
|
||||
- 'emu-configs/**'
|
||||
- 'es-configs/**'
|
||||
- 'functions/**'
|
||||
- 'rd-submodules/**'
|
||||
- '*.sh'
|
||||
- 'net.retrodeck.retrodeck.yml'
|
||||
- 'net.retrodeck.retrodeck.appdata.xml'
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
|
||||
jobs:
|
||||
|
||||
Building_RetroDECK:
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
|
||||
# Circumventing this bug: https://github.com/flatpak/flatpak-builder/issues/317
|
||||
- name: Remove stuck mounts
|
||||
run: sudo umount -f /home/ubuntu/actions-runner/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/*
|
||||
continue-on-error: true
|
||||
|
||||
- name: Clone RetroDECK repo
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: 'true'
|
||||
|
||||
- name: "Install dependencies"
|
||||
run: "automation_tools/install_dependencies.sh"
|
||||
|
||||
# backing up manifest in case download fails and hashes must be recalculated
|
||||
- name: Manifest backup
|
||||
run: "cp ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak"
|
||||
|
||||
- name: Run pre-build automation tasks
|
||||
run : "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh"
|
||||
|
||||
- name: Read manifest content
|
||||
id: read_manifest
|
||||
run: echo "::set-output name=file_content::$(cat net.retrodeck.retrodeck.yml)"
|
||||
|
||||
# - name: "Updating release notes in appdata"
|
||||
# run: "automation_tools/appdata_management.sh"
|
||||
|
||||
- name: Check versions (main only)
|
||||
id: check_version_string
|
||||
run: "automation_tools/main_version_checker.sh"
|
||||
|
||||
- name: "[DEBUG] Outputting manifest"
|
||||
run: cat net.retrodeck.retrodeck.yml
|
||||
|
||||
- name: "Build flatpak: download only"
|
||||
id: "flatpak-download"
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh"
|
||||
continue-on-error: true
|
||||
|
||||
# Sometimes flatpak download fails, in this case it tries a second time
|
||||
- name: "Build flatpak: download only (retry)"
|
||||
if: steps.flatpak-download.outcome == 'failure'
|
||||
run: |
|
||||
echo "Download failed, maybe some hash changed since the build start."
|
||||
echo "Recalculating hashes and retrying download..."
|
||||
rm -f "{GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml"
|
||||
cp "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml"
|
||||
"${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh"
|
||||
"${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh"
|
||||
|
||||
- name: Build flatpak
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_only.sh"
|
||||
|
||||
- name: Create Artifact for flathub
|
||||
run: |
|
||||
tar -czf ${GITHUB_WORKSPACE}/RetroDECK-Artifact.tar.gz -C ${GITHUB_WORKSPACE}/retrodeck-flatpak-main .
|
||||
hash=($(sha256sum ${GITHUB_WORKSPACE}/RetroDECK-Artifact.tar.gz))
|
||||
echo $hash > ${GITHUB_WORKSPACE}/RetroDECK-Artifact.sha
|
||||
mv -f RetroDECK-Artifact.* ${{ secrets.ARTIFACT_REPO }}
|
||||
|
||||
- name: Create Bundle
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_bundle.sh"
|
||||
|
||||
- name: Getting version info
|
||||
id: version
|
||||
run: |
|
||||
appdata="https://raw.githubusercontent.com/XargonWan/RetroDECK/main/net.retrodeck.retrodeck.appdata.xml"
|
||||
REL_VER=$(curl -s $appdata | xmlstarlet sel -t -v "//release/@version" | head -1)
|
||||
DES="$(curl -s $appdata | xmlstarlet sel -t -m "//release[1]" -v "description" -n | sed '1,2d;$d;s/^ */- /;/^- $/d')"
|
||||
echo "REL_VER=$REL_VER" >> $GITHUB_ENV
|
||||
echo -e "# Release Notes\n" >> "body.md"
|
||||
echo "$DES" >> "body.md"
|
||||
|
||||
- name: Publish the flatpak in a new release
|
||||
uses: ncipollo/release-action@v1
|
||||
env:
|
||||
REL_VER: ${{ env.REL_VER }}
|
||||
with:
|
||||
tag: ${{ env.REL_VER }}
|
||||
name: "RetroDECK v${{ env.REL_VER }}"
|
||||
bodyFile: "body.md"
|
||||
artifacts: "RetroDECK.flatpak,RetroDECK.flatpak.sha,RetroDECK-Artifact.tar.gz"
|
||||
allowUpdates: true
|
||||
makeLatest: true
|
||||
token: ${{ secrets.TRIGGER_BUILD_TOKEN }}
|
||||
repo: RetroDECK
|
||||
continue-on-error: true
|
||||
|
||||
# In case it cannot publish the release at least it's providing the flatpak file for creating a manual release
|
||||
- name: Upload RetroDECK.flatpak
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: retrodeck-flatpak
|
||||
path: RetroDECK.flatpak
|
||||
continue-on-error: true
|
||||
|
||||
- name: Publish the flatpak in a new release on Gitea
|
||||
uses: ncipollo/release-action@v1
|
||||
env:
|
||||
REL_VER: ${{ env.REL_VER }}
|
||||
with:
|
||||
tag: ${{ env.REL_VER }}
|
||||
name: "RetroDECK v${{ env.REL_VER }}"
|
||||
bodyFile: "body.md"
|
||||
artifacts: "RetroDECK.flatpak,RetroDECK-Artifact.tar.gz"
|
||||
allowUpdates: true
|
||||
makeLatest: true
|
||||
token: ${{ secrets.GITEA_TRIGGER_BUILD_TOKEN }}
|
||||
repo: "https://repo.retrodeck.net/RetroDECK/RetroDECK"
|
||||
continue-on-error: true
|
||||
|
||||
- name: Upload RetroDECK.flatpak to Gitea Release
|
||||
run: |
|
||||
curl -X POST \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
-F "file=@RetroDECK.flatpak" \
|
||||
"https://repo.retrodeck.net/RetroDECK/RetroDECK/releases/${{ env.REL_VER }}/assets?name=RetroDECK.flatpak"
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.GITEA_TRIGGER_BUILD_TOKEN }}
|
||||
|
||||
- name: Upload RetroDECK.flatpak.sha to Gitea Release
|
||||
run: |
|
||||
curl -X POST \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
-F "file=@RetroDECK.flatpak.sha" \
|
||||
"https://repo.retrodeck.net/RetroDECK/RetroDECK/releases/${{ env.REL_VER }}/assets?name=RetroDECK.flatpak.sha"
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.GITEA_TRIGGER_BUILD_TOKEN }}
|
6
.gitignore
vendored
6
.gitignore
vendored
|
@ -18,10 +18,14 @@ backup
|
|||
tmp
|
||||
.godot
|
||||
rd-submodules/es-de/patches-tmp*
|
||||
.local/
|
||||
retrodeck-repo
|
||||
buildid
|
||||
*.bak
|
||||
incconfigs/
|
||||
.github/workflows/cooker-monkeyx.yml
|
||||
*.flatpak
|
||||
*.flatpak.sha
|
||||
net.retrodeck.retrodeck.cached.yml
|
||||
|
||||
# Python #
|
||||
##########
|
||||
|
|
9
.gitmodules
vendored
9
.gitmodules
vendored
|
@ -1,9 +0,0 @@
|
|||
[submodule "rd-submodules/shared-modules"]
|
||||
path = rd-submodules/shared-modules
|
||||
url = https://github.com/flathub/shared-modules.git
|
||||
[submodule "rd-submodules/retroarch"]
|
||||
path = rd-submodules/retroarch
|
||||
url = https://github.com/flathub/org.libretro.RetroArch.git
|
||||
[submodule "rd-submodules/ryujinx"]
|
||||
path = rd-submodules/ryujinx
|
||||
url = https://github.com/flathub/org.ryujinx.Ryujinx
|
27
README.md
27
README.md
|
@ -1,13 +1,13 @@
|
|||
<p float="center">
|
||||
<img src="https://github.com/XargonWan/RetroDECK/blob/main/res/logo.png?raw=true" alt="RetroDECK logo" width="600"/>
|
||||
<img src="https://github.com/RetroDECK/RetroDECK/blob/main/res/logo.png?raw=true" alt="RetroDECK logo" width="600"/>
|
||||
</p>
|
||||
|
||||
# RetroDECK on your device!
|
||||
|
||||
|
||||
<p float="center">
|
||||
<img src="https://github.com/XargonWan/RetroDECK/blob/main/res/screenshots/screen05.jpeg?raw=true" alt="screenshot" width="300"/>
|
||||
<img src="https://github.com/XargonWan/RetroDECK/blob/main/res/screenshots/screen06.jpeg?raw=true" alt="screenshot" width="300"/>
|
||||
<img src="https://github.com/RetroDECK/RetroDECK/blob/main/res/screenshots/screen05.jpeg?raw=true" alt="screenshot" width="300"/>
|
||||
<img src="https://github.com/RetroDECK/RetroDECK/blob/main/res/screenshots/screen06.jpeg?raw=true" alt="screenshot" width="300"/>
|
||||
</p>
|
||||
|
||||
Instead of having several different emulators, engines and frontends on your Linux/SteamOS system you only need one: RetroDECK.
|
||||
|
@ -15,7 +15,7 @@ Instead of having several different emulators, engines and frontends on your Lin
|
|||

|
||||

|
||||

|
||||

|
||||

|
||||
[](https://retrodeck.readthedocs.io/en/latest/?badge=latest)
|
||||
|
||||
**The RetroDECK Wiki & FAQ**
|
||||
|
@ -77,7 +77,7 @@ For our long term vision you can check out the following wiki page:
|
|||
Use the supports channels on [Discord](https://discord.gg/WDc5C9YWMx) `🤝-community-support` and `🆘-support`.
|
||||
### The RetroDECK community:
|
||||
[Website](https://retrodeck.net) <br/>
|
||||
[Wiki](https://github.com/XargonWan/RetroDECK/wiki) <br/>
|
||||
[Wiki](https://github.com/RetroDECK/RetroDECK/wiki) <br/>
|
||||
[Discord](https://discord.gg/WDc5C9YWMx)<br/>
|
||||
[Lemmy](https://lemmy.zip/c/retrodeck)<br/>
|
||||
[Subreddit](https://www.reddit.com/r/retrodeck)
|
||||
|
@ -96,21 +96,22 @@ Read up here on how to help out, there is something for everyone:
|
|||
## Our repositories:
|
||||
| Name | Description |
|
||||
|-------------------------------------------------------------|-----------------------------------------------------------|
|
||||
| [RetroDECK](https://github.com/XargonWan/RetroDECK) | This one, our main repo where the core of the project is |
|
||||
| [RetroDECK-cooker](https://github.com/XargonWan/RetroDECK-cooker) | Where we publish our test build, no code is hosted here |
|
||||
| [RetroDECK-Wiki](https://github.com/XargonWan/RetroDECK-Wiki) | Where our wiki source code is |
|
||||
| [RetroDECK-website](https://github.com/XargonWan/RetroDECK-website) | Where our website source code is |
|
||||
| [RetroDECK](https://github.com/RetroDECK/RetroDECK) | This one, our main repo where the core of the project is |
|
||||
| [Cooker](https://github.com/RetroDECK/Cooker) | Where we publish our test build, no code is hosted here |
|
||||
| [RetroDECK/Wiki](https://github.com/RetroDECK/Wiki) | Where our wiki source code is |
|
||||
| [RetroDECK-website](https://github.com/RetroDECK/RetroDECK-website) | Where our website source code is |
|
||||
| [RetroDECK on Flathub](https://github.com/flathub/net.retrodeck.retrodeck) | Our little space in Flathub's organization |
|
||||
| [RetroDECK-MAME](https://github.com/XargonWan/RetroDECK-MAME) | MAME is big to build, so it's pre-built here and then imported in the build |
|
||||
| [RetroDECK-ES-DE](https://github.com/XargonWan/RetroDECK-ES-DE) | This is where we store our patched fork of ES-DE |
|
||||
| [RetroDECK/MAME](https://github.com/RetroDECK/MAME) | MAME is big to build, so it's pre-built here and then imported in the build |
|
||||
| [RetroDECK/ES-DE](https://github.com/RetroDECK/ES-DE) | This is where we store our patched fork of ES-DE |
|
||||
|
||||
And many more, for the full list please check our [repositories page on GitHub](https://github.com/orgs/RetroDECK/repositories).
|
||||
|
||||
# The RetroDECK Wiki
|
||||
|
||||
Please check out the [Wiki](https://github.com/XargonWan/RetroDECK/wiki) for even more information.
|
||||
Please check out the [Wiki](https://github.com/RetroDECK/RetroDECK/wiki) for even more information.
|
||||
|
||||
## The FAQ
|
||||
The RetroDECK [FAQ](https://github.com/XargonWan/RetroDECK/wiki/FAQs%3A-Frequently-asked-questions) on the wiki has a vast variety of questions and answers.
|
||||
The RetroDECK [FAQ](https://github.com/RetroDECK/RetroDECK/wiki/FAQs%3A-Frequently-asked-questions) on the wiki has a vast variety of questions and answers.
|
||||
|
||||
# How to get support?
|
||||
Use the supports channels on [Discord](https://discord.gg/WDc5C9YWMx).
|
||||
|
|
|
@ -7,30 +7,30 @@ source automation_tools/version_extractor.sh
|
|||
|
||||
# Fetch appdata version
|
||||
appdata_version=$(fetch_appdata_version)
|
||||
log i "Appdata:\t\t$appdata_version"
|
||||
echo -e "Appdata:\t\t$appdata_version"
|
||||
|
||||
# Defining manifest file location
|
||||
appdata_file="net.retrodeck.retrodeck.appdata.xml"
|
||||
|
||||
# Check if release with appdata_version already exists
|
||||
if grep -q "version=\"$appdata_version\"" "$appdata_file"; then
|
||||
log i "Deleting existing release version $appdata_version..."
|
||||
echo -e "Deleting existing release version $appdata_version..."
|
||||
|
||||
# Remove the existing release entry
|
||||
sed -i "/<release version=\"$appdata_version\"/,/<\/release>/d" "$appdata_file"
|
||||
fi
|
||||
|
||||
log i "Adding new release version $appdata_version..."
|
||||
echo -e "Adding new release version $appdata_version..."
|
||||
|
||||
# Get today's date in the required format (YYYY-MM-DD)
|
||||
today_date=$(date +"%Y-%m-%d")
|
||||
log i "Today is $today_date"
|
||||
echo -e "Today is $today_date"
|
||||
|
||||
# Construct the release snippet
|
||||
release_snippet="\
|
||||
<releases>
|
||||
<release version=\"$appdata_version\" date=\"$today_date\">
|
||||
<url>https://github.com/XargonWan/RetroDECK/releases/tag/$appdata_version</url>
|
||||
<url>https://github.com/RetroDECK/RetroDECK/releases/tag/$appdata_version</url>
|
||||
<description>
|
||||
RELEASE_NOTES_PLACEHOLDER
|
||||
</description>
|
||||
|
@ -41,7 +41,8 @@ xml_content=$(cat "$appdata_file")
|
|||
|
||||
# Replace RELEASE_NOTES_PLACEHOLDER with the actual release notes
|
||||
# TODO
|
||||
git clone https://github.com/XargonWan/RetroDECK.wiki.git /tmp/wiki
|
||||
rm -rf /tmp/wiki
|
||||
git clone https://github.com/RetroDECK/RetroDECK.wiki.git /tmp/wiki
|
||||
|
||||
# Path to the markdown file
|
||||
wiki="/tmp/wiki/Version-history:-Patch-Notes.md"
|
||||
|
|
|
@ -1,15 +1,29 @@
|
|||
# The proper format for this file is
|
||||
# ACTION^PLACEHOLDERTEXT^URL^REPO(Optional)
|
||||
# hash^DOOMSHAPLACEHOLDER^https://buildbot.libretro.com/assets/cores/DOOM/Doom%20%28Shareware%29.zip
|
||||
hash^DUCKSTATIONSHAPLACEHOLDER^https://github.com/stenzek/duckstation/releases/download/preview/DuckStation-x64.AppImage
|
||||
# Please leave some newlines in the end of this file or it will break
|
||||
|
||||
latestcommit^UNIVERSALDYNAMICINPUTCOMMITPLACEHOLDER^https://github.com/Venomalia/UniversalDynamicInput^main
|
||||
outside_file^VERSIONPLACEHOLDER^${GITHUB_WORKSPACE}/buildid
|
||||
branch^THISBRANCH
|
||||
THISREPO^THISREPO
|
||||
|
||||
#hash^RASHAPLACEHOLDER^https://buildbot.libretro.com/nightly/linux/x86_64/RetroArch.7z
|
||||
hash^SAMEDUCKSHAPLACEHOLDER^https://buildbot.libretro.com/nightly/linux/x86_64/latest/sameduck_libretro.so.zip
|
||||
hash^PPSSPPBIOSHASHPLACEHOLDER^https://github.com/hrydgard/ppsspp/archive/refs/heads/master.zip
|
||||
hash^MSXBIOSHASHPLACEHOLDER^http://bluemsx.msxblue.com/rel_download/blueMSXv282full.zip
|
||||
hash^XEMUHDDHASHPLACEHOLDER^https://github.com/mborgerson/xemu-hdd-image/releases/latest/download/xbox_hdd.qcow2.zip
|
||||
hash^VITA3KSHAPLACEHOLDER^https://github.com/Vita3K/Vita3K/releases/download/continuous/ubuntu-latest.zip
|
||||
hash^RANIGHTLYCORESPLACEHOLDER^https://buildbot.libretro.com/nightly/linux/x86_64/RetroArch_cores.7z
|
||||
hash^RETRODECKMAMEPLACEHOLDER^"https://github.com/XargonWan/RetroDECK-MAME/releases/download/$(curl -s https://api.github.com/repos/XargonWan/RetroDECK-MAME/releases/latest | grep -oP '"tag_name": "\K(.*?)(?=")')/RetroDECK-MAME-Artifact.tar.gz"
|
||||
url^RETRODECKMAMEURLPLACEHOLDER^"https://github.com/XargonWan/RetroDECK-MAME/releases/download/$(curl -s https://api.github.com/repos/XargonWan/RetroDECK-MAME/releases/latest | grep -oP '"tag_name": "\K(.*?)(?=")')/RetroDECK-MAME-Artifact.tar.gz"
|
||||
latestcommit^UNIVERSALDYNAMICINPUTCOMMITPLACEHOLDER^https://github.com/Venomalia/UniversalDynamicInput^main
|
||||
outside_file^VERSIONPLACEHOLDER^${GITHUB_WORKSPACE}/buildid
|
||||
branch^THISBRANCH
|
||||
|
||||
hash^RETRODECKESDELATEST^https://github.com/RetroDECK/ES-DE/releases/latest/download/RetroDECK-ES-DE-Artifact.tar.gz
|
||||
hash^RETRODECKPPSSPPLATEST^https://github.com/RetroDECK/org.ppsspp.PPSSPP/releases/latest/download/RetroDECK-PPSSPP-Artifact.tar.gz
|
||||
hash^RETRODECKDOLPHINLATEST^https://github.com/RetroDECK/org.DolphinEmu.dolphin-emu/releases/latest/download/RetroDECK-dolphin-Artifact.tar.gz
|
||||
hash^RETRODECKPRIMEHACKLATEST^https://github.com/RetroDECK/io.github.shiiion.primehack/releases/latest/download/RetroDECK-primehack-Artifact.tar.gz
|
||||
hash^RETRODECKMELONDSLATEST^https://github.com/RetroDECK/net.kuribo64.melonDS/releases/latest/download/RetroDECK-melonds-Artifact.tar.gz
|
||||
hash^RETRODECKSOLARUSLATEST^https://github.com/RetroDECK/org.solarus_games.solarus.Launcher/releases/latest/download/RetroDECK-solarus-Artifact.tar.gz
|
||||
hash^RETRODECKGZDOOMLATEST^https://github.com/RetroDECK/org.zdoom.GZDoom/releases/latest/download/RetroDECK-gzdoom-Artifact.tar.gz
|
||||
hash^RETRODECKMAMELATEST^https://github.com/RetroDECK/MAME/releases/latest/download/RetroDECK-MAME-Artifact.tar.gz
|
||||
hash^PORTMASTERLATESTSHA^https://github.com/PortsMaster/PortMaster-GUI/releases/latest/download/retrodeck.portmaster.zip
|
||||
hash^RACITRAPLACEHOLDER^https://buildbot.libretro.com/nightly/linux/x86_64/latest/citra_libretro.so.zip
|
||||
hash^RETRODECKRPCS3LATEST^https://github.com/RetroDECK/net.rpcs3.RPCS3/releases/latest/download/RetroDECK-Artifact.tar.gz
|
File diff suppressed because it is too large
Load diff
|
@ -6,5 +6,5 @@ word2=$(shuf -n 1 ${GITHUB_WORKSPACE}/automation_tools/codename_wordlist.txt)
|
|||
capitalized_word2="$(tr '[:lower:]' '[:upper:]' <<< ${word2:0:1})${word2:1}"
|
||||
result=$capitalized_word1$capitalized_word2
|
||||
echo $result > ${GITHUB_WORKSPACE}/buildid
|
||||
echo "buildid=$result" >> $GITHUB_ENV
|
||||
echo "BUILD_ID=$result" >> $GITHUB_ENV
|
||||
echo "VersionID is $result"
|
|
@ -3,9 +3,9 @@
|
|||
# This is building the bundle RetroDECK.flatpak after the download and build steps are done
|
||||
|
||||
if [ "${GITHUB_REF##*/}" = "main" ]; then
|
||||
flatpak build-bundle "${GITHUB_WORKSPACE}/.local" "$GITHUB_WORKSPACE/RetroDECK.flatpak" net.retrodeck.retrodeck
|
||||
flatpak build-bundle "${GITHUB_WORKSPACE}/retrodeck-repo" "$GITHUB_WORKSPACE/RetroDECK.flatpak" net.retrodeck.retrodeck
|
||||
sha256sum RetroDECK.flatpak > RetroDECK.flatpak.sha
|
||||
else
|
||||
flatpak build-bundle "${GITHUB_WORKSPACE}/.local" "$GITHUB_WORKSPACE/RetroDECK-cooker.flatpak" net.retrodeck.retrodeck
|
||||
flatpak build-bundle "${GITHUB_WORKSPACE}/retrodeck-repo" "$GITHUB_WORKSPACE/RetroDECK-cooker.flatpak" net.retrodeck.retrodeck
|
||||
sha256sum RetroDECK-cooker.flatpak > RetroDECK-cooker.flatpak.sha
|
||||
fi
|
|
@ -12,12 +12,12 @@ else
|
|||
FOLDER=retrodeck-flatpak-cooker
|
||||
fi
|
||||
|
||||
mkdir -vp "${GITHUB_WORKSPACE}"/{.local,retrodeck-flatpak-cooker}
|
||||
mkdir -vp "${GITHUB_WORKSPACE}"/{retrodeck-repo,retrodeck-flatpak-cooker}
|
||||
|
||||
flatpak-builder --user --force-clean \
|
||||
--install-deps-from=flathub \
|
||||
--install-deps-from=flathub-beta \
|
||||
--repo="${GITHUB_WORKSPACE}/.local" \
|
||||
--repo="${GITHUB_WORKSPACE}/retrodeck-repo" \
|
||||
--download-only \
|
||||
"${GITHUB_WORKSPACE}/${FOLDER}" \
|
||||
net.retrodeck.retrodeck.yml
|
||||
|
|
|
@ -12,13 +12,23 @@ else
|
|||
FOLDER=retrodeck-flatpak-cooker
|
||||
fi
|
||||
|
||||
mkdir -vp ${GITHUB_WORKSPACE}/.local
|
||||
mkdir -vp ${GITHUB_WORKSPACE}/retrodeck-repo
|
||||
mkdir -vp ${GITHUB_WORKSPACE}/"$FOLDER"
|
||||
|
||||
flatpak-builder --user --force-clean \
|
||||
# Pass the args to Flatpak Builder
|
||||
FLATPAK_BUILD_EXTRA_ARGS="${@}"
|
||||
echo "Passing additional args to flatpak builder: $FLATPAK_BUILD_EXTRA_ARGS"
|
||||
|
||||
command="flatpak-builder --user --force-clean $FLATPAK_BUILD_EXTRA_ARGS \
|
||||
--install-deps-from=flathub \
|
||||
--install-deps-from=flathub-beta \
|
||||
--repo=${GITHUB_WORKSPACE}/.local \
|
||||
--repo=${GITHUB_WORKSPACE}/retrodeck-repo \
|
||||
--disable-download \
|
||||
"${GITHUB_WORKSPACE}/$FOLDER" \
|
||||
net.retrodeck.retrodeck.yml
|
||||
\"${GITHUB_WORKSPACE}/$FOLDER\" \
|
||||
net.retrodeck.retrodeck.yml"
|
||||
|
||||
# Echo the command for verification
|
||||
echo -e "Executing command:\n$command"
|
||||
|
||||
# Execute the command
|
||||
eval $command
|
|
@ -1,31 +0,0 @@
|
|||
#!/bin/bash
|
||||
# This script is installing the required dependencies to correctly run the pipeline and build the flatpak
|
||||
|
||||
unset pkg_mgr
|
||||
|
||||
# rpm-ostree must be checked before dnf because a dnf (wrapper) command also works on rpm-ostree distros (not what we want)
|
||||
for potential_pkg_mgr in apt pacman rpm-ostree dnf; do
|
||||
command -v "$potential_pkg_mgr" &> /dev/null && pkg_mgr="$potential_pkg_mgr" && break
|
||||
done
|
||||
|
||||
case "$pkg_mgr" in
|
||||
apt)
|
||||
sudo apt install -y flatpak flatpak-builder p7zip-full xmlstarlet bzip2 curl jq
|
||||
;;
|
||||
pacman)
|
||||
sudo pacman -S --noconfirm flatpak flatpak-builder p7zip xmlstarlet bzip2
|
||||
;;
|
||||
rpm-ostree)
|
||||
echo "When using a distro with rpm-ostree, you shouldn't build directly on the host. Try using a distrobox."
|
||||
exit 1
|
||||
;;
|
||||
dnf)
|
||||
sudo dnf install -y flatpak flatpak-builder p7zip p7zip-plugins xmlstarlet bzip2 curl
|
||||
;;
|
||||
*)
|
||||
echo "Package manager $pkg_mgr not supported. Please open an issue."
|
||||
;;
|
||||
esac
|
||||
|
||||
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||
flatpak remote-add --user --if-not-exists flathub-beta https://flathub.org/beta-repo/flathub-beta.flatpakrepo
|
|
@ -42,8 +42,8 @@ appdata_version=$(fetch_appdata_version)
|
|||
echo -e "Appdata:\t\t$appdata_version"
|
||||
|
||||
# Additional checks
|
||||
if [[ "$manifest_version" == "main" || "$manifest_version" == "THISBRANCH" ]]; then
|
||||
echo "Manifest version cannot be 'main' or 'THISBRANCH'. Please fix it."
|
||||
if [[ "$manifest_version" == "main" || "$manifest_version" == "THISBRANCH" || "$manifest_version" == *"cooker"* ]]; then
|
||||
echo "Manifest version cannot be 'main', 'THISBRANCH', or contain 'cooker'. Please fix it."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
|
93
automation_tools/post_build_check.sh
Executable file
93
automation_tools/post_build_check.sh
Executable file
|
@ -0,0 +1,93 @@
|
|||
#!/bin/bash
|
||||
# This script runs entirely inside the Flatpak sandbox for net.retrodeck.retrodeck
|
||||
|
||||
# Flatpak App ID
|
||||
FLATPAK_APP_ID="net.retrodeck.retrodeck"
|
||||
|
||||
# Log file inside the Flatpak sandbox
|
||||
LOG_FILE="$HOME/retrodeck-post-build-check.log"
|
||||
|
||||
# Clear previous log
|
||||
> "$LOG_FILE"
|
||||
|
||||
# Ensure global.sh is sourced inside the Flatpak sandbox
|
||||
GLOBAL_SH_PATH="/app/libexec/global.sh"
|
||||
|
||||
# Check if the global.sh script exists
|
||||
if ! flatpak run --command=ls "$FLATPAK_APP_ID" "$GLOBAL_SH_PATH" &> /dev/null; then
|
||||
echo "✗ global.sh not found at $GLOBAL_SH_PATH" | tee -a "$LOG_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Source global.sh to load the `features` variable
|
||||
echo "Sourcing $GLOBAL_SH_PATH to load features" | tee -a "$LOG_FILE"
|
||||
features=$(flatpak run --command=bash "$FLATPAK_APP_ID" -c "source $GLOBAL_SH_PATH && echo \$features")
|
||||
|
||||
# Ensure `features` variable is set
|
||||
if [ -z "$features" ]; then
|
||||
echo "✗ Failed to load features from $GLOBAL_SH_PATH" | tee -a "$LOG_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Extract launch commands using jq
|
||||
echo "Extracting launch commands from $features" | tee -a "$LOG_FILE"
|
||||
commands=($(flatpak run --command=jq "$FLATPAK_APP_ID" -r '.emulator | to_entries[] | .value.launch' "$features"))
|
||||
echo "Extracted launch commands: ${commands[@]}" | tee -a "$LOG_FILE"
|
||||
|
||||
# Timeout duration in seconds
|
||||
TIMEOUT=3
|
||||
|
||||
# Function to run command with timeout
|
||||
run_and_check() {
|
||||
local cmd="$1"
|
||||
|
||||
echo "Validating command: \"$cmd\"" | tee -a "$LOG_FILE"
|
||||
|
||||
# Verify command exists within the Flatpak sandbox
|
||||
if ! flatpak run --command=which "$FLATPAK_APP_ID" "$cmd" &> /dev/null; then
|
||||
echo "✗ Command not found: $cmd (Exit Code: 127)" | tee -a "$LOG_FILE"
|
||||
return 127
|
||||
fi
|
||||
|
||||
# Run command with timeout inside the sandbox
|
||||
flatpak run --command=timeout "$FLATPAK_APP_ID" -s TERM $TIMEOUT "$cmd" &> /dev/null &
|
||||
local pid=$!
|
||||
sleep $TIMEOUT
|
||||
|
||||
# Ensure the process is terminated
|
||||
if kill -0 $pid 2>/dev/null; then
|
||||
#echo "✗ $cmd did not terminate, killing process" | tee -a "$LOG_FILE"
|
||||
kill -9 $pid
|
||||
fi
|
||||
|
||||
local exit_code=$?
|
||||
|
||||
# Log the results
|
||||
echo "Command: $cmd, Exit Code: $exit_code" | tee -a "$LOG_FILE"
|
||||
|
||||
case $exit_code in
|
||||
0)
|
||||
echo "✓ $cmd completed successfully" | tee -a "$LOG_FILE"
|
||||
;;
|
||||
124)
|
||||
echo "✗ $cmd terminated after $TIMEOUT seconds" | tee -a "$LOG_FILE"
|
||||
;;
|
||||
137)
|
||||
echo "✗ $cmd killed after timeout" | tee -a "$LOG_FILE"
|
||||
;;
|
||||
*)
|
||||
echo "✗ $cmd failed" | tee -a "$LOG_FILE"
|
||||
;;
|
||||
esac
|
||||
|
||||
return $exit_code
|
||||
}
|
||||
|
||||
# Execute commands inside the Flatpak sandbox
|
||||
for cmd in "${commands[@]}"; do
|
||||
run_and_check "$cmd"
|
||||
done
|
||||
|
||||
echo "$LOG_FILE"
|
||||
|
||||
grep "✗" "$LOG_FILE"
|
|
@ -1,44 +1,68 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Set script to exit immediately on any error
|
||||
set -e
|
||||
|
||||
# For the file paths to work correctly, call this script with this command from the cloned repo folder root:
|
||||
# sh automation_tools/pre_build_automation.sh
|
||||
# Different actions need different information in the task list file
|
||||
# branch: This changes the placeholder text to the currently-detected GIT branch if an automated build was started from a PR environment.
|
||||
# hash: Finds the SHA256 hash of a file online and updates the placeholder in the manifest.
|
||||
# hash: Finds the SHA256 hash of a file online and updates the placeholder in the manifest.
|
||||
# Needs the URL of the file, in this line format: hash^PLACEHOLDERTEXT^url
|
||||
# latestcommit: Finds the most recent commit of a git repo and updated the placeholder in the manifest.
|
||||
# latestcommit: Finds the most recent commit of a git repo and updates the placeholder in the manifest.
|
||||
# Needs the URL of the repo and the branch to find the latest commit from, in this line format: latestcommit^PLACEHOLDERTEXT^url^branch
|
||||
# latestghtag: Finds the most recent tag on a GitHub repo, for repos that don't have normal releases, but also shouldn't use the latest commit
|
||||
# Needs the URL of the repo, in this line format: latestghtag^PLACEHOLDERTEXT^url
|
||||
# latestghrelease: Finds the download URL and SHA256 hash of the latest release from a git repo.
|
||||
# Needs the API URL of the repo, in this line format: latestappimage^PLACEHOLDERTEXT^https://api.github.com/repos/<owner-name>/<repo-name>/releases/latest^<file suffix>
|
||||
# As this command updates two different placeholders (one for the URL, one for the file hash) in the manifest,
|
||||
# Needs the API URL of the repo, in this line format: latestghrelease^PLACEHOLDERTEXT^https://api.github.com/repos/<owner-name>/<repo-name>/releases/latest^<file suffix>
|
||||
# As this command updates two different placeholders (one for the URL, one for the file hash) in the manifest,
|
||||
# the URL that would be used in the above example is "PLACEHOLDERTEXT" and the hash placeholder text would be "HASHPLACEHOLDERTEXT"
|
||||
# The "HASH" prefix of the placeholder text is hardcoded in the script
|
||||
# The "HASH" prefix of the hash placeholder text is hardcoded in the script.
|
||||
# The <file_suffix> will be the file extension or other identifying suffix at the end of the file name that can be used to select from multiple releases.
|
||||
# Example: If there are these file options for a given release:
|
||||
# yuzu-mainline-20240205-149629642.AppImage
|
||||
# yuzu-linux-20240205-149629642-source.tar.xz
|
||||
# yuzu-linux-20240205-149629642-debug.tar.xz
|
||||
# yuzu-linux-20240205-149629642-debug.tar.xz
|
||||
# Entering "AppImage" (without quotes) for the <file_suffix> will identify yuzu-mainline-20240205-149629642.AppImage
|
||||
# Entering "source-.tar.xz" (without quotes) for the <file_suffix> will identify yuzu-linux-20240205-149629642-source.tar.xz
|
||||
# Entering "debug-tar.xz" (without quotes) for the <file_suffix> will identify yuzu-linux-20240205-149629642-debug.tar.xz
|
||||
# As a file extension like ".tar.zx" can apply to multiple file options, the entire part that is appended to each release name should be included.
|
||||
# As a file extension like ".tar.xz" can apply to multiple file options, the entire part that is appended to each release name should be included.
|
||||
# The <file_suffix> will also only consider entries where the given suffix is at the end of the file name. So "AppImage" will identify "file.AppImage" but not "file.AppImage.zsync"
|
||||
# latestghreleasesha: Finds the SHA256 hash of a specific asset in the latest release from a git repo.
|
||||
# Needs the API URL of the repo, in this line format: latestghreleasesha^PLACEHOLDERTEXT^https://api.github.com/repos/<owner-name>/<repo-name>/releases/latest^<file suffix>
|
||||
# This command updates the placeholder in the manifest with the SHA256 hash of the specified asset.
|
||||
# outside_file: Prints the contents of a file from the build environment (such as the buildid file) and replaces the placeholder text with those contents.
|
||||
# outside_env_var: Gets the value of an environmental variable from the build environment (the output of "echo $var" from the terminal) and replaces the placeholder text with that value.
|
||||
# custom_command: Runs a single command explicitly as written in the $URL field of the task list, including variable and command expansion. This should work the same as if you were runnig the command directly from the terminal.
|
||||
# custom_command: Runs a single command explicitly as written in the $URL field of the task list, including variable and command expansion. This should work the same as if you were running the command directly from the terminal.
|
||||
# This command does not need a PLACEHOLDERTEXT field in the task list, so needs to be in this syntax: custom_command^^$COMMAND
|
||||
# url: This is used to calculate a dynamic URL and the value to the $caluculated_url environmental variable, for use in other subsequent commands.
|
||||
# url: This is used to calculate a dynamic URL and the value to the $calculated_url environmental variable, for use in other subsequent commands.
|
||||
|
||||
rd_manifest=${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml
|
||||
automation_task_list=${GITHUB_WORKSPACE}/automation_tools/automation_task_list.cfg
|
||||
current_branch=$(git rev-parse --abbrev-ref HEAD)
|
||||
# Define paths
|
||||
rd_manifest="${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml"
|
||||
automation_task_list="${GITHUB_WORKSPACE}/automation_tools/automation_task_list.cfg"
|
||||
|
||||
# During the PR automated tests instead of the branch name is returned "HEAD", fixing it
|
||||
if [ $current_branch == "HEAD" ]; then
|
||||
echo "Looks like we are on a PR environment, retrieving the branch name from which the PR is raised."
|
||||
current_branch=$(echo $GITHUB_REF | sed 's@refs/heads/@@')
|
||||
echo "The branch name from which the PR is raised is \"$current_branch\"."
|
||||
fi
|
||||
# Retrieve current git branch
|
||||
get_current_branch() {
|
||||
local branch=$(git rev-parse --abbrev-ref HEAD)
|
||||
if [ "$branch" == "HEAD" ]; then
|
||||
echo "$GITHUB_REF" | sed 's@refs/heads/@@'
|
||||
else
|
||||
echo "$branch"
|
||||
fi
|
||||
}
|
||||
|
||||
# Retrieve the repository URL
|
||||
get_repo_url() {
|
||||
local repo_url=$(git config --get remote.origin.url)
|
||||
# Convert SSH URL to HTTPS if needed
|
||||
if [[ "$repo_url" == git@* ]]; then
|
||||
repo_url=$(echo "$repo_url" | sed -e 's|git@|https://|' -e 's|:|/|')
|
||||
fi
|
||||
echo "$repo_url"
|
||||
}
|
||||
|
||||
current_branch=$(get_current_branch)
|
||||
current_repo_url=$(get_repo_url)
|
||||
|
||||
echo "Manifest location: $rd_manifest"
|
||||
echo "Automation task list location: $automation_task_list"
|
||||
|
@ -47,93 +71,140 @@ echo "Task list contents:"
|
|||
cat "$automation_task_list"
|
||||
echo
|
||||
|
||||
# Update all collected information
|
||||
while IFS="^" read -r action placeholder url branch
|
||||
do
|
||||
if [[ ! $action == "#"* ]] && [[ ! -z "$action" ]]; then
|
||||
case "$action" in
|
||||
# Functions to handle different actions
|
||||
handle_branch() {
|
||||
local placeholder="$1"
|
||||
echo "Replacing placeholder $placeholder with branch $current_branch"
|
||||
/bin/sed -i 's^'"$placeholder"'^'"$current_branch"'^g' "$rd_manifest"
|
||||
}
|
||||
|
||||
"branch" )
|
||||
echo
|
||||
echo "Placeholder text: $placeholder"
|
||||
echo "Current branch:" "$current_branch"
|
||||
echo
|
||||
/bin/sed -i 's^'"$placeholder"'^'"$current_branch"'^g' $rd_manifest
|
||||
;;
|
||||
handle_hash() {
|
||||
local placeholder="$1"
|
||||
local url="$2"
|
||||
local calculated_url=$(eval echo "$url")
|
||||
local hash=$(curl -sL "$calculated_url" | sha256sum | cut -d ' ' -f1)
|
||||
echo "Replacing placeholder $placeholder with hash $hash"
|
||||
/bin/sed -i 's^'"$placeholder"'^'"$hash"'^g' "$rd_manifest"
|
||||
}
|
||||
|
||||
"hash" )
|
||||
echo
|
||||
echo "Placeholder text: $placeholder"
|
||||
calculated_url=$(eval echo "$url") # in case the url has to be calculated from an expression
|
||||
echo "URL to hash: $calculated_url"
|
||||
echo
|
||||
hash=$(curl -sL "$calculated_url" | sha256sum | cut -d ' ' -f1)
|
||||
echo "Hash found: $hash"
|
||||
/bin/sed -i 's^'"$placeholder"'^'"$hash"'^' $rd_manifest
|
||||
;;
|
||||
handle_latestcommit() {
|
||||
local placeholder="$1"
|
||||
local url="$2"
|
||||
local branch="$3"
|
||||
local commit=$(git ls-remote "$url" "$branch" | cut -f1)
|
||||
echo "Replacing placeholder $placeholder with latest commit $commit"
|
||||
/bin/sed -i 's^'"$placeholder"'^'"$commit"'^g' "$rd_manifest"
|
||||
}
|
||||
|
||||
"latestcommit" )
|
||||
echo
|
||||
echo "Placeholder text: $placeholder"
|
||||
echo "Repo to get latest commit from: $url branch: $branch"
|
||||
echo
|
||||
commit=$(git ls-remote "$url" "$branch" | cut -f1)
|
||||
echo "Commit found: $commit"
|
||||
/bin/sed -i 's^'"$placeholder"'^'"$commit"'^' $rd_manifest
|
||||
;;
|
||||
handle_latestghtag() {
|
||||
local placeholder="$1"
|
||||
local url="$2"
|
||||
local tag=$(git ls-remote --tags "$url" | tail -n 1 | cut -f2 | sed 's|refs/tags/||')
|
||||
echo "Replacing placeholder $placeholder with latest tag $tag"
|
||||
/bin/sed -i 's^'"$placeholder"'^'"$tag"'^g' "$rd_manifest"
|
||||
}
|
||||
|
||||
"latestghrelease" )
|
||||
echo
|
||||
echo "Placeholder text: $placeholder"
|
||||
echo "Repo to look for AppImage releases: $url"
|
||||
echo
|
||||
ghreleaseurl=$(curl -s "$url" | grep browser_download_url | grep "$branch\""$ | cut -d : -f 2,3 | tr -d \" | sed -n 1p | tr -d ' ')
|
||||
echo "GitHub release URL found: $ghreleaseurl"
|
||||
/bin/sed -i 's^'"$placeholder"'^'"$ghreleaseurl"'^' $rd_manifest
|
||||
ghreleasehash=$(curl -sL "$ghreleaseurl" | sha256sum | cut -d ' ' -f1)
|
||||
echo "GitHub release hash found: $ghreleasehash"
|
||||
/bin/sed -i 's^'"HASHFOR$placeholder"'^'"$ghreleasehash"'^' $rd_manifest
|
||||
;;
|
||||
|
||||
"outside_file" )
|
||||
if [[ "$url" = \$* ]]; then # If value is a reference to a variable name
|
||||
eval url="$url"
|
||||
fi
|
||||
echo
|
||||
echo "Placeholder text: $placeholder"
|
||||
echo "Information being injected: $(cat $url)"
|
||||
echo
|
||||
/bin/sed -i 's^'"$placeholder"'^'"$(cat $url)"'^' $rd_manifest
|
||||
;;
|
||||
|
||||
"outside_env_var" )
|
||||
if [[ "$url" = \$* ]]; then # If value is a reference to a variable name
|
||||
eval url="$url"
|
||||
fi
|
||||
echo
|
||||
echo "Placeholder text: $placeholder"
|
||||
echo "Information being injected: $(echo $url)"
|
||||
echo
|
||||
/bin/sed -i 's^'"$placeholder"'^'"$(echo $url)"'^' $rd_manifest
|
||||
;;
|
||||
|
||||
"custom_command" )
|
||||
echo
|
||||
echo "Command to run: $url"
|
||||
echo
|
||||
eval "$url"
|
||||
;;
|
||||
|
||||
"url" )
|
||||
# this is used to calculate a dynamic url
|
||||
echo
|
||||
echo "Placeholder text: $placeholder"
|
||||
calculated_url=$(eval echo "$url")
|
||||
echo "Information being injected: $calculated_url"
|
||||
echo
|
||||
/bin/sed -i 's^'"$placeholder"'^'"$calculated_url"'^' $rd_manifest
|
||||
;;
|
||||
|
||||
esac
|
||||
handle_latestghrelease() {
|
||||
local placeholder="$1"
|
||||
local url="$2"
|
||||
local suffix="$3"
|
||||
echo "Fetching release data from: $url"
|
||||
local release_data=$(curl -s "$url")
|
||||
echo "Release data fetched."
|
||||
local ghreleaseurl=$(echo "$release_data" | jq -r ".assets[] | select(.name | endswith(\"$suffix\")).browser_download_url")
|
||||
|
||||
if [[ -z "$ghreleaseurl" ]]; then
|
||||
echo "Error: No asset found with suffix $suffix"
|
||||
exit 1
|
||||
fi
|
||||
done < "$automation_task_list"
|
||||
|
||||
local ghreleasehash=$(curl -sL "$ghreleaseurl" | sha256sum | cut -d ' ' -f1)
|
||||
|
||||
echo "Replacing placeholder $placeholder with URL $ghreleaseurl and hash $ghreleasehash"
|
||||
/bin/sed -i 's^'"$placeholder"'^'"$ghreleaseurl"'^g' "$rd_manifest"
|
||||
/bin/sed -i 's^'"HASHFOR$placeholder"'^'"$ghreleasehash"'^g' "$rd_manifest"
|
||||
}
|
||||
|
||||
handle_latestghreleasesha() {
|
||||
local placeholder="$1"
|
||||
local url="$2"
|
||||
local suffix="$3"
|
||||
echo "Fetching release data from: $url"
|
||||
local release_data=$(curl -s "$url")
|
||||
echo "Release data fetched."
|
||||
local ghreleaseurl=$(echo "$release_data" | jq -r ".assets[] | select(.name | endswith(\"$suffix\")).browser_download_url")
|
||||
|
||||
if [[ -z "$ghreleaseurl" ]]; then
|
||||
echo "Error: No asset found with suffix $suffix"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
local ghreleasehash=$(curl -sL "$ghreleaseurl" | sha256sum | cut -d ' ' -f1)
|
||||
|
||||
echo "Replacing placeholder $placeholder with hash $ghreleasehash"
|
||||
/bin/sed -i 's^'"$placeholder"'^'"$ghreleasehash"'^g' "$rd_manifest"
|
||||
}
|
||||
|
||||
handle_outside_file() {
|
||||
local placeholder="$1"
|
||||
local file_path="$2"
|
||||
if [[ "$file_path" == \$* ]]; then
|
||||
eval file_path="$file_path"
|
||||
fi
|
||||
local content=$(cat "$file_path")
|
||||
echo "Replacing placeholder $placeholder with content of file $file_path"
|
||||
/bin/sed -i 's^'"$placeholder"'^'"$content"'^g' "$rd_manifest"
|
||||
}
|
||||
|
||||
handle_outside_env_var() {
|
||||
local placeholder="$1"
|
||||
local var_name="$2"
|
||||
if [[ "$var_name" == \$* ]]; then
|
||||
eval var_name="$var_name"
|
||||
fi
|
||||
local value=$(echo "$var_name")
|
||||
echo "Replacing placeholder $placeholder with environment variable $value"
|
||||
/bin/sed -i 's^'"$placeholder"'^'"$value"'^g' "$rd_manifest"
|
||||
}
|
||||
|
||||
handle_custom_command() {
|
||||
local command="$1"
|
||||
echo "Executing custom command: $command"
|
||||
eval "$command"
|
||||
}
|
||||
|
||||
handle_url() {
|
||||
local placeholder="$1"
|
||||
local url="$2"
|
||||
local calculated_url=$(eval echo "$url")
|
||||
echo "Replacing placeholder $placeholder with calculated URL $calculated_url"
|
||||
/bin/sed -i 's^'"$placeholder"'^'"$calculated_url"'^g' "$rd_manifest"
|
||||
}
|
||||
|
||||
# Handle the THISREPO placeholder
|
||||
handle_thisrepo() {
|
||||
local placeholder="$1"
|
||||
echo "Replacing placeholder $placeholder with repository URL $current_repo_url"
|
||||
/bin/sed -i 's^'"$placeholder"'^'"$current_repo_url"'^g' "$rd_manifest"
|
||||
}
|
||||
|
||||
# Process the task list
|
||||
if [ "$use_cached" != "y" ]; then
|
||||
while IFS="^" read -r action placeholder url branch || [[ -n "$action" ]]; do
|
||||
if [[ ! "$action" == "#"* ]] && [[ -n "$action" ]]; then
|
||||
case "$action" in
|
||||
"branch" ) handle_branch "$placeholder" ;;
|
||||
"hash" ) handle_hash "$placeholder" "$url" ;;
|
||||
"latestcommit" ) handle_latestcommit "$placeholder" "$url" "$branch" ;;
|
||||
"latestghtag" ) handle_latestghtag "$placeholder" "$url" ;;
|
||||
"latestghrelease" ) handle_latestghrelease "$placeholder" "$url" "$branch" ;;
|
||||
"latestghreleasesha" ) handle_latestghreleasesha "$placeholder" "$url" "$branch" ;;
|
||||
"outside_file" ) handle_outside_file "$placeholder" "$url" ;;
|
||||
"outside_env_var" ) handle_outside_env_var "$placeholder" "$url" ;;
|
||||
"custom_command" ) handle_custom_command "$url" ;;
|
||||
"url" ) handle_url "$placeholder" "$url" ;;
|
||||
"THISREPO" ) handle_thisrepo "$placeholder" ;;
|
||||
esac
|
||||
fi
|
||||
done < "$automation_task_list"
|
||||
fi
|
||||
|
|
14
automation_tools/search_missing_libs.sh
Executable file
14
automation_tools/search_missing_libs.sh
Executable file
|
@ -0,0 +1,14 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Search for missing libraries
|
||||
missing_libs=$(flatpak run --command=sh net.retrodeck.retrodeck -c \
|
||||
"find /app/bin -type f -exec ldd {} + 2>/dev/null | grep 'not found' | awk '{print \$2}' | tr -d ':' | xargs -n 1 basename | sort | uniq | tr '\n' ' '")
|
||||
|
||||
# If there is any missing library, it will be printed, and the step will fail
|
||||
if [ -n "$missing_libs" ]; then
|
||||
echo "The following libraries are missing:"
|
||||
echo "$missing_libs"
|
||||
exit 1
|
||||
else
|
||||
echo "TEST OK: No missing libraries are found"
|
||||
fi
|
86
automation_tools/update_dates.sh
Executable file
86
automation_tools/update_dates.sh
Executable file
|
@ -0,0 +1,86 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Path to the configuration file
|
||||
CONFIG_FILE="config/retrodeck/reference_lists/features.json"
|
||||
|
||||
# Check if file exists
|
||||
if [ ! -f "$CONFIG_FILE" ]; then
|
||||
echo "Error: $CONFIG_FILE not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Get today's date in the format YYYY-MM-DD
|
||||
TODAYS_DATE=$(date +%Y-%m-%d)
|
||||
|
||||
# Update dates using jq
|
||||
jq '
|
||||
def is_leap_year($year): ($year % 4 == 0 and $year % 100 != 0) or ($year % 400 == 0);
|
||||
|
||||
def increment_date($date):
|
||||
if $date | length == 4 then
|
||||
($date[0:2] | tonumber) as $month |
|
||||
($date[2:4] | tonumber) as $day |
|
||||
if $month == 12 and $day == 31 then
|
||||
"0101"
|
||||
elif $month == 2 and $day == 28 and is_leap_year(2024) then
|
||||
"0229"
|
||||
elif $month == 2 and ($day == 28 or $day == 29) then
|
||||
"0301"
|
||||
elif $day == 30 and ($month == 4 or $month == 6 or $month == 9 or $month == 11) then
|
||||
(if ($month + 1) < 10 then "0" else "" end + (($month + 1) | tostring)) + "01"
|
||||
elif $day == 31 then
|
||||
(if ($month + 1) < 10 then "0" else "" end + (($month + 1) | tostring)) + "01"
|
||||
else
|
||||
(if $month < 10 then "0" else "" end + ($month | tostring)) +
|
||||
(if ($day + 1) < 10 then "0" else "" end + (($day + 1) | tostring))
|
||||
end
|
||||
elif $date | length == 10 then
|
||||
($date[0:4] | tonumber) as $year |
|
||||
($date[5:7] | tonumber) as $month |
|
||||
($date[8:10] | tonumber) as $day |
|
||||
if $month == 12 and $day == 31 then
|
||||
(($year + 1) | tostring) + "-01-01"
|
||||
elif $month == 2 and $day == 28 and is_leap_year($year + 1) then
|
||||
(($year + 1) | tostring) + "-02-29"
|
||||
elif $month == 2 and ($day == 28 or $day == 29) then
|
||||
(($year + 1) | tostring) + "-03-01"
|
||||
elif $day == 30 and ($month == 4 or $month == 6 or $month == 9 or $month == 11) then
|
||||
(($year + 1) | tostring) + "-" +
|
||||
(if ($month + 1) < 10 then "0" else "" end + (($month + 1) | tostring)) + "-01"
|
||||
elif $day == 31 then
|
||||
(($year + 1) | tostring) + "-" +
|
||||
(if ($month + 1) < 10 then "0" else "" end + (($month + 1) | tostring)) + "-01"
|
||||
else
|
||||
(($year + 1) | tostring) + "-" +
|
||||
(if $month < 10 then "0" else "" end + ($month | tostring)) + "-" +
|
||||
(if ($day + 1) < 10 then "0" else "" end + (($day + 1) | tostring))
|
||||
end
|
||||
else .
|
||||
end;
|
||||
|
||||
.splash_screens |= with_entries(
|
||||
.value |= (
|
||||
if has("start_date") then
|
||||
if .start_date < "'$TODAYS_DATE'" then
|
||||
.start_date = increment_date(.start_date)
|
||||
else . end
|
||||
else . end |
|
||||
if has("end_date") then
|
||||
if .end_date < "'$TODAYS_DATE'" then
|
||||
.end_date = increment_date(.end_date)
|
||||
else . end
|
||||
else . end |
|
||||
if has("full_start_date") then
|
||||
if .full_start_date < "'$TODAYS_DATE'" then
|
||||
.full_start_date = increment_date(.full_start_date)
|
||||
else . end
|
||||
else . end |
|
||||
if has("full_end_date") then
|
||||
if .full_end_date < "'$TODAYS_DATE'" then
|
||||
.full_end_date = increment_date(.full_end_date)
|
||||
else . end
|
||||
else . end
|
||||
)
|
||||
)' "$CONFIG_FILE" > "${CONFIG_FILE}.tmp" && mv "${CONFIG_FILE}.tmp" "$CONFIG_FILE"
|
||||
|
||||
echo "All applicable dates rolled forward by one day."
|
|
@ -12,7 +12,7 @@ manifest_content=$(cat "$manifest")
|
|||
|
||||
fetch_repo_version(){
|
||||
# Getting latest RetroDECK release info
|
||||
LATEST_RELEASE=$(curl -s "https://api.github.com/repos/XargonWan/RetroDECK/releases/latest")
|
||||
LATEST_RELEASE=$(curl -s "https://api.github.com/repos/RetroDECK/RetroDECK/releases/latest")
|
||||
# Extracting tag name from the latest release
|
||||
repo_version=$(echo "$LATEST_RELEASE" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
|
||||
# Printing results
|
||||
|
@ -32,3 +32,5 @@ fetch_manifest_version(){
|
|||
manifest_version=$(echo "$manifest_version" | awk '{$1=$1;print}')
|
||||
echo "$manifest_version"
|
||||
}
|
||||
|
||||
echo "Version extractor functions loaded"
|
|
@ -25,7 +25,7 @@
|
|||
</controller>
|
||||
<controller>
|
||||
<api>SDLController</api>
|
||||
<uuid>0_03000000de280000ff11000001000000</uuid>
|
||||
<uuid>0_030079f6de280000ff11000001000000</uuid>
|
||||
<display_name>Steam Virtual Gamepad</display_name>
|
||||
<rumble>0</rumble>
|
||||
<axis>
|
||||
|
@ -41,6 +41,54 @@
|
|||
<range>1</range>
|
||||
</trigger>
|
||||
<mappings>
|
||||
<entry>
|
||||
<mapping>25</mapping>
|
||||
<button>8</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>1</mapping>
|
||||
<button>1</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>2</mapping>
|
||||
<button>0</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>3</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>4</mapping>
|
||||
<button>2</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>5</mapping>
|
||||
<button>9</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>6</mapping>
|
||||
<button>10</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>7</mapping>
|
||||
<button>42</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>8</mapping>
|
||||
<button>43</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>9</mapping>
|
||||
<button>6</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>10</mapping>
|
||||
<button>4</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>11</mapping>
|
||||
<button>11</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>24</mapping>
|
||||
<button>40</button>
|
||||
|
@ -93,50 +141,6 @@
|
|||
<mapping>12</mapping>
|
||||
<button>12</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>11</mapping>
|
||||
<button>11</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>10</mapping>
|
||||
<button>4</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>9</mapping>
|
||||
<button>6</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>8</mapping>
|
||||
<button>43</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>7</mapping>
|
||||
<button>42</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>6</mapping>
|
||||
<button>10</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>5</mapping>
|
||||
<button>9</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>4</mapping>
|
||||
<button>3</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>2</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>2</mapping>
|
||||
<button>1</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>1</mapping>
|
||||
<button>0</button>
|
||||
</entry>
|
||||
</mappings>
|
||||
</controller>
|
||||
</emulated_controller>
|
|
@ -4,7 +4,7 @@
|
|||
<profile>SteamInput-P1</profile>
|
||||
<controller>
|
||||
<api>SDLController</api>
|
||||
<uuid>0_03000000de280000ff11000001000000</uuid>
|
||||
<uuid>0_030079f6de280000ff11000001000000</uuid>
|
||||
<display_name>Steam Virtual Gamepad</display_name>
|
||||
<rumble>0</rumble>
|
||||
<axis>
|
||||
|
@ -20,6 +20,10 @@
|
|||
<range>1</range>
|
||||
</trigger>
|
||||
<mappings>
|
||||
<entry>
|
||||
<mapping>25</mapping>
|
||||
<button>8</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>24</mapping>
|
||||
<button>40</button>
|
||||
|
@ -65,56 +69,56 @@
|
|||
<button>14</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>1</mapping>
|
||||
<button>0</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>2</mapping>
|
||||
<button>1</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>2</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>4</mapping>
|
||||
<button>3</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>5</mapping>
|
||||
<button>9</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>6</mapping>
|
||||
<button>10</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>7</mapping>
|
||||
<button>42</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>8</mapping>
|
||||
<button>43</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>9</mapping>
|
||||
<button>6</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>10</mapping>
|
||||
<button>4</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>11</mapping>
|
||||
<button>11</button>
|
||||
<mapping>13</mapping>
|
||||
<button>13</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>12</mapping>
|
||||
<button>12</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>13</mapping>
|
||||
<button>13</button>
|
||||
<mapping>11</mapping>
|
||||
<button>11</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>10</mapping>
|
||||
<button>4</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>9</mapping>
|
||||
<button>6</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>8</mapping>
|
||||
<button>43</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>7</mapping>
|
||||
<button>42</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>6</mapping>
|
||||
<button>10</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>5</mapping>
|
||||
<button>9</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>4</mapping>
|
||||
<button>2</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>3</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>2</mapping>
|
||||
<button>0</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>1</mapping>
|
||||
<button>1</button>
|
||||
</entry>
|
||||
</mappings>
|
||||
</controller>
|
|
@ -4,7 +4,7 @@
|
|||
<profile>SteamInput-P1</profile>
|
||||
<controller>
|
||||
<api>SDLController</api>
|
||||
<uuid>0_03000000de280000ff11000001000000</uuid>
|
||||
<uuid>0_030079f6de280000ff11000001000000</uuid>
|
||||
<display_name>Steam Virtual Gamepad</display_name>
|
||||
<rumble>0</rumble>
|
||||
<axis>
|
||||
|
@ -20,6 +20,58 @@
|
|||
<range>1</range>
|
||||
</trigger>
|
||||
<mappings>
|
||||
<entry>
|
||||
<mapping>1</mapping>
|
||||
<button>1</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>2</mapping>
|
||||
<button>0</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>3</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>4</mapping>
|
||||
<button>2</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>5</mapping>
|
||||
<button>9</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>6</mapping>
|
||||
<button>10</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>7</mapping>
|
||||
<button>42</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>8</mapping>
|
||||
<button>43</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>9</mapping>
|
||||
<button>6</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>10</mapping>
|
||||
<button>4</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>11</mapping>
|
||||
<button>11</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>12</mapping>
|
||||
<button>12</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>25</mapping>
|
||||
<button>8</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>24</mapping>
|
||||
<button>40</button>
|
||||
|
@ -64,54 +116,6 @@
|
|||
<mapping>14</mapping>
|
||||
<button>14</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>1</mapping>
|
||||
<button>0</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>2</mapping>
|
||||
<button>1</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>2</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>4</mapping>
|
||||
<button>3</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>5</mapping>
|
||||
<button>9</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>6</mapping>
|
||||
<button>10</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>7</mapping>
|
||||
<button>42</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>8</mapping>
|
||||
<button>43</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>9</mapping>
|
||||
<button>6</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>10</mapping>
|
||||
<button>4</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>11</mapping>
|
||||
<button>11</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>12</mapping>
|
||||
<button>12</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>13</mapping>
|
||||
<button>13</button>
|
|
@ -1,7 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<emulated_controller>
|
||||
<type>Wii U Pro Controller</type>
|
||||
<profile>SteamInput-P2</profile>
|
||||
<controller>
|
||||
<api>SDLController</api>
|
||||
<uuid>1_03000000de280000ff11000001000000</uuid>
|
||||
|
@ -19,65 +18,65 @@
|
|||
<range>1</range>
|
||||
</trigger>
|
||||
<mappings>
|
||||
<entry>
|
||||
<mapping>12</mapping>
|
||||
<button>11</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>13</mapping>
|
||||
<button>12</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>14</mapping>
|
||||
<button>13</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>15</mapping>
|
||||
<button>14</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>16</mapping>
|
||||
<button>7</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>17</mapping>
|
||||
<button>8</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>18</mapping>
|
||||
<button>45</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>19</mapping>
|
||||
<button>39</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>20</mapping>
|
||||
<button>44</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>21</mapping>
|
||||
<button>38</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>22</mapping>
|
||||
<button>47</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>23</mapping>
|
||||
<button>41</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>1</mapping>
|
||||
<button>0</button>
|
||||
<mapping>22</mapping>
|
||||
<button>47</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>21</mapping>
|
||||
<button>38</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>20</mapping>
|
||||
<button>44</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>19</mapping>
|
||||
<button>39</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>18</mapping>
|
||||
<button>45</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>17</mapping>
|
||||
<button>8</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>16</mapping>
|
||||
<button>7</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>15</mapping>
|
||||
<button>14</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>24</mapping>
|
||||
<button>46</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>2</mapping>
|
||||
<button>1</button>
|
||||
<button>0</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>2</button>
|
||||
<button>3</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>4</mapping>
|
||||
<button>3</button>
|
||||
<button>2</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>5</mapping>
|
||||
|
@ -103,17 +102,17 @@
|
|||
<mapping>10</mapping>
|
||||
<button>4</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>12</mapping>
|
||||
<button>11</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>25</mapping>
|
||||
<button>40</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>24</mapping>
|
||||
<button>46</button>
|
||||
<mapping>14</mapping>
|
||||
<button>13</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>1</mapping>
|
||||
<button>1</button>
|
||||
</entry>
|
||||
</mappings>
|
||||
</controller>
|
|
@ -20,25 +20,29 @@
|
|||
</trigger>
|
||||
<mappings>
|
||||
<entry>
|
||||
<mapping>24</mapping>
|
||||
<button>46</button>
|
||||
<mapping>13</mapping>
|
||||
<button>12</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>25</mapping>
|
||||
<button>40</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>12</mapping>
|
||||
<button>11</button>
|
||||
<mapping>23</mapping>
|
||||
<button>41</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>10</mapping>
|
||||
<button>4</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>22</mapping>
|
||||
<button>47</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>9</mapping>
|
||||
<button>6</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>21</mapping>
|
||||
<button>38</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>8</mapping>
|
||||
<button>43</button>
|
||||
|
@ -60,21 +64,21 @@
|
|||
<button>3</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>2</button>
|
||||
<mapping>25</mapping>
|
||||
<button>40</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>13</mapping>
|
||||
<button>12</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>14</mapping>
|
||||
<button>13</button>
|
||||
<mapping>12</mapping>
|
||||
<button>11</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>1</mapping>
|
||||
<button>0</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>14</mapping>
|
||||
<button>13</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>15</mapping>
|
||||
<button>14</button>
|
||||
|
@ -87,6 +91,10 @@
|
|||
<mapping>16</mapping>
|
||||
<button>7</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>2</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>17</mapping>
|
||||
<button>8</button>
|
||||
|
@ -104,16 +112,8 @@
|
|||
<button>44</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>21</mapping>
|
||||
<button>38</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>22</mapping>
|
||||
<button>47</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>23</mapping>
|
||||
<button>41</button>
|
||||
<mapping>24</mapping>
|
||||
<button>46</button>
|
||||
</entry>
|
||||
</mappings>
|
||||
</controller>
|
|
@ -20,25 +20,29 @@
|
|||
</trigger>
|
||||
<mappings>
|
||||
<entry>
|
||||
<mapping>24</mapping>
|
||||
<button>46</button>
|
||||
<mapping>13</mapping>
|
||||
<button>12</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>25</mapping>
|
||||
<button>40</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>12</mapping>
|
||||
<button>11</button>
|
||||
<mapping>23</mapping>
|
||||
<button>41</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>10</mapping>
|
||||
<button>4</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>22</mapping>
|
||||
<button>47</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>9</mapping>
|
||||
<button>6</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>21</mapping>
|
||||
<button>38</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>8</mapping>
|
||||
<button>43</button>
|
||||
|
@ -60,21 +64,21 @@
|
|||
<button>3</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>2</button>
|
||||
<mapping>25</mapping>
|
||||
<button>40</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>13</mapping>
|
||||
<button>12</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>14</mapping>
|
||||
<button>13</button>
|
||||
<mapping>12</mapping>
|
||||
<button>11</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>1</mapping>
|
||||
<button>0</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>14</mapping>
|
||||
<button>13</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>15</mapping>
|
||||
<button>14</button>
|
||||
|
@ -87,6 +91,10 @@
|
|||
<mapping>16</mapping>
|
||||
<button>7</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>2</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>17</mapping>
|
||||
<button>8</button>
|
||||
|
@ -104,16 +112,8 @@
|
|||
<button>44</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>21</mapping>
|
||||
<button>38</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>22</mapping>
|
||||
<button>47</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>23</mapping>
|
||||
<button>41</button>
|
||||
<mapping>24</mapping>
|
||||
<button>46</button>
|
||||
</entry>
|
||||
</mappings>
|
||||
</controller>
|
|
@ -94,9 +94,9 @@
|
|||
<TVVolume>100</TVVolume>
|
||||
<PadVolume>100</PadVolume>
|
||||
<InputVolume>100</InputVolume>
|
||||
<TVDevice>alsa_output.pci-0000_04_00.5-platform-acp5x_mach.0.HiFi__hw_acp5x_1__sink</TVDevice>
|
||||
<PadDevice>alsa_output.pci-0000_04_00.5-platform-acp5x_mach.0.HiFi__hw_acp5x_1__sink</PadDevice>
|
||||
<InputDevice>filter-chain-source</InputDevice>
|
||||
<TVDevice>default</TVDevice>
|
||||
<PadDevice>default</PadDevice>
|
||||
<InputDevice>default</InputDevice>
|
||||
</Audio>
|
||||
<Account>
|
||||
<PersistentId>2147483649</PersistentId>
|
|
@ -42,12 +42,17 @@ Threads = True
|
|||
[General]
|
||||
ISOPath0 = RETRODECKHOMEDIR/roms/wii
|
||||
ISOPath1 = RETRODECKHOMEDIR/roms/gc
|
||||
ISOPaths = 3
|
||||
ISOPaths = 2
|
||||
WiiSDCardPath = RETRODECKHOMEDIR/saves/wii/dolphin/sd.raw
|
||||
WirelessMac = 00:17:ab:83:9b:d4
|
||||
HotkeysRequireFocus = True
|
||||
RecursiveISOPaths = True
|
||||
ISOPath2 = RETRODECKHOMEDIR/roms/wii
|
||||
DumpPath = /var/data/dolphin-emu/Dump/
|
||||
LoadPath = /var/data/dolphin-emu/Load/
|
||||
NANDRootPath = /var/data/dolphin-emu/Wii/
|
||||
ResourcePackPath = /var/data/dolphin-emu/ResourcePacks/
|
||||
WFSPath =
|
||||
WiiSDCardSyncFolder = /var/data/dolphin-emu/Load/WiiSDSync/
|
||||
[NetPlay]
|
||||
TraversalChoice = direct
|
||||
[BluetoothPassthrough]
|
|
@ -7,7 +7,7 @@ SyncToHostRefreshRate = false
|
|||
IncreaseTimerResolution = true
|
||||
InhibitScreensaver = true
|
||||
StartPaused = false
|
||||
StartFullscreen = false
|
||||
StartFullscreen = true
|
||||
PauseOnFocusLoss = true
|
||||
PauseOnMenu = true
|
||||
SaveStateOnExit = false
|
||||
|
@ -42,7 +42,7 @@ FastmemMode = true
|
|||
|
||||
|
||||
[GPU]
|
||||
Renderer = Vulkan
|
||||
Renderer = OpenGL
|
||||
Adapter = AMD RADV VANGOGH
|
||||
ResolutionScale = 3
|
||||
Multisamples = 1
|
|
@ -118,7 +118,7 @@
|
|||
<string name="ApplicationUpdaterFrequency" value="never" />
|
||||
<string name="ApplicationUpdaterLastCheck" value="20230331T153206" />
|
||||
<string name="CollectionCustomGrouping" value="unthemed" />
|
||||
<string name="CollectionSystemsAuto" value="recent" />
|
||||
<string name="CollectionSystemsAuto" value="favorites,recent" />
|
||||
<string name="CollectionSystemsCustom" value="" />
|
||||
<string name="DefaultSortOrder" value="name, ascending" />
|
||||
<string name="GamelistViewStyle" value="automatic" />
|
||||
|
@ -153,13 +153,12 @@
|
|||
<string name="ScreensaverType" value="video" />
|
||||
<string name="StartupSystem" value="" />
|
||||
<string name="SystemsSorting" value="manufacturer_hwtype_year" />
|
||||
<string name="Theme" value="art-book-next-es-de" />
|
||||
<string name="Theme" value="retrodeck" />
|
||||
<string name="ThemeAspectRatio" value="automatic" />
|
||||
<string name="ThemeColorScheme" value="art-book-next" />
|
||||
<string name="ThemeFontSize" value="" />
|
||||
<string name="ThemeSet" value="art-book-next-es-de" />
|
||||
<string name="ThemeColorScheme" value="retrodeck" />
|
||||
<string name="ThemeFontSize" value="medium" />
|
||||
<string name="ThemeTransitions" value="automatic" />
|
||||
<string name="ThemeVariant" value="system-multi-gamelist-list-immersive" />
|
||||
<string name="ThemeVariant" value="carousel" />
|
||||
<string name="UIMode" value="full" />
|
||||
<string name="UIMode_passkey" value="uuddlrlrba" />
|
||||
<string name="UserThemeDirectory" value="" />
|
|
@ -68,7 +68,7 @@ else
|
|||
# Check if the .doom file exists
|
||||
if [[ ! -e "$doom_file" ]]; then
|
||||
log e "doom file not found in \"$doom_file\""
|
||||
zenity --error --no-wrap \
|
||||
rd_zenity --error --no-wrap \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK" \
|
||||
--text="File \"$doom_file\" not found. Quitting."
|
||||
|
@ -85,7 +85,7 @@ else
|
|||
# If the file is not found, exit with an error
|
||||
if [[ -z "$found_file" ]]; then
|
||||
log "[ERROR] File not found in \"$line\""
|
||||
zenity --error --no-wrap \
|
||||
rd_zenity --error --no-wrap \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK" \
|
||||
--text="File \"$doom_file\" not found. Quitting."
|
9
config/portmaster/config.json
Normal file
9
config/portmaster/config.json
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"change_channel": false,
|
||||
"first-run": true,
|
||||
"release_channel": "stable",
|
||||
"show_experimental": false,
|
||||
"theme": "default_theme",
|
||||
"theme-scheme": "Dracula",
|
||||
"version": 2
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue