nostril

A C cli tool for creating nostr events
git clone git://jb55.com/nostril
Log | Files | Refs | Submodules | README

commit f4d4835e1e1edd7e320ec840149316d322013440
parent a53062b84a5a482a0fc32dbdc96bd4a628021f43
Author: William Casarin <jb55@jb55.com>
Date:   Tue,  9 Aug 2022 07:51:04 -0700

Add missing file

Reported-by: @RandyMcMillan
Signed-off-by: William Casarin <jb55@jb55.com>

Diffstat:
Adevtools/refresh-submodules.sh | 42++++++++++++++++++++++++++++++++++++++++++
1 file changed, 42 insertions(+), 0 deletions(-)

diff --git a/devtools/refresh-submodules.sh b/devtools/refresh-submodules.sh @@ -0,0 +1,42 @@ +#! /bin/sh + +if [ $# = 0 ]; then + echo "Usage: $0 <submoduledir1>..." >&2 + exit 1 +fi + +# If no git dir (or, if we're a submodule, git file), forget it. +[ -e .git ] || exit 0 + +# git submodule can't run in parallel. Really. +# Wait for it to finish if in parallel. +if ! mkdir .refresh-submodules 2>/dev/null ; then + # If we don't make progress in ~60 seconds, force delete and retry. + LIMIT=$((50 + $$ % 20)) + i=0 + while [ $i -lt $LIMIT ]; do + [ -d .refresh-submodules ] || exit 0 + sleep 1 + i=$((i + 1)) + done + rmdir .refresh-submodules + exec "$0" "$@" || exit 1 +fi + +trap "rmdir .refresh-submodules" EXIT + +# Be a little careful here, since we do rm -rf! +for m in "$@"; do + if ! grep -q "path = $m\$" .gitmodules; then + echo "$m is not a submodule!" >&2 + exit 1 + fi +done + +# git submodule can segfault. Really. +if [ "$(git submodule status "$@" | grep -c '^ ')" != $# ]; then + echo Reinitializing submodules "$@" ... + git submodule sync "$@" + rm -rf "$@" + git submodule update --init --recursive "$@" +fi