#!/usr/bin/python # ============================================================================== # Copyright and license info is available in the LICENSE file included with # the Server Deployment Package (SDP), and also available online: # https://swarm.workshop.perforce.com/projects/perforce-software-sdp/view/main/LICENSE # ------------------------------------------------------------------------------ """ This program should unlock a perforce label. The only command line parameter is the label p4unlock.py labelname """ import isitalabel import os import re import sys def unlock(label): lock_pattern = re.compile(r"^Options:\s+locked") owner_pattern = re.compile(r"^Owner:\s+(.*)") # Check to see if the labels exist x = isitalabel.check(label) if x == 0: print ("There is no label %s.") % (label) sys.exit(1) tempfile = open("temp.txt", "w") linelist = [] ownerfile = open("owner.txt", "w") # owner.txt is a one line file generated by the this script. It saves # the name of the label owner so it can be put back by p4lock.py. # The owner line is removed by this script because Perforce doesn't allow # anyone except the owner of a label to update the label. for line in os.popen("p4 label -o %s" % (label), "r").readlines(): match = owner_pattern.match(line) if match: owner= match.group(1) ownerfile.write(owner) line = owner_pattern.sub(r"", line) line = lock_pattern.sub(r"Options: unlocked", line) linelist = linelist + [line] tempfile.writelines(linelist) tempfile.close () ownerfile.close() os.system("p4 label -i -f < temp.txt") os.remove("temp.txt") def main(): if len(sys.argv) < 2: print ('Invalid input') print ('You must specify a label') print ('usage: p4unlock.py LABELNAME') else: label = sys.argv[1] unlock(label) ########################################################################### # main if __name__ == '__main__': main()