Closes - https://github.com/jmbannon/ytdl-sub/issues/1200 - Runs in the background now - https://github.com/jmbannon/ytdl-sub/issues/1201 - Was not running as user `abc`, now it is - https://github.com/jmbannon/ytdl-sub/issues/1202 - Due to reading stdout and tail of hidden log file. Should only tail from hidden log file now Will leave crontab as-is if no CRON_SCHEDULE is specified
68 lines
2.4 KiB
Text
68 lines
2.4 KiB
Text
#!/usr/bin/with-contenv bash
|
|
|
|
echo "Starting ytdl-sub..."
|
|
|
|
# copy config
|
|
[[ ! -e "$DEFAULT_WORKSPACE/config.yaml" ]] && \
|
|
mkdir -p "$DEFAULT_WORKSPACE" && \
|
|
cp /defaults/config.yaml "$DEFAULT_WORKSPACE/config.yaml"
|
|
[[ ! -e "$DEFAULT_WORKSPACE/subscriptions.yaml" ]] && \
|
|
mkdir -p "$DEFAULT_WORKSPACE" && \
|
|
cp /defaults/subscriptions.yaml "$DEFAULT_WORKSPACE/subscriptions.yaml"
|
|
[[ ! -d "$DEFAULT_WORKSPACE/examples" ]] && \
|
|
mkdir -p "$DEFAULT_WORKSPACE/examples" && \
|
|
cp -r /defaults/examples/* "$DEFAULT_WORKSPACE/examples"
|
|
|
|
[[ ! -e "/config/.bashrc" ]] && \
|
|
echo "alias ls='ls --color=auto'" > /config/.bashrc && \
|
|
echo "cd ." >> /config/.bashrc
|
|
|
|
# permissions
|
|
chown -R ${PUID:-abc}:${PGID:-abc} \
|
|
/config
|
|
|
|
# always create empty cron log file on start
|
|
echo "" > "$LOGS_TO_STDOUT"
|
|
|
|
# set up cron
|
|
if [ "$CRON_SCHEDULE" != "" ] ; then
|
|
[[ ! -e "$CRON_SCRIPT" ]] && \
|
|
cp /defaults/cron "$CRON_SCRIPT"
|
|
|
|
# create cron script wrapper
|
|
echo '#!/bin/bash' > "$CRON_WRAPPER_SCRIPT"
|
|
echo "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" >> "$CRON_WRAPPER_SCRIPT"
|
|
echo "cd \"$DEFAULT_WORKSPACE\"" >> "$CRON_WRAPPER_SCRIPT"
|
|
echo ". \"$CRON_SCRIPT\" | tee -a \"$LOGS_TO_STDOUT\"" >> "$CRON_WRAPPER_SCRIPT"
|
|
chmod +x "$CRON_WRAPPER_SCRIPT"
|
|
chown abc:abc "$CRON_WRAPPER_SCRIPT"
|
|
|
|
# Set the crontab file to the schedule, cleanly
|
|
CRON_SCHEDULE_CLEAN="${CRON_SCHEDULE//\"/}"
|
|
CRON_SCHEDULE_CLEAN="${CRON_SCHEDULE_CLEAN//\'/}"
|
|
|
|
echo "# min hour day month weekday command" > /config/crontabs/abc
|
|
echo "$CRON_SCHEDULE_CLEAN $CRON_WRAPPER_SCRIPT" >> /config/crontabs/abc
|
|
|
|
chmod +x "$CRON_SCRIPT"
|
|
chown abc:abc "$CRON_SCRIPT"
|
|
|
|
crontab -u abc /config/crontabs/abc
|
|
|
|
CRON_SUCCESS=$?
|
|
if [ $CRON_SUCCESS -eq 0 ] ; then
|
|
echo "Cron enabled with schedule $CRON_SCHEDULE_CLEAN"
|
|
|
|
if [ "$CRON_RUN_ON_START" = true ] ; then
|
|
echo "Running cron script on start in the background"
|
|
# ensure it runs as abc to respect puid/guid with delay for tail to start
|
|
su -s "/bin/bash" -c "sleep 5 && . '$CRON_WRAPPER_SCRIPT'" abc > /dev/null 2>&1 &
|
|
fi
|
|
else
|
|
echo "Error in CRON_SCHEDULE definition, disabling cron."
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "CRON_SCHEDULE not specified, leaving crontabs as-is. Current configuration in /config/crontabs/abc"
|
|
cat /config/crontabs/abc
|
|
fi
|