From dd5cfcd69e09e71e99cf0d2c1419f1e7bef27316 Mon Sep 17 00:00:00 2001 From: "Josh.5" Date: Mon, 6 Feb 2023 00:02:30 +0000 Subject: [PATCH] Add a plugins executor --- Dockerfile | 2 +- .../etc/cont-init.d/90-configure_plugins.sh | 16 +++++ overlay/etc/supervisor.d/plugins.ini | 16 +++++ overlay/usr/bin/start-plugins.sh | 59 +++++++++++++++++++ 4 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 overlay/etc/cont-init.d/90-configure_plugins.sh create mode 100644 overlay/etc/supervisor.d/plugins.ini create mode 100755 overlay/usr/bin/start-plugins.sh diff --git a/Dockerfile b/Dockerfile index 7fbf006..4d1fc8b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -574,7 +574,7 @@ ENV \ ENABLE_VNC_AUDIO="true" \ NEKO_PASSWORD=neko \ NEKO_PASSWORD_ADMIN=admin \ - ENABLE_SUNSHINE="false" \ + ENABLED_PLUGINS="" \ ENABLE_EVDEV_INPUTS="false" # Configure required ports diff --git a/overlay/etc/cont-init.d/90-configure_plugins.sh b/overlay/etc/cont-init.d/90-configure_plugins.sh new file mode 100644 index 0000000..860af86 --- /dev/null +++ b/overlay/etc/cont-init.d/90-configure_plugins.sh @@ -0,0 +1,16 @@ + +echo "**** Configure Plugins ****" + +if ([ "${MODE}" != "s" ] && [ "${MODE}" != "secondary" ]); then + if [ "X${ENABLED_PLUGINS:-}" != "X" ]; then + echo "Enable Plugins" + sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/plugins.ini + chmod +x /usr/bin/start-plugins.sh + else + echo "Disable Plugins" + fi +else + echo "Plugins not available when container is run in 'secondary' mode" +fi + +echo "DONE" diff --git a/overlay/etc/supervisor.d/plugins.ini b/overlay/etc/supervisor.d/plugins.ini new file mode 100644 index 0000000..6627b4c --- /dev/null +++ b/overlay/etc/supervisor.d/plugins.ini @@ -0,0 +1,16 @@ + +[program:plugins] +priority=50 +autostart=false +autorestart=false +user=%(ENV_USER)s +directory=/home/%(ENV_USER)s +command=/usr/bin/start-plugins.sh +environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s" +stopsignal=INT +stdout_logfile=/home/%(ENV_USER)s/.cache/log/plugins.log +stdout_logfile_maxbytes=10MB +stdout_logfile_backups=7 +stderr_logfile=/home/%(ENV_USER)s/.cache/log/plugins.err.log +stderr_logfile_maxbytes=10MB +stderr_logfile_backups=7 diff --git a/overlay/usr/bin/start-plugins.sh b/overlay/usr/bin/start-plugins.sh new file mode 100755 index 0000000..b235103 --- /dev/null +++ b/overlay/usr/bin/start-plugins.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +### +# File: start-plugins.sh +# Project: bin +# File Created: Sunday, 5th February 2023 10:07:02 pm +# Author: Josh.5 (jsunnex@gmail.com) +# ----- +# Last Modified: Sunday, 5th February 2023 11:55:11 pm +# Modified By: Josh.5 (jsunnex@gmail.com) +### +set -e +source /usr/bin/common-functions.sh + + +# CATCH TERM SIGNAL: +_term() { + kill -TERM "$plugins_pid" 2>/dev/null +} +trap _term SIGTERM SIGINT + + +echo "USER: $USER" +echo "HOME: $HOME" +echo "ENABLED_PLUGINS: $ENABLED_PLUGINS" + +# CONFIGURE: +# Set the plugins project directory +plugins_dir="/home/${USER}/.local/share/steam-headless-plugins2" +# Clone plugins project +mkdir -p "/home/${USER}/.local/share" +if [[ ! -d "${plugins_dir}" ]]; then + git clone --depth=1 \ + https://github.com/Steam-Headless/plugins.git \ + "${plugins_dir}" +fi +# Pull latest project +pushd "${plugins_dir}" &> /dev/null || exit 1 +git clean -fdx +git checkout . 2> /dev/null +git checkout master 2> /dev/null +git pull origin master 2> /dev/null +popd &> /dev/null || exit 1 + + +# EXECUTE PROCESS: +# Wait for the X server to start +wait_for_docker +pushd "${plugins_dir}" &> /dev/null || exit 1 +## # Pull latest Docker images +## ${plugins_dir}/plugins-run pull +## # Run docker images (not in background) +## ${plugins_dir}/plugins-run up & +sleep 300 +plugins_pid=$! +popd &> /dev/null || exit 1 + + +# WAIT FOR CHILD PROCESS: +wait "$plugins_pid"