#!/bin/sh
#ident $Id: next-cvs_project_version.sh,v 1.5 2004/10/26 08:44:50 davep Exp $
# Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
# @APPLE_LICENSE_HEADER_START@
# The contents of this file constitute Original Code as defined in and
# are subject to the Apple Public Source License Version 1.1 (the
# "License").  You may not use this file except in compliance with the
# License.  Please obtain a copy of the License at
# http://www.apple.com/publicsource and read it before using this file.
# This Original Code and all software distributed under the License are
# distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
# EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
# INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
# License for the specific language governing rights and limitations
# under the License.
# @APPLE_LICENSE_HEADER_END@
# from /usr/bin/vers_string
test=test
# default vers file is ./CVSVersionInfo.txt
versFile=CVSVersionInfo.txt
cflag=0
fflag=0
lflag=0
Bflag=0
nflag=0
while $test $# -gt 0 ; do
case $1 in
-c) cflag=1;;
-l) lflag=1;;
-f) fflag=1;;
-B) Bflag=1;;
-n) nflag=1;;
-V) versFile=$2;;
*) argProjName=$1;;
esac
shift
done
#echo cflag $cflag
#echo fflag $fflag
#echo lflag $lflag
#echo Bflag $Bflag
#echo nflag $nflag
if $test '!' -r $versFile ; then
# This used to call `$projectInfo -rootProjectDir -inDirectory $wd`
# to try to get the vers file if it wasn't found in the working
# directory, but the -rootProjectDir flag to projectInfo
# is no longer supported.
echo "error: could not find CVSVersionInfo.txt for project versioning" 1>&2
exit 1
isWinNT=`arch | grep winnt`
# on OpenStep For Windows we have to use gawk
case $isWinNT in
*winnt*) awk=gawk;;
*) awk=awk;;
esac
user=`$awk '/\\$\Id:/ {print $7;}' $versFile`
timestamp=`$awk '/\\$\Id:/ {print $5 " " $6;}' $versFile`
fileVers=`$awk '/\\$\Id:/ {print $4;}' $versFile`
name=`$awk '/^ProjectName:/ {print $2;}' $versFile`
tag=`$awk '/\\$\Name:/ {print $3;}' $versFile`
versNum=`$awk '/^ProjectVersion:/ {print $2;}' $versFile`
PROJ=${argProjName-$name}
clean_proj_name=`echo $PROJ | sed 's/[^0-9A-Za-z]/_/g'`
#debugging 
#echo user $user 
#echo timestamp $timestamp 
#echo fileVers $fileVers
#echo name $name
#echo PROJ $PROJ
#echo clean_proj_name $clean_proj_name
#echo tag $tag
#echo versNum $versNum
# the keyword name is the current tag and only gets filled in if 
# the files are extracted at that tag. If the tag has a value,
# then it is a released version, if the tag is '$' then
# it has no value and is a development version.
case $tag in
'$') vers="$versNum.dev";;
*)   vers=$versNum;;
esac
q='"'
if $test $fflag = 1 ; then
echo $PROJ-$vers
elif $test $nflag = 1 ; then
echo $versNum
else
vers_str="Project:$PROJ Version:$vers (Checkpoint by:$user on:$timestamp revision:$fileVers)"
if $test $lflag = 1 ; then
echo "const char "$clean_proj_name"_VERS_STRING[200] = $q@(#)$vers_str$q;"
elif $test $cflag = 1 ; then
echo "const char "$clean_proj_name"_VERS_STRING[200] = $q@(#)$vers_str$q;"
echo "const char "$clean_proj_name"_VERS_NUM[32] = $q$vers$q;"
else
echo $vers_str
exit 0
