132 lines
4.3 KiB
Bash
Executable File
132 lines
4.3 KiB
Bash
Executable File
# make-nml NewGRF build framework
|
|
# (c) 2014 planetmaker and others
|
|
# Contact: planetmaker@openttd.org
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License along
|
|
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
#
|
|
|
|
# This file is derived from OpenTTD's version check
|
|
|
|
|
|
# Arguments given? Show help text.
|
|
if [ "$#" != "0" ]; then
|
|
cat <<EOF
|
|
Usage: ./findversion.sh
|
|
Finds the current revision and if the code is modified.
|
|
|
|
Output: <HASH>\t<VERSION>\t<MODIFIED>\t<TAG>\t<DISPLAY_VERSION>\t<BRANCH>\t<DATE>
|
|
HASH
|
|
a string unique to the version of the code the current checkout is
|
|
based on. The exact format of this string depends on the version
|
|
control system in use, but it tries to identify the revision used as
|
|
close as possible (using the svn revision number or hg/git hash).
|
|
This also includes an indication of whether the checkout was
|
|
modified and which branch was checked out. This value is not
|
|
guaranteed to be sortable, but is mainly meant for identifying the
|
|
revision and user display.
|
|
|
|
If no revision identifier could be found, this is left empty.
|
|
VERSION
|
|
the version number to be reported to OpenTTD (aka NewGRF version).
|
|
This usually is the number of days passed since 1.1.2000 up to the
|
|
date of the last commit in the repository.
|
|
|
|
This number should be sortable. Within a given branch or trunk, a
|
|
higher number means a newer version. However, when using git or hg,
|
|
this number will not increase on new commits.
|
|
|
|
If no revision number could be found, this is left empty.
|
|
MODIFIED
|
|
Whether (the src directory of) this checkout is modified or not. A
|
|
value of 0 means not modified, a value of 2 means it was modified.
|
|
Modification is determined in relation to the commit identified by
|
|
REV, so not in relation to the svn revision identified by REV_NR.
|
|
|
|
A value of 1 means that the modified status is unknown, because this
|
|
is not an svn/git/hg checkout for example.
|
|
TAG
|
|
the tag of the commit (if any) - used to indicate and name releases
|
|
DISPLAY_VERSION
|
|
The version string shown to the user of the NewGRF
|
|
BRANCH
|
|
The branch the version is based on
|
|
DATE
|
|
The date of the last commit in ISO format
|
|
|
|
|
|
By setting the AWK environment variable, a caller can determine which
|
|
version of "awk" is used. If nothing is set, this script defaults to
|
|
"awk".
|
|
EOF
|
|
exit 1;
|
|
fi
|
|
|
|
# Allow awk to be provided by the caller.
|
|
if [ -z "$AWK" ]; then
|
|
AWK=awk
|
|
fi
|
|
|
|
# Find out some dirs
|
|
cd `dirname "$0"`
|
|
ROOT_DIR=`pwd`
|
|
|
|
# Determine if we are using a modified version
|
|
# Assume the dir is not modified
|
|
MODIFIED=""
|
|
REPO_DATE="2000,1,1"
|
|
if [ -d "$ROOT_DIR/.hg" ]; then
|
|
# We are a hg checkout
|
|
if [ -n "`HGPLAIN= hg status -S | grep -v '^?'`" ]; then
|
|
MODIFIED="M"
|
|
fi
|
|
HASH=`LC_ALL=C HGPLAIN= hg id -i | cut -c1-12`
|
|
REV="h`echo $HASH | cut -c1-8`"
|
|
BRANCH="`hg branch | sed 's@^default$@@'`"
|
|
TAG="`HGPLAIN= hg id -t | grep -v 'tip$'`"
|
|
ISO_DATE="`HGPLAIN= hg log -r$HASH --template=\"{date|shortdate}\"`"
|
|
REPO_DATE="`echo ${ISO_DATE} | sed s/-/,/g | sed s/,0/,/g`"
|
|
VERSION=`python -c "from datetime import date; print (date($REPO_DATE)-date(2000,1,1)).days"`
|
|
DISPLAY_VERSION="v${VERSION}"
|
|
if [ -n "$TAG" ]; then
|
|
BRANCH=""
|
|
DISPLAY_VERSION="${TAG}"
|
|
fi
|
|
elif [ -f "$ROOT_DIR/.rev" ]; then
|
|
# We are an exported source bundle
|
|
cat $ROOT_DIR/.rev
|
|
exit
|
|
else
|
|
# We don't know
|
|
HASH=""
|
|
VERSION="0"
|
|
MODIFIED=""
|
|
BRANCH=""
|
|
TAG=""
|
|
DISPLAY_VERSION="noRev"
|
|
ISO_DATE=""
|
|
fi
|
|
|
|
DISPLAY_VERSION="${DISPLAY_VERSION}${MODIFIED}"
|
|
|
|
if [ -n "$BRANCH" ]; then
|
|
DISPLAY_VERSION="$BRANCH-${DISPLAY_VERSION}"
|
|
fi
|
|
|
|
if [ -z "${TAG}" -a -n "${HASH}" ]; then
|
|
DISPLAY_VERSION="${DISPLAY_VERSION}-h${HASH}"
|
|
fi
|
|
|
|
echo "$HASH $VERSION $MODIFIED $TAG $DISPLAY_VERSION $BRANCH $ISO_DATE"
|