From 103e6ddb061248bff57e1df2cd737dfc6dc9bdb5 Mon Sep 17 00:00:00 2001 From: Benedikt Peetz Date: Mon, 30 Sep 2024 17:15:42 +0200 Subject: build(instantiate_templates.sh): Only copy files tracked by git --- instantiate_templates.sh | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'instantiate_templates.sh') diff --git a/instantiate_templates.sh b/instantiate_templates.sh index c991267..c120b3f 100755 --- a/instantiate_templates.sh +++ b/instantiate_templates.sh @@ -1,6 +1,6 @@ #!/usr/bin/env sh -#! Copies the templates from `templates/*` to `build/*` and replaces every symlink with a +#! Copies the templates from `templates/*` to `build/*` and replaces every symbolic link with a #! copy. # Source: https://stackoverflow.com/a/20460402 @@ -12,19 +12,31 @@ stringContain() { case $2 in $1*) return 0 ;; *) return 1 ;; esac } ROOT="$(git rev-parse --show-toplevel)" -DRY_RUN_CMD="" - # TODO: Find a way to do the building step incrementally (i.e. without removing everything) <2024-06-11> [ -n "$ROOT" ] && $DRY_RUN_CMD rm --recursive "$ROOT/build" $DRY_RUN_CMD mkdir --parents "$ROOT/build" +cd "$ROOT" || { + echo "No '$ROOT' (Root) ?!" + exit 1 +} + instantiate_dir() { dir="$1" fd . "$dir" --max-depth 1 --type directory | while read -r template; do - echo "Instantiating template: '.${template#"$ROOT"}'.." + template_path="${template#"$ROOT/"}" + echo "Instantiating template: '$template_path'.." template_new_path="$ROOT/build/$(basename "$template")" - $DRY_RUN_CMD cp --no-target-directory --recursive "${template%/}" "$template_new_path" + + git ls-files --cached --full-name "$template" | while read -r file; do + new_file_path="${file#"$template_path"}" + new_path="$template_new_path/$new_file_path" + + $DRY_RUN_CMD mkdir --parents "$(dirname "$new_path")" + + $DRY_RUN_CMD cp "$file" "$new_path" + done { # Show directories -- cgit 1.4.1