Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
2024-10-17 18:41:10 +01:00
parent 77edba5162
commit ab042e03aa
8 changed files with 34 additions and 60 deletions

View File

@@ -4,8 +4,8 @@
pkgs.writeShellApplication {
name = "merge-key-value";
runtimeInputs = with pkgs; [
gnugrep
coreutils
gawk
];
text = builtins.readFile ./key-value.sh;
}

View File

@@ -1,19 +1,13 @@
SOURCE_FILE=$(realpath -m "$1")
TARGET_FILE=$(realpath -m "$2")
mkdir -p "$(dirname "${TARGET_FILE}")"
TEMP_FILE=$(mktemp)
cat "${SOURCE_FILE}" > "${TEMP_FILE}"
if [[ -f "${TARGET_FILE}" ]]; then
while IFS='=' read -r key value; do
if ! grep -q "^${key}=" "${TEMP_FILE}"; then
echo "${key}=${value}" >> "${TEMP_FILE}"
fi
done < "${TARGET_FILE}"
TEMP_FILE=$(mktemp)
awk -F '=' 'NR==FNR{a[$1]=$0;next}($1 in a){$0=a[$1]}1' "${SOURCE_FILE}" "${TARGET_FILE}" > "${TEMP_FILE}"
mv "${TEMP_FILE}" "${TARGET_FILE}"
else
mkdir -p "$(dirname "${TARGET_FILE}")"
cp "${SOURCE_FILE}" "${TARGET_FILE}"
fi
mv "${TEMP_FILE}" "${TARGET_FILE}"
echo "Configuration file ${TARGET_FILE} has been updated."