97 lines
3.4 KiB
Bash
97 lines
3.4 KiB
Bash
#!/bin/bash
|
|
|
|
###
|
|
# 1.3 - Released 11-01-2013 - jaime_rios
|
|
# Updated shell script to work with Xcode5
|
|
# 1.2 - Released 9/27/2012 - tomahony
|
|
# Updated to handle spaces in the folder/flle names
|
|
# 1.1 - Released 6/25/2012 - jhalbig
|
|
#
|
|
# A shell script for an Xcode 5 behavior to automatically check out a file
|
|
# whenever it is "unlocked" (made writable) in Xcode.
|
|
#
|
|
# Full instructions for setting up this script can be found at:
|
|
#
|
|
# http://kb.perforce.com/articles/KB_Article/Automatically-Checking-Out-Files-for-Edit-in-Xcode-4-3
|
|
#
|
|
###
|
|
|
|
## Set the timeout interval for dismissing the dialog:
|
|
to=10
|
|
|
|
## Turn on all feedback (messages).
|
|
## If set to 1, the "p4 edit" command result is displayed
|
|
## when unlocking a file from Xcode.
|
|
## If set to 0, the file is unlocked and checked out of Perforce
|
|
## silently (messages and errors will still be logged to console):
|
|
fb=0
|
|
|
|
# Xcode doesn't setup the environment, so we load it here:
|
|
source ~/.bash_profile
|
|
|
|
export PATH="/usr/local/bin:/usr/bin:$PATH"
|
|
|
|
P4TOOL_PATH=`which p4`
|
|
|
|
if [ $P4TOOL_PATH == "" ] || [ ! -f $P4TOOL_PATH ]; then
|
|
P4TOOL_PATH = "/usr/local/bin/p4"
|
|
fi
|
|
|
|
fn=${XcodeAlertAffectedPaths}
|
|
fn=$(printf $(echo -n $fn | sed 's/\\/\\\\/g;s/\(%\)\([0-9a-fA-F][0-9a-fA-F]\)/\\x\2/g') )
|
|
|
|
# Get the enclosing directory for the file being unlocked:
|
|
fp=$(dirname "${fn}")
|
|
echo "fp=" ${fp}
|
|
|
|
# A check to confirm the current P4CONFIG setting:
|
|
conf=$($P4TOOL_PATH -d "${fp}" set P4CONFIG 2>&1)
|
|
echo ${conf}
|
|
|
|
if [ -a "${fn}" ]; then
|
|
|
|
# Save the dialog timeout to an environment variable:
|
|
export XC_TO=${to}
|
|
|
|
# Check the file out from Perforce:
|
|
res=$($P4TOOL_PATH -d "${fp}" edit "${fn}" 2>&1)
|
|
echo "res=" ${res}
|
|
|
|
# Save the result as an environment variable
|
|
export XC_RES=${res}
|
|
|
|
if [ ${fb} -gt 0 ]; then
|
|
|
|
# Tell Xcode to display a dialog to with the result of the command.
|
|
# The timeout is set by '${to}', above:
|
|
osascript -e "tell application \"xcode\" to display dialog (system attribute \"XC_RES\") buttons {\"OK\"} default button 1 giving up after (system attribute \"XC_TO\")"
|
|
fi
|
|
else
|
|
echo "FnF" "${fn}"
|
|
fi
|
|
###
|
|
# Copyright (c) Perforce Software, Inc., 1997-2012. All rights reserved
|
|
#
|
|
# Redistribution and use in source and binary forms, with or without
|
|
# modification, are permitted provided that the following conditions are met:
|
|
#
|
|
# 1. Redistributions of source code must retain the above copyright
|
|
# notice, this list of conditions and the following disclaimer.
|
|
#
|
|
# 2. Redistributions in binary form must reproduce the above copyright
|
|
# notice, this list of conditions and the following disclaimer in the
|
|
# documentation and/or other materials provided with the distribution.
|
|
#
|
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PERFORCE
|
|
# SOFTWARE, INC. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
|
# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
|
# DAMAGE.
|