#!/usr/bin/env bash set -o errexit set -o nounset set -o pipefail echo "Updating submodules..." paths=$(git config --file .gitmodules --name-only --get-regexp path | while read -r line; do path=$(git config --file .gitmodules --get "$line") url=$(git config --file .gitmodules --get "${line%.*}.url") if [[ $url == *"karaolidis"* ]]; then echo "$path" fi done) for path in $paths; do echo "Processing submodule: $path" cd "$path" || exit default_branch=$(git remote show origin | awk '/HEAD branch/ {print $NF}') git checkout "$default_branch" git fetch upstream git merge "upstream/$default_branch" branches=$(git for-each-ref --format='%(refname:short)' refs/heads/ | grep -v "^${default_branch}$") for branch in $branches; do git checkout "$branch" git rebase "$default_branch" done git checkout integration git push origin --all --force-with-lease git push origin --tags --force-with-lease cd - > /dev/null || exit done echo "All submodules updated successfully." echo "Updating packages..." find packages -type f -name "*.nix" | while read -r file; do update_command=$(grep -oP '^#\s*AUTO-UPDATE:\s*\K.+' "$file" || true) if [[ -n "$update_command" ]]; then echo "Running update command in: $file" eval "$update_command" fi done echo "All packages updated successfully." nix flake update