blob: 3e33b720e49d05c1c8cb06f05f63c0c457249eca (
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#!/usr/bin/env sh
die() {
printf "\033[31;1mError: \033[0m%s\n" "$1"
exit 1
}
cd "$(dirname "$0")" || die "Bug: run with the wrong first arg: '$0'!"
cd ./by-name || die "(BUG): The directory './by-name' does not exist?"
# First check if all the update scripts conform to the standard
files_with_update="$(mktemp)"
trap 'rm "$files_with_update"' EXIT
fd '^update.sh$' . --type file --extension sh --max-depth 3 | while read -r file; do
grep -q "nix flake update" "$file" && echo "$file" >>"$files_with_update"
done
if [ "$(wc -l <"$files_with_update")" != 0 ]; then
die "Some packages seem to try to update their flake with 'nix flake update'. This is redundant. These Packages are: $(echo && cat "$files_with_update")"
fi
# Than actually perform the update
fd . --type directory --max-depth 1 | while read -r shard; do
cd "$shard" || die "(BUG): Shard '$shard' does not exist?"
fd . --type directory --max-depth 1 | while read -r package; do
cd "$package" || die "(BUG): Package '$package' does not exist?"
if [ -x update.sh ]; then
printf " \033[34;1m> \033[0m\033[34;1m%s\033[0m\n" "Running '${shard}${package}update.sh' .."
[ -f flake.nix ] && nix flake update
direnv allow
eval "$(direnv export bash 2>/dev/null)"
./update.sh "$@"
fi
cd - >/dev/null || die "Bug: Last dir does not exist"
done
cd - >/dev/null || die "Bug: Last dir does not exist"
done
# vim: ft=sh
|