- #!/bin/sh
- ############################################################ IDENT(1)
- #
- # $Title: Script to replay perforce checkpoint (simple) $
- #
- ############################################################ GLOBALS
- pgm="${0##*/}" # Program basename
- progdir="${0%/*}" # Program directory
- #
- # Global exit status
- #
- SUCCESS=0
- FAILURE=1
- #
- # Command-line options
- #
- DEBUG= # -d
- ROOTDIR= # -R dir
- UNPACK_ONLY= # -U
- USER= # -u user
- #
- # Miscellaneous
- #
- NUM=
- # NB: For usage() statement only (not exported)
- P4D_USER=admin
- P4D_ROOT=$( sysrc -n p4d_root 2> /dev/null )
- : ${P4D_ROOT:=/perforce}
- ############################################################ FUNCTIONS
- usage()
- {
- exec >&2
- local optfmt="\t%-8s %s\n"
- printf "Usage: %s [-U|-d] [OPTIONS] [NUM]\n" "$pgm"
- printf "OPTIONS:\n"
- printf "$optfmt" "-U" \
- "Unpack the checkpoint if-required (first step) and exit."
- printf "$optfmt" "-d" \
- "Debug. Don't stop p4d and don't replay but simulate it."
- printf "$optfmt" "-R dir" \
- "Perform replay in dir (default $P4D_ROOT)."
- printf "$optfmt" "-u user" \
- "Perform replay as user (default $P4D_USER)."
- exit $FAILURE
- }
- list_checkpoint_nums()
- {
- exec >&2
- echo "Available checkpoint numbers:"
- p4t checkpoints ${ROOTDIR:+-R "$ROOTDIR"} |
- awk 'sub(/^checkpoint\./,"\t")&&(sub(/\.[^.]+$/,"")||1)' |
- sort -nu
- exit $FAILURE
- }
- ############################################################ MAIN
- #
- # Command-line options
- #
- while getopts dR:u:U flag; do
- case "$flag" in
- d) DEBUG=1 ;;
- R) ROOTDIR="$OPTARG" ;;
- u) USER="$OPTARG" ;;
- U) UNPACK_ONLY=1 ;;
- *) usage
- esac
- done
- shift $(( $OPTIND - 1 ))
- NUM="$1"
- #
- # Validate command-line arguments
- #
- [ "$NUM" ] || list_checkpoint_nums
- #
- # Find out if there is such a checkpoint
- #
- if ! checkpoints=$( p4t list_checkpoint ${ROOTDIR:+-R "$ROOTDIR"} "$NUM" )
- then
- [ -d "${ROOTDIR:-.}" ] || exit $FAILURE
- echo "Checkpoint not available." >&2
- list_checkpoint_nums
- fi
- checkpoint="${checkpoints%%[$IFS]*}"
- #
- # Hand-off execution
- #
- exec p4t replay_checkpoint ${DEBUG:+-d} ${UNPACK_ONLY:+-U} \
- ${ROOTDIR:+-R "$ROOTDIR"} ${USER:+-u "$USER"} "$checkpoint"
- ################################################################################
- # END
- ################################################################################
- #
- # $Copyright: 2015 Devin Teske. All rights reserved. $
- #
- # $Header: //guest/freebsdfrau/p4t/libexec/replay#1 $
- #
- ################################################################################
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 16365 | freebsdfrau | Import p4t - p4d admin tool | 9 years ago |