- #!/bin/sh
- if [ $# -ne 3 ]
- then
- echo "Error: Incorrect parameters passed to $0"
- echo "Usage: $0 <depot root> <client root> <bom file>"
- echo
- echo "<depot root> would be something like '//oware/oware21/'"
- echo "<client root> would be '//build-clifford21/oware'"
- echo "These values will be prepended to the lines in the bom file to"
- echo "create the client spec view."
- echo "<bom file> is a file list to be added to the view for the client"
- echo
- echo "Note: The behavior may be unexpected with unusual characters such as space"
- exit 1
- fi
- stat=0
- pass1=$1
- pass2=$2
- if [ "$DEBUG" = 0 ]
- then
- set -vx
- fi
- # Enclose roots in //<root>
- index=0
- for i in "$1" "$2"
- do
- index=`expr $index + 1`
- eval pass$count="$i"
- echo $i | grep ^/ > /dev/null || \
- eval pass$index="//$i"
- echo $i | grep /$ > /dev/null && \
- eval pass$index=`expr "$i" : '\(.*[a-z|0-9]\)'`
- done
- eval depot_root="$pass1"
- eval client_root="$pass2"
- bom_file=$3
- client=`echo $client_root | awk -F/ '{print $3}'`
- if [ ! -f $bom_file ]
- then
- echo "$0, $bom_file does not exist"
- exit 1
- fi
- if [ x$WORK_DIR = x ]
- then
- WORK_DIR=/tmp
- fi
- if [ ! -d "$WORK_DIR" ]
- then
- mkdir $WORK_DIR
- stat=`expr $stat + $?`
- fi
- # Create the client spec.
- # If a client's View is empty then create a view line first.
- p4 client -o $client | tee $WORK_DIR/client.tmp | grep ^View: > /dev/null \
- || echo View: >> $WORK_DIR/client.tmp
- stat=`expr $stat + $?`
- bom_operator 'echo " "' $depot_root $client_root $bom_file >> \
- $WORK_DIR/client.tmp
- stat=`expr $stat + $?`
- echo Modifying $client
- p4 -s -c $client client -i < $WORK_DIR/client.tmp
- stat=`expr $stat + $?`
- exit $stat
- # The following was old way. I stopped this because I'd rather assume that
- # we need to add the records each time. If there are duplifcates then it is
- # an error in usage. I want to discourage the use of updating the client spec
- # instead of release.bom
- # Only add records that are unique.
- pattern=`awk -v from=$depot_root -v to=$client_root \
- '{print "\t"from$1,to$1}' $bom_file`
- stat=`expr $stat + $?`
- start=off
- modified=false
- for i in $pattern
- do
- if [ $start != "on" ]
- then
- start=on
- record=$i
- else
- record="$record $i"
- # use fgrep because it doesn't know of regular expressions. This allows it to
- # match files like *.txt.
- fgrep "$record" $WORK_DIR/client.tmp > /dev/null
- if [ $? -eq 1 ]
- then
- echo " "$record >> $WORK_DIR/client.tmp
- modified=true
- fi
- start=off
- fi
- done
- if [ "$modified" = "true" ]
- then
- echo $client modified
- p4 -s -c $client client -i < $WORK_DIR/client.tmp
- stat=`expr $stat + $?`
- fi
- exit $stat
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 588 | matt_peterson | Tools for building | 24 years ago |