diff options
author | Jonathan Bauer | 2020-05-13 11:04:02 +0200 |
---|---|---|
committer | Jonathan Bauer | 2020-05-13 11:04:02 +0200 |
commit | 1130873aa55c9b0a7e5af48edc44bd6c6fd1f888 (patch) | |
tree | 0fcfa186cd631d8d36611b3d4bc509fd38841d51 /modules.d/conf-tgz/hooks/unpack-config-tgz.sh | |
parent | Merge branch 'centos8' into downloader (diff) | |
download | systemd-init-1130873aa55c9b0a7e5af48edc44bd6c6fd1f888.tar.gz systemd-init-1130873aa55c9b0a7e5af48edc44bd6c6fd1f888.tar.xz systemd-init-1130873aa55c9b0a7e5af48edc44bd6c6fd1f888.zip |
restructure repo
* remove packager
* move everything from builder/* back to root
Diffstat (limited to 'modules.d/conf-tgz/hooks/unpack-config-tgz.sh')
-rwxr-xr-x | modules.d/conf-tgz/hooks/unpack-config-tgz.sh | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/modules.d/conf-tgz/hooks/unpack-config-tgz.sh b/modules.d/conf-tgz/hooks/unpack-config-tgz.sh new file mode 100755 index 00000000..a0da0cd3 --- /dev/null +++ b/modules.d/conf-tgz/hooks/unpack-config-tgz.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +# -*- coding: utf-8 -*- + +type emergency_shell >/dev/null 2>&1 || source /lib/dracut-lib.sh + +# tarcopy <source_dir> <target_dir> +tarcopy() { + [ -d "$1" -a -d "$2" ] || return 1 + cd "$1" + local filelist="$(mktemp)" + find . \! -type d > "$filelist" + tar -c -p -T "$filelist" | tar -xp -C "$2" + rm -f -- "$filelist" + cd - &>/dev/null +} + +# this module unpacks the config.tgz +temporary_extract_directory="$(mktemp -d)" + if [[ -e "/etc/config.tgz" ]]; then + tar --extract --preserve-permissions \ + --file="/etc/config.tgz" \ + --directory="$temporary_extract_directory" + fi + warn "Failed to extract '/etc/config.tgz' to '$temporary_extract_directory'." + warn "$exceptions_last_traceback" +# extracted to temporary directory, now check for SLX_LOCAL_CONFIGURATION + +source "/etc/openslx" +if [[ -n "$SLX_LOCAL_CONFIGURATION" ]]; then + if [[ ! -d "${temporary_extract_directory}/openslx-configs/${SLX_LOCAL_CONFIGURATION}" ]]; then + warn "SLX_LOCAL_CONFIGURATION is set but no corresponding folder found in '/etc/config.tgz'. Ignoring..." + else + tarcopy "${temporary_extract_directory}/openslx-configs/${SLX_LOCAL_CONFIGURATION}" "${temporary_extract_directory}" + fi +fi + # purge openslx-configs/ + rm -rf "${temporary_extract_directory}/openslx-configs" + tarcopy "${temporary_extract_directory}" "$NEWROOT" + + + # TODO error handling |