#!/usr/bin/env sh

die() {
    printf "\033[31;1mError: \033[0m%s" "$1"
    exit 1
}

cd "$(dirname "$0")" || die "Bug: run with false dirname ('$0')!"

fd . --type directory --max-depth 1 | while read -r dir; do
    cd "$dir" || die "Dir '$dir' does not exist"

    if [ -f update.sh ]; then
        printf "\033[34;1m> \033[0m\033[34;1m%s\033[0m\n" "Running '${dir}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

# vim: ft=sh