#!/usr/bin/env bash # The script checks if all submodules defined in $GIT_ROOT/.gitmodules exist in $GIT_ROOT/contrib set -e GIT_ROOT=$(git rev-parse --show-cdup) GIT_ROOT=${GIT_ROOT:-.} cd "$GIT_ROOT" # Remove keys for submodule.*.path parameters, the values are separated by \0 # and check if the directory exists git config --file .gitmodules --null --get-regexp path | sed -z 's|.*\n||' | \ xargs -P100 -0 --no-run-if-empty -I{} bash -c 'if ! test -d '"'{}'"'; then echo Directory for submodule {} is not found; exit 1; fi' 2>&1 # And check that the submodule is fine git config --file .gitmodules --null --get-regexp path | sed -z 's|.*\n||' | \ xargs -P100 -0 --no-run-if-empty -I{} git submodule status -q '{}' 2>&1