Vehicle-Anti-Theft-Face-Rec.../venv/Lib/site-packages/win32/scripts/VersionStamp/BrandProject.py

82 lines
2.5 KiB
Python
Raw Normal View History

2020-11-12 16:05:57 +00:00
# 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 as 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)