#!/bin/bash # Detect if the command was precisely 'p4 stream -o'. If so, process, otherwise # just PASS. Process means do 'p4 stream -o' and supply the current stream name. declare -i StreamCommand=0 declare -i ArgCountIsOne=0 declare -i FlagIsDashO=0 declare -i StreamFound=0 declare Workspace= declare Stream= declare tmpFile="/tmp/p4_stream-o.rewrite.$$.$RANDOM" ### declare log=/tmp/p4_stream-o.log export P4BIN=${P4BIN:-p4} /bin/rm -f $tmpFile ### /bin/rm -f $log while read line; do if [[ $line == "command: stream" ]]; then StreamCommand=1 echo $line >> $tmpFile elif [[ $line == "argCount: 1" ]]; then ArgCountIsOne=1 echo argCount: 2 >> $tmpFile elif [[ $line == "workspace: "* ]]; then Workspace=${line#workspace: } Stream=$($P4BIN -ztag -F %Stream% client -o $Workspace 2>/dev/null) [[ -n "$Stream" ]] && StreamFound=1 elif [[ $line == "Arg0: -o" ]]; then FlagIsDashO=1 echo -e "Arg0: -o\nArg1: $Stream" >> $tmpFile else echo $line >> $tmpFile fi done < /dev/stdin if [[ $StreamCommand -eq 1 && $ArgCountIsOne -eq 1 && $FlagIsDashO -eq 1 && $StreamFound -eq 1 ]]; then echo "action: REWRITE" ### echo "action: REWRITE" > $log cat $tmpFile ### cat $tmpFile >> $log /bin/rm -f $tmpFile exit 1 else echo "action: PASS" ### echo "action: PASS" > $log /bin/rm -f $tmpFile exit 0 fi exit 2
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 22191 | C. Thomas Tyler | Copy Up using 'p4 copy -r -b perforce_software-cbd-dev'. | ||
//guest/perforce_software/cbd/dev/scraps/p4_stream-o.sh | |||||
#1 | 21806 | C. Thomas Tyler |
Moved non-essential R&D and sample scripts to a scraps directory to keep them separate from components of the real system. |
||
//guest/perforce_software/cbd/dev/scripts/p4_stream-o.sh | |||||
#1 | 15316 | C. Thomas Tyler |
Added 'p4 stream -o' script as a sample broker script. Obsolete in p4d 2015.2, but still a fun example. |