clienttrigger.py #1

  • //
  • guest/
  • robert_cowham/
  • perforce/
  • utils/
  • triggers/
  • clienttrigger.py
  • View
  • Commits
  • Open Download .zip Download (3 KB)
#!/usr/bin/python
#
# clienttrigger.py
#
# Copyright (c) 2008, Perforce Software, Inc.  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.
# 
# $Id: //guest/robert_cowham/perforce/utils/triggers/clienttrigger.py#1 $
# 
# This trigger updates a new client spec with some defaults.
# It is meant as a template to create your own client default triggers.
# 
# This script requires P4Python 2007.3 or later from the Perforce website.
# 
# Called with formname, formfile and serverport and user
# Link this up as a trigger with a trigger line like this:
#
# default-client form-out client "/home/triggers/clienttrigger.py %formname% %formfile% %serverport% %user%

import P4
import sys

clientname = sys.argv[1]
clientfilename = sys.argv[2]
serverport = sys.argv[3]
user = sys.argv[4]

p4 = P4.P4()
p4.port = serverport
p4.user = user
p4.client = clientname
p4.connect()

# verify that the client does not exists already

info = p4.run_info()[0]


if info['clientName'] != "*unknown*":
  sys.exit(0)

# read the formfile

clientfile = open( clientfilename, "r" )
clientAsString = clientfile.read()
clientfile.close()

# parse the formfile

client = p4.parse_client(clientAsString)

# change the client content

client['Options'] = client['Options'].replace('normdir', 'rmdir')

# create the string again
# and modify the formfile

clientAsString = p4.format_client(client)

clientfile = open ( clientfilename, "w" )
clientfile.write(clientAsString)
clientfile.close()

# and exit successfully

p4.disconnect()
sys.exit(0)
# Change User Description Committed
#1 7531 Robert Cowham Personal branch
//guest/sven_erik_knop/P4Pythonlib/triggers/clienttrigger.py
#3 7372 Sven Erik Knop Rollback Rename/move file(s).
To folder "perforce" is needed.
#2 7370 Sven Erik Knop Rename/move file(s) again - this time to the right location inside a perforce directory.
#1 7367 Sven Erik Knop New locations for the Python triggers.
//guest/sven_erik_knop/perforce/P4Pythonlib/triggers/clienttrigger.py
#1 7370 Sven Erik Knop Rename/move file(s) again - this time to the right location inside a perforce directory.
//guest/sven_erik_knop/P4Pythonlib/triggers/clienttrigger.py
#1 7367 Sven Erik Knop New locations for the Python triggers.
//guest/sven_erik_knop/triggers/clienttrigger.py
#1 6413 Sven Erik Knop Added some P4Python-based Perforce triggers.

P4Triggers.py is the based class for change trigger in Python modelled on
Tony Smith's Ruby trigger with the same name.

CheckCaseTrigger.py is a trigger that ensures that no-one enters a file
or directory with a name only differing by case from an existing file. This
trigger is Unicode aware and uses Unicode-comparison of file names, so it
can be used on nocase-Unicode based Perforce servers, which cannot catch
the difference between, say, "�re" and "�re" at the moment.

clienttrigger.py is a simple trigger that modifies the option "normdir" to
"rmdir" for new client specs only. It is meant as a template to create more
complex default settings like standard views.