#!/usr/bin/env bash # Copyright 2010 The Go Authors. All rights reserved. # Use of this source code is governed by a BSD-style # license that can be found in the LICENSE file. GOROOT=$(dirname $0)/.. # If a version file created by -save is available, use it if [ -f "$GOROOT/VERSION" -a "$1" != "-save" ]; then cat $GOROOT/VERSION exit 0 fi # Otherwise, if hg doesn't work for whatever reason, fail if [ ! -d "$GOROOT/.hg" ] || ! hg version > /dev/null 2>&1; then echo 'Unable to report version: hg and VERSION file missing' 1>&2 echo 'Generate VERSION with `src/version.bash -save` while hg is usable' 1>&2 exit 2 fi # Get numerical revision VERSION=$(hg identify -n 2>/dev/null) if [ $? != 0 ]; then OLD=$(hg identify | sed 1q) VERSION=$(echo $OLD | awk '{print $1}') fi # Get branch type BRANCH=release if [ "$(hg identify -b 2>/dev/null)" == "default" ]; then BRANCH=weekly fi # Find most recent known release or weekly tag. TAG=$(hg tags | grep $BRANCH | sed 's/:.*//' | sort -rn -k2 | awk -v ver=$VERSION '$2 <= ver && $1~/^(release|weekly)\./ {print $1}' | sed -n 1p) if [ "$TAG" != "" ]; then VERSION="$TAG $VERSION" fi if [ "$1" = "-save" ]; then echo $VERSION > $GOROOT/VERSION else echo $VERSION fi