Refactor secret file handling in replacement logic

Removed temporary files.
This commit is contained in:
Dmitry 2026-06-04 11:07:20 +01:00
parent f618cf0294
commit d51aace91e

View file

@ -80,15 +80,11 @@ let
generatedReplacements = map genReplacement replacements; generatedReplacements = map genReplacement replacements;
writeSecretFiles = concatMapStringsSep "\n" (pattern: ''
printf '%s' "${pattern.value}" > "$tmpDir"/${escapeShellArg ("secret-" + pattern.name)}
'') generatedReplacements;
replaceCommands = concatMapStringsSep "\n" (pattern: '' replaceCommands = concatMapStringsSep "\n" (pattern: ''
${replaceScript} \ ${replaceScript} \
--file ${escapeShellArg resultPath} \ --file ${escapeShellArg resultPath} \
--marker ${escapeShellArg pattern.name} \ --marker ${escapeShellArg pattern.name} \
--secret-file "$tmpDir"/${escapeShellArg ("secret-" + pattern.name)} --replacement "${pattern.value}"
'') generatedReplacements; '') generatedReplacements;
replaceScript = pkgs.writers.writePython3 "replace-secret" { } '' replaceScript = pkgs.writers.writePython3 "replace-secret" { } ''
@ -100,14 +96,13 @@ let
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument("--file", required=True, type=pathlib.Path) parser.add_argument("--file", required=True, type=pathlib.Path)
parser.add_argument("--marker", required=True) parser.add_argument("--marker", required=True)
parser.add_argument("--secret-file", required=True, type=pathlib.Path) parser.add_argument("--replacement", required=True)
return parser.parse_args() return parser.parse_args()
args = parse_args() args = parse_args()
content = args.file.read_text() content = args.file.read_text()
secret = args.secret_file.read_text() args.file.write_text(content.replace(args.marker, args.replacement))
args.file.write_text(content.replace(args.marker, secret))
''; '';
replaceCmd = replaceCmd =
@ -115,10 +110,7 @@ let
"cat ${escapeShellArg templatePath} > ${escapeShellArg resultPath}" "cat ${escapeShellArg templatePath} > ${escapeShellArg resultPath}"
else else
'' ''
tmpDir=$(mktemp -d)
trap 'rm -rf "$tmpDir"' EXIT
cat ${escapeShellArg templatePath} > ${escapeShellArg resultPath} cat ${escapeShellArg templatePath} > ${escapeShellArg resultPath}
${writeSecretFiles}
${replaceCommands} ${replaceCommands}
''; '';
in in