diff options
author | Anna (navi) Figueiredo Gomes <navi@vlhl.dev> | 2023-06-15 16:14:00 -0300 |
---|---|---|
committer | Anna (navi) Figueiredo Gomes <navi@vlhl.dev> | 2023-10-19 10:56:54 +0200 |
commit | 8d697f662cf2e59930f6b79726502cc016cec325 (patch) | |
tree | 0ec15b21f9dcc7de6baafeeabc2c1eabdc82f4ab | |
parent | b7caeb07a5f6e9adae326c51367cd522a05fbdac (diff) |
openrc-run.sh: save and load variables on default start
temporary system for testing, it's gonna store any environment variables
defined in export_vars="", and subsequent services will load them.
ideally we only want to load the variables saved by services we depend
on, so that would change later.
Signed-off-by: Anna (navi) Figueiredo Gomes <navi@vlhl.dev>
-rw-r--r-- | sh/openrc-run.sh.in | 5 | ||||
-rw-r--r-- | sh/rc-functions.sh | 17 |
2 files changed, 22 insertions, 0 deletions
diff --git a/sh/openrc-run.sh.in b/sh/openrc-run.sh.in index ed565a46..12a4c6eb 100644 --- a/sh/openrc-run.sh.in +++ b/sh/openrc-run.sh.in @@ -149,6 +149,11 @@ _status() # supervisor modules default_start() { + if yesno "${RC_USER_SERVICES}"; then + load_variables + save_variables + fi + local func=ssd_start case "$supervisor" in runit) func=runit_start ;; diff --git a/sh/rc-functions.sh b/sh/rc-functions.sh index 81d065b8..922bb870 100644 --- a/sh/rc-functions.sh +++ b/sh/rc-functions.sh @@ -134,6 +134,23 @@ _depend() { done } +save_variables() { + mkdir -p "${RC_SVCDIR}"/env/ + + local _envname + + if [ -n "${export_vars}" ]; then + rm "${RC_SVCDIR}/env/${RC_SVCNAME}" + for _envname in ${export_vars}; do + eval echo "${_envname}=\$${_envname}" >> "${RC_SVCDIR}/env/${RC_SVCNAME}" + done + fi +} + +load_variables() { + sourcex -e "${RC_SVCDIR}/env/*" +} + # Add our sbin to $PATH case "$PATH" in "$RC_LIBEXECDIR"/sbin|"$RC_LIBEXECDIR"/sbin:*);; |