From 4e734330dababa0aa76d488df81bc0f1d0d84d78 Mon Sep 17 00:00:00 2001 From: hygienic-books Date: Wed, 1 Nov 2023 03:47:34 +0100 Subject: [PATCH] feat(os): Add helper functions to manipulate HOOKS array (#6) --- setup.sh | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/setup.sh b/setup.sh index c2e51d5..1922387 100644 --- a/setup.sh +++ b/setup.sh @@ -461,6 +461,39 @@ function set_locale () { printf -- '%s\n' 'LANG=en_US.UTF-8' > '/mnt/etc/locale.conf' } +function in_file_in_array_insert_n_before_m () { + local arg_file arg_array arg_string arg_precede + arg_file="${1:?}" + arg_array="${2:?}" + arg_string="${3:?}" + arg_precede="${4:?}" + sed -ri \ + -e 's'$'\x1''('"${arg_array}"'=)(.*?[( ])('"${arg_precede}"')([) ][^\r\n\f]*)'$'\x1''\1\2'"${arg_string}"' \3\4'$'\x1''g' \ + "${arg_file}" +} + +function in_file_in_array_insert_n_at_the_end () { + local arg_file arg_array arg_string + arg_file="${1:?}" + arg_array="${2:?}" + arg_string="${3:?}" + sed -ri \ + -e 's'$'\x1''('"${arg_array}"'=)([^)]*)(\)[^\r\n\f]*)'$'\x1''\1\2 '"${arg_string}"'\3'$'\x1''g' \ + "${arg_file}" +} + +function in_file_in_array_remove_n () { + local arg_file arg_array arg_string + arg_file="${1:?}" + arg_array="${2:?}" + arg_string="${3:?}" + sed -ri \ + -e 's'$'\x1''((\()('"${arg_string}"')(\)))'$'\x1''\2\4'$'\x1''g' \ + -e 's'$'\x1''('"${arg_array}"'=.*?)([[:space:]]+'"${arg_string}"')([[:space:]]+|\))'$'\x1''\1\3'$'\x1''g' \ + -e 's'$'\x1''('"${arg_array}"'=.*?)([[:space:]]+|\()('"${arg_string}"'[[:space:]]+)'$'\x1''\1\2'$'\x1''g' \ + "${arg_file}" +} + function add_zfs_hook_to_initramfs () { #1.16 # Add zfs hook, remove fsck hook from initramfs.