diff --git a/dist/linux/io.github.fgsfdsfgs.perfect_dark.py b/dist/linux/io.github.fgsfdsfgs.perfect_dark.py deleted file mode 100644 index ea4b9815d..000000000 --- a/dist/linux/io.github.fgsfdsfgs.perfect_dark.py +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/python -import argparse -import subprocess - -xdg_data_home = os.environ["XDG_XATA_HOME"] - -# Create data/saves/mods directories if needed -for directory in ["data", "saves", "mods"]: - abs_dir = os.path.join(xdg_data_home, directory) - if not os.path.isdir(abs_dir): - os.makedirs(abs_dir) - -parser = argparse.ArgumentParser() - -# TODO: Implement ability to select game ROM and choose correct executable based on that choice -# - check for .z64 files in data path -# - if none found, exit with error message -# - if only one found: -# - check filename or md5sum and run appropriate executable -# - if no matches, exit with error message -# - for each rom: -# - if rom filename matches selected version, run game -# - else: -# - md5sum the roms one by one -# - if one matches the selected version: use that one -# - else error out - -# TODO: implement mod loading -# - if romdir parameter is relative, prefix with $XDG_DATA_HOME/mods -# - else use as is - -# TODO: implement arbitrary other parameters -# - get unmatched arguments from ArgumentParser -# - pass them through to executable - -default_args = ["--basedir", f"{xdg_data_home}/data", "--savedir", f"{xdg_data_home}/saves"] -subprocess.run(["pd"] + default_args) diff --git a/dist/linux/io.github.fgsfdsfgs.perfect_dark.sh b/dist/linux/io.github.fgsfdsfgs.perfect_dark.sh new file mode 100644 index 000000000..ca50d0a50 --- /dev/null +++ b/dist/linux/io.github.fgsfdsfgs.perfect_dark.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +# Create user data directories if necessary +userdirs=( roms saves mods ) +for path in "${userdirs[@]}"; do + if [[ ! -d "${XDG_DATA_HOME}/${path}" ]]; then + mkdir -p "${XDG_DATA_HOME}/${path}" + fi +done + +# If first parameter is one of the pd executables, execute that +# and pass the remaining parameters to it; otherwise default to +# pd and pass all arguments to it +case $1 in + "pd."*) + executable=$1 + params="${@:2}" + ;; + *) + executable=pd + params="$@" + ;; +esac + +# Run game +$executable --basedir ${XDG_DATA_HOME}/roms --savedir ${XDG_DATA_HOME}/saves $params diff --git a/dist/linux/io.github.fgsfdsfgs.perfect_dark.yaml b/dist/linux/io.github.fgsfdsfgs.perfect_dark.yaml index 91ea5877d..7ef407946 100644 --- a/dist/linux/io.github.fgsfdsfgs.perfect_dark.yaml +++ b/dist/linux/io.github.fgsfdsfgs.perfect_dark.yaml @@ -2,7 +2,7 @@ app-id: io.github.fgsfdsfgs.perfect_dark runtime: org.freedesktop.Platform runtime-version: &runtime-version '23.08' sdk: org.freedesktop.Sdk -command: io.github.fgsfdsfgs.perfect_dark.py +command: io.github.fgsfdsfgs.perfect_dark.sh finish-args: # multiarch is required for 32bit binaries @@ -71,7 +71,7 @@ modules: - type: file path: bin/pd.pal - type: file - path: io.github.fgsfdsfgs.perfect_dark.py + path: io.github.fgsfdsfgs.perfect_dark.sh - type: file path: io.github.fgsfdsfgs.perfect_dark.png - type: file @@ -87,7 +87,7 @@ modules: - mkdir -p /app/lib/i386-linux-gnu/dri/intel-vaapi-driver # port - install -Dm 755 -t /app/bin/ pd* - - install -Dm 644 ${FLATPAK_ID}.py /app/bin/${FLATPAK_ID}.py + - install -Dm 755 ${FLATPAK_ID}.sh /app/bin/${FLATPAK_ID}.sh - install -Dm 644 ${FLATPAK_ID}.desktop /app/share/applications/${FLATPAK_ID}.desktop - install -Dm 644 ${FLATPAK_ID}.metainfo.xml /app/share/metainfo/${FLATPAK_ID}.metainfo.xml - install -Dm 644 ${FLATPAK_ID}.png /app/share/icons/hicolor/256x256/apps/${FLATPAK_ID}.png