🔨 Migrate old-style base scripts s6-rc

This commit is contained in:
Gautham Varma K
2023-02-19 21:05:33 +05:30
parent 5514b1bb3d
commit 712841f292
22 changed files with 64 additions and 18 deletions
@@ -0,0 +1,27 @@
#!/command/with-contenv bashio
# shellcheck shell=bash
# ==============================================================================
# Home Assistant Community Add-on: TVHeadend
# Take down the S6 supervision tree when cron fails
# ==============================================================================
declare exit_code
readonly exit_code_container=$(</run/s6-linux-init-container-results/exitcode)
readonly exit_code_service="${1}"
readonly exit_code_signal="${2}"
readonly service="cron"
bashio::log.info \
"Service ${service} exited with code ${exit_code_service}" \
"(by signal ${exit_code_signal})"
if [[ "${exit_code_service}" -eq 256 ]]; then
if [[ "${exit_code_container}" -eq 0 ]]; then
echo $((128 + $exit_code_signal)) > /run/s6-linux-init-container-results/exitcode
fi
[[ "${exit_code_signal}" -eq 15 ]] && exec /run/s6/basedir/bin/halt
elif [[ "${exit_code_service}" -ne 0 ]]; then
if [[ "${exit_code_container}" -eq 0 ]]; then
echo "${exit_code_service}" > /run/s6-linux-init-container-results/exitcode
fi
exec /run/s6/basedir/bin/halt
fi
@@ -0,0 +1,7 @@
#!/usr/bin/with-contenv bashio
# shellcheck shell=bash
# ==============================================================================
# Home Assistant Community Add-on: TVHeadend
# Runs the cron daemon
# ==============================================================================
exec fdmove -c 2 1 /usr/sbin/crond -f -L /var/log/cron -l 0 -c /etc/crontabs
@@ -0,0 +1 @@
longrun
@@ -0,0 +1,25 @@
#!/usr/bin/with-contenv bashio
# shellcheck shell=bash
# ==============================================================================
# Home Assistant Community Add-on: TVHeadend
# Executes user customizations on startup
# ==============================================================================
# Install user configured/requested packages
if bashio::config.has_value 'system_packages'; then
apk update \
|| bashio::exit.nok 'Failed updating Alpine packages repository indexes'
for package in $(bashio::config 'system_packages'); do
apk add "$package" \
|| bashio::exit.nok "Failed installing system package ${package}"
done
fi
# Executes user commands on startup
if bashio::config.has_value 'init_commands'; then
while read -r cmd; do
eval "${cmd}" \
|| bashio::exit.nok "Failed executing init command: ${cmd}"
done <<< "$(bashio::config 'init_commands')"
fi
@@ -0,0 +1 @@
oneshot
@@ -0,0 +1 @@
/etc/s6-overlay/s6-rc.d/init-customizations/run
@@ -0,0 +1,61 @@
#!/usr/bin/with-contenv bashio
# shellcheck shell=bash
# ==============================================================================
# Home Assistant Community Add-on: TVHeadend
# Executes user customizations on startup
# ==============================================================================
check_webgrabplus(){
if [ -z "$(ls -A /config/tvheadend/wg++)" ]; then return 1; else return 0; fi
}
webgrabplus_install(){
if apk update; then
bashio::log.info '[Webgrab+] APK: Installing required packages.'
if apk add --no-cache --virtual .build-deps git mono --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing; then
bashio::log.info '[Webgrab+] Installing Webgrab+.'
cd /tmp \
&& wget http://webgrabplus.com/sites/default/files/download/SW/V3.3.0/WebGrabPlus_V3.3_install.tar.gz \
&& tar -zxvf WebGrabPlus_V3.3_install.tar.gz \
&& rm WebGrabPlus_V3.3_install.tar.gz \
&& mv .wg++/ /config/tvheadend/wg++ \
&& cd /config/tvheadend/wg++ \
&& ./install.sh \
&& rm -rf siteini.pack/ \
&& wget http://webgrabplus.com/sites/default/files/download/ini/SiteIniPack_current.zip \
&& unzip SiteIniPack_current.zip \
&& rm SiteIniPack_current.zip \
&& cp siteini.pack/India/* siteini.user/ \
&& wget -O /usr/bin/tv_grab_wg++ http://www.webgrabplus.com/sites/default/files/tv_grab_wg.txt \
&& sed -i 's|~/.wg++/guide.xml|/config/tvheadend/wg++/guide.xml|g' /usr/bin/tv_grab_wg++ \
&& chmod a+x /usr/bin/tv_grab_wg++
else
bashio::log.info '[Webgrab+] APK: Critical error. Unable install required packages.'
exit 1
fi
bashio::log.info '[Webgrab+] APK: Removing packages no longer required.'
apk del --no-cache --purge .build-deps
else
bashio::log.error '[Webgrab+] APK: Critical error. Unable to update pkg list. Check connectivity.'
exit 1
fi
bashio::log.info '[Webgrab+] Finsihed all APK and PIP3 updates and installs.'
}
# Ensure directory exists
if ! bashio::fs.directory_exists '/config/tvheadend/'; then
bashio::log.info "Creating default configuration directory at /config/tvheadend/"
mkdir -p /config/tvheadend/recordings
timeout 20s /usr/bin/tvheadend --firstrun -u root -g root -c /config/tvheadend
fi
if check_webgrabplus; then
bashio::log.info "[Webgrab+] Webgrab+ already installed"
else
bashio::log.info "[Webgrab+] No webgrab+ installation found - Installing webgrab+"
webgrabplus_install
chmod +x /usr/bin/restart_addon
exec /usr/bin/restart_addon
fi
bashio::log.info '[Webgrab+] Setup completed without errors!!'
@@ -0,0 +1 @@
oneshot
@@ -0,0 +1 @@
/etc/s6-overlay/s6-rc.d/init-tvheadend/run
@@ -0,0 +1,27 @@
#!/command/with-contenv bashio
# shellcheck shell=bash
# ==============================================================================
# Home Assistant Community Add-on: TVHeadend
# Take down the S6 supervision tree when tvheadend fails
# ==============================================================================
declare exit_code
readonly exit_code_container=$(</run/s6-linux-init-container-results/exitcode)
readonly exit_code_service="${1}"
readonly exit_code_signal="${2}"
readonly service="tvheadend"
bashio::log.info \
"Service ${service} exited with code ${exit_code_service}" \
"(by signal ${exit_code_signal})"
if [[ "${exit_code_service}" -eq 256 ]]; then
if [[ "${exit_code_container}" -eq 0 ]]; then
echo $((128 + $exit_code_signal)) > /run/s6-linux-init-container-results/exitcode
fi
[[ "${exit_code_signal}" -eq 15 ]] && exec /run/s6/basedir/bin/halt
elif [[ "${exit_code_service}" -ne 0 ]]; then
if [[ "${exit_code_container}" -eq 0 ]]; then
echo "${exit_code_service}" > /run/s6-linux-init-container-results/exitcode
fi
exec /run/s6/basedir/bin/halt
fi
@@ -0,0 +1,10 @@
#!/usr/bin/with-contenv bashio
# shellcheck shell=bash
# ==============================================================================
# Home Assistant Community Add-on: TVHeadend
# Starts TVHeadend
# ==============================================================================
bashio::log.info "Starting TVHeadend..."
exec /usr/bin/tvheadend -u root -g root -c /config/tvheadend
@@ -0,0 +1 @@
longrun