| #!/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 |