summaryrefslogtreecommitdiffstats
path: root/bin/make-rsync-filter
diff options
context:
space:
mode:
authortv <tv@shackspace.de>2015-05-21 01:56:08 +0200
committertv <tv@shackspace.de>2015-05-21 01:56:08 +0200
commit36670f3e1cccad579b994a29320eeb8e287803b7 (patch)
tree484cb2c1075cdcabe8020ca40704f4d68f2b2fed /bin/make-rsync-filter
parentb95a514bcced00af77ae4adab77326dba9ab4c36 (diff)
sh: functions -> bin/
Diffstat (limited to 'bin/make-rsync-filter')
-rwxr-xr-xbin/make-rsync-filter33
1 files changed, 33 insertions, 0 deletions
diff --git a/bin/make-rsync-filter b/bin/make-rsync-filter
new file mode 100755
index 000000000..26e070adb
--- /dev/null
+++ b/bin/make-rsync-filter
@@ -0,0 +1,33 @@
+#! /bin/sh
+# make-rsync-filter : nixos-config -> rsync-filter
+set -euf
+
+main=$1
+
+hosts=$(list-hosts)
+module_imports=$(list-module-imports "$main")
+other_imports=$(
+ echo "$module_imports" \
+ | xargs grep -H . \
+ | import-statements \
+ | slash-path-relpath \
+ | undot-paths \
+ | sort \
+ | uniq \
+ | sed '/\.nix$/!s:$:/default.nix:' \
+ )
+secrets=$(echo "$module_imports" | xargs cat | quoted-strings | filter-secrets)
+
+# TODO collect all other paths from *_imports
+
+abs_deps=$(
+ echo "$hosts"
+ echo "$module_imports"
+ echo "$other_imports"
+ echo "$secrets"
+)
+
+rel_deps=$(echo "$abs_deps" | make-relative-to "$PWD")
+filter=$(echo "$rel_deps" | make-rsync-whitelist)
+
+echo "$filter"