home *** CD-ROM | disk | FTP | other *** search
- # BrandProject.py
- #
- # Brand a VSS project with a "build number", then optionally
- # stamp DLL/EXE files with version information.
-
- import win32api, os, string, sys
- import vssutil
- import bulkstamp
-
-
- def BrandProject(vssProjectName, descFile, stampPath, filesToSubstitute, buildDesc = None, auto=0, bRebrand = 0):
- # vssProjectName -- The name of the VSS project to brand.
- # descFile -- A test file containing descriptions of the files in the release.
- # stampPath -- The full path to where the files referenced in descFile can be found.
- path=win32api.GetFullPathName(stampPath)
-
- build = vssutil.MakeNewBuildNo(vssProjectName, buildDesc, auto, bRebrand)
- if build is None:
- print "Cancelled"
- return
-
- bulkstamp.scan( build, stampPath, descFile )
- for infile, outfile in filesToSubstitute:
- SubstituteVSSInFile(vssProjectName, infile, outfile)
- return 1
-
- def usage(msg):
- print msg
- print """\
- %s Usage:
- %s [options] vssProject descFile stampPath
-
- Automatically brand a VSS project with an automatically incremented
- build number, and stamp DLL/EXE files with the build number.
-
- Checks that no files are checked out in the project, and finds the last
- build number, and suggests the next number.
-
- Options:
- -a - Auto increment the build number, and brand (otherwise prompt
- for the build number after looking for the previous)
- -r - Restamp the files with the existing build number.
- -d - A description for the VSS Label.
- -f infile=outfile - Substitute special VSS labels in the specified text
- file with the text extracted from VSS.
- """ % (os.path.basename(sys.argv[0]), os.path.basename(sys.argv[0]))
- sys.exit(1)
-
- if __name__=='__main__':
- try:
- import getopt
- opts, args = getopt.getopt(sys.argv[1:], "af:d:r")
- except getopts.error, msg:
- usage(msg)
- bAuto = bRebrand = 0
- stampFiles = []
- desc = None
- for opt, val in opts:
- if opt == '-a':
- bAuto = 1
- if opt == '-f':
- infile, outfile = string.split(val, "=", 2)
- stampFiles.append((infile, outfile))
- if opt == '-d':
- desc = val
- if opt == '-r':
- bRebrand = 1
- if len(args)<3:
- usage("You must specify the required arguments")
- vssProjectName = "$\\" + args[0]
- descFile = args[1]
- path = args[2]
- try:
- os.stat(descFile)
- except IOError:
- usage("The description file '%s' can not be found" % (descFile))
- if not os.path.isdir(path):
- usage("The path to the files to stamp '%s' does not exist" % (path))
-
- BrandProject(vssProjectName, descFile, path, stampFiles, desc, bAuto, bRebrand)
-
-