135 lines
3.8 KiB
Python
Executable File
135 lines
3.8 KiB
Python
Executable File
#!/usr/bin/python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import datetime
|
|
import getopt
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
|
|
|
|
def verbose():
|
|
verb = os.getenv( "EMERGE_VERBOSE" )
|
|
if ( not verb == None and verb.isdigit() and int(verb) > 0 ):
|
|
return int( verb )
|
|
else:
|
|
return 0
|
|
|
|
def debug( message ):
|
|
if verbose() > 0:
|
|
print "emerge debug:", message
|
|
return True
|
|
|
|
def die( message ):
|
|
print >> sys.stderr, "emerge fatal error: %s" % message
|
|
sys.exit( 1 )
|
|
|
|
def system( cmdstring, file = None ):
|
|
debug( "Executing '%s'" % cmdstring )
|
|
out = subprocess.PIPE
|
|
if file != None:
|
|
out = file
|
|
p = subprocess.Popen( cmdstring, shell=True, stdout=out, stderr=sys.stderr )
|
|
ret = p.wait()
|
|
if ( ret != 0 ):
|
|
die( "Error executing %s (%s)" % (cmdstring, ret) )
|
|
ret = ""
|
|
if file == None:
|
|
ret = p.stdout.read().strip()
|
|
return ret
|
|
|
|
def getSvn_Release( svn_dir ):
|
|
try:
|
|
old_lang = os.environ['LANG']
|
|
except:
|
|
old_lang = None
|
|
os.putenv("LANG", "en_US")
|
|
cmd = "svn info %s | grep \"Last Changed Rev\"" % svn_dir
|
|
rel = system( cmd ).split(':')[1].strip()
|
|
if old_lang:
|
|
os.putenv("LANG", old_lang)
|
|
return rel
|
|
|
|
def usage():
|
|
print >> sys.stdout, "Usage: %s [-r repository] [-s source] -p <project_name> -v <version>" % sys.argv[0]
|
|
print >> sys.stdout, " e.g.: %s -r TDS -s ctc -p tes_uae_ctc -v 4.3" % sys.argv[0]
|
|
print >> sys.stdout, " e.g.: %s -r AVS -s trunk -p tes_uae_ctc -v 4.3" % sys.argv[0]
|
|
|
|
|
|
|
|
def main():
|
|
svn_server = "slssvn"
|
|
|
|
try:
|
|
ip = socket.gethostbyname(socket.gethostname())
|
|
if ip.startswith('172.'):
|
|
svn_server = "ECCORAS01"
|
|
except:
|
|
print >> sys.stdout, "Using %s as svn server" % svn_server
|
|
|
|
try:
|
|
opts, args = getopt.getopt(sys.argv[1:], "p:r:s:v:",
|
|
["project_name=", "source=", "repository=", "version=",])
|
|
except getopt.GetoptError, err:
|
|
print >> sys.stderr, err
|
|
usage()
|
|
sys.exit(2)
|
|
|
|
version = None
|
|
project_name = None
|
|
svn_repo = "TDS"
|
|
svn_src = None
|
|
for o, a in opts:
|
|
if o in ("-p", "--project_name"):
|
|
project_name = a
|
|
if o in ("-r", "--repository"):
|
|
svn_repo = a
|
|
if o in ("-s", "--source"):
|
|
svn_src = a
|
|
if o in ("-v", "--version"):
|
|
version = a.split('.')
|
|
try:
|
|
version_maj = version[0]
|
|
version_min = version[1]
|
|
version = "%s.%s" % ( version_maj, version_min )
|
|
except:
|
|
die( "Invalid version format (maj.min): %s" % a )
|
|
|
|
if not version or not project_name:
|
|
usage()
|
|
die("Version or project name not defined")
|
|
|
|
if not svn_src:
|
|
svn_src = project_name[project_name.rfind('_') + 1:]
|
|
project = project_name[:project_name.rfind('_'):]
|
|
subproject_src = svn_src
|
|
subproject_dst = project_name[project_name.rfind('_') + 1:]
|
|
|
|
svn_branch = "svn://%s/%s/branches/%s/stable/%s" % ( svn_server, svn_repo, project, subproject_src )
|
|
full_version = "%s-%s" % ( version, getSvn_Release( svn_branch ) )
|
|
svn_tag = "svn://%s/%s/tags/%s/%s/%s_%s-%s" % ( svn_server, svn_repo, project, subproject_dst, project, subproject_dst, full_version )
|
|
|
|
print "Project: %s" % project
|
|
print "SubProject SRC: %s" % subproject_src
|
|
print "SubProject DST: %s" % subproject_dst
|
|
print "SVN Path: %s" % svn_branch
|
|
print "SVN Tag: %s" % svn_tag
|
|
|
|
filename = "svn-commit-msg-branch-%s" % project_name
|
|
f = open( filename, 'w' )
|
|
f.write( "Tagged TES UAE %s rev %s on %s\n" % ( project_name.upper(), full_version, datetime.date.today().isoformat() ) )
|
|
f.close()
|
|
|
|
system("svn cp %s %s -F %s" % ( svn_branch, svn_tag, filename ) )
|
|
|
|
os.remove( filename )
|
|
|
|
if __name__ == "__main__":
|
|
main()
|