about summary refs log tree commit diff stats
path: root/update_common_files.sh
blob: d204c173721fcf3b4b56ccf904782802958d0c0a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/usr/bin/env sh

ROOT="$(git rev-parse --show-toplevel)"

# This results in fd returning relative paths
cd "$ROOT/common/files" || echo "BUG, no root dir!"

file_spec="$(nix eval --file "$ROOT/common/default.nix" --json)"

echo "$file_spec" | jq --raw-output 'keys | join("\n")' | while read -r file; do
    [ -n "$first_run_done" ] && echo
    echo "Instantiating '$file'..."

    echo "$file_spec" | jq --raw-output ".[\"$file\"] | join(\"\n\")" | while read -r language; do
        template="$ROOT/templates/$language"
        echo "    done for '$language'."

        mkdir --parents "$(dirname "$template/$file")"
        rm "$template/$file"
        cp "$file" "$template/$file"
    done

    first_run_done=yes
done

# vim: ft=sh