IFS_SAVE="$IFS"
IFS="$NEWLINE"
-for line in $(baz cat-config "$1"); do
+for line in $(baz cat-config "$1" 2>/dev/null || cat "$1"); do
IFS="$IFS_SAVE"
set -- $line
DIR="$1"
VERSION="$2"
- if [ -d "$DIR" ]; then
- OLDVERSION="$(baz tree-version -d "$DIR")"
- if [ "$VERSION" != "$OLDVERSION" ]; then
- baz switch -d "$DIR" "$VERSION"
- else
- baz update -d "$DIR" "$VERSION"
- fi
- else
- baz get "$VERSION" "$DIR"
- fi
+ echo "Updating $DIR ($VERSION) ..."
+
+ case $VERSION in
+ http://*)
+ if [ -d "$DIR" ]; then
+ if [ ! -d "$DIR/.bzr" ]; then
+ echo "$DIR is not a bzr checkout; cannot update" >&2
+ continue
+ fi
+ (cd "$DIR" && bzr pull "$VERSION")
+ else
+ bzr get "$VERSION" "$DIR"
+ fi
+ ;;
+ *)
+ if [ -d "$DIR" ]; then
+ if [ ! -d "$DIR/{arch}" ]; then
+ echo "$DIR is not an arch checkout; cannot update" >&2
+ continue
+ fi
+ OLDVERSION="$(baz tree-version -d "$DIR")"
+ if [ "$VERSION" != "$OLDVERSION" ]; then
+ baz switch -d "$DIR" "$VERSION"
+ else
+ baz update -d "$DIR" "$VERSION"
+ fi
+ else
+ baz get "$VERSION" "$DIR"
+ fi
+ ;;
+ esac
done