summaryrefslogtreecommitdiff
path: root/configs/releng/airootfs/root/.automated_script.sh
diff options
context:
space:
mode:
Diffstat (limited to 'configs/releng/airootfs/root/.automated_script.sh')
-rwxr-xr-xconfigs/releng/airootfs/root/.automated_script.sh44
1 files changed, 44 insertions, 0 deletions
diff --git a/configs/releng/airootfs/root/.automated_script.sh b/configs/releng/airootfs/root/.automated_script.sh
new file mode 100755
index 0000000..0d95012
--- /dev/null
+++ b/configs/releng/airootfs/root/.automated_script.sh
@@ -0,0 +1,44 @@
+#!/usr/bin/env bash
+
+script_cmdline() {
+ local param
+ for param in $(</proc/cmdline); do
+ case "${param}" in
+ script=*)
+ echo "${param#*=}"
+ return 0
+ ;;
+ esac
+ done
+}
+
+automated_script() {
+ local script rt
+ script="$(script_cmdline)"
+ if [[ -n "${script}" && ! -x /tmp/startup_script ]]; then
+ if [[ "${script}" =~ ^((http|https|ftp|tftp)://) ]]; then
+ # there's no synchronization for network availability before executing this script
+ printf '%s: waiting for network-online.target\n' "$0"
+ until systemctl --quiet is-active network-online.target; do
+ sleep 1
+ done
+ printf '%s: downloading %s\n' "$0" "${script}"
+ curl "${script}" --location --retry-connrefused --retry 10 -s -o /tmp/startup_script
+ rt=$?
+ else
+ cp "${script}" /tmp/startup_script
+ rt=$?
+ fi
+ if [[ ${rt} -eq 0 ]]; then
+ chmod +x /tmp/startup_script
+ printf '%s: executing automated script\n' "$0"
+ # note that script is executed when other services (like pacman-init) may be still in progress, please
+ # synchronize to "systemctl is-system-running --wait" when your script depends on other services
+ /tmp/startup_script
+ fi
+ fi
+}
+
+if [[ $(tty) == "/dev/tty1" ]]; then
+ automated_script
+fi