view SCRIPTS/update.sh @ 133:4acb5d8d80b6 tip

Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author Chris Cannam
date Tue, 30 Jul 2019 12:25:44 +0100
parents 622ddc1ace50
children
line wrap: on
line source
#!/bin/bash

# Run this from the top-level vamp-build-and-test directory
# Optional argument for the single repo to checkout; default is all of them
# Optional second argument for the revision to checkout; default is tip

single=""
if [ -n "$1" ]; then
    single="$1"
fi

rev=""
revopt_hg=""
revopt_git=""
if [ -n "$2" ]; then
    rev="$2"
    revopt_hg="-r$rev"
    revopt_git="-b$rev"
fi

set -eu

failed=/tmp/failed_$$
rm -f "$failed"
trap "rm -f $failed" 0

cat METADATA/repos.txt | grep -v '^#' | awk -F= '{ print $1, $2 }' |
    while read name loc; do
        if [ -n "$single" ]; then
            if [ "$single" != "$name" ]; then
                continue
            fi
        fi
	if [ -d "$name"/.hg ]; then 
 	    ( cd $name ; hg pull && hg update $revopt_hg ) || echo "$name" >> "$failed"
	elif [ -d "$name"/.git ]; then 
 	    ( cd $name ; git pull ) || echo "$name" >> "$failed"
            if [ -n "$rev" ]; then
                ( cd $name ; git checkout "$rev" ) || echo "$name" >> "$failed"
            fi
	elif [ -d "$name" ]; then
	    echo "ERROR: Directory \"$name\" exists, but is not a git or hg repo" 1>&2
	    exit 1
	else
	    case "$loc" in
		*/hg/*)
		    hg clone $revopt_hg "$loc" "$name" || echo "$name" >> "$failed";;
		*//git*)
		    git clone $revopt_git "$loc" "$name" || echo "$name" >> "$failed";;
		*)
		    echo "ERROR: Can't deduce repo type from URL \"$loc\"" 1>&2
		    exit 1;;
	    esac
	fi
    done

echo "Done"
if [ -f "$failed" ]; then
    echo "Failed repos:"
    cat "$failed"
fi