#!/usr/local/bin/python import sys, os, isitalabel, makemetricsfiles USAGE_ERR = """ This command requires the depot path, the previous build label and the current build label as parameters. For Example: python metrics.py //depot/... JACKALOPE.16 JACKALOPE.17 """ TOOLS_ERR = """ You must set the environment variable TOOLSDIR to the location of your metrics scripts in order to run this script. """ DIR_ERR = """ Couldn't create the output directory. It either already exists, or there is a file with the same name that prevented the script from creating the directory. """ quiet = 0 i = 4 while i < len(sys.argv): if (sys.argv[i]) == '/q': quiet = 1 if (sys.argv[i]) == '-q': quiet = 1 if (sys.argv[i]) == '/quiet': quiet = 1 if (sys.argv[i]) == '-quiet': quiet = 1 i = i + 1 if len (sys.argv) < 4: print USAGE_ERR sys.exit(1) try: TOOLSDIR = os.environ['TOOLSDIR'] except: print TOOLS_ERR sys.exit(1) try: METRICSDIR = os.environ ['METRICSDIR'] except: METRICSDIR = 0 # Check to see if the labels exist x = isitalabel.check(sys.argv[2]) if x == 0: print "There is no label " + sys.argv[2] sys.exit(1) x = isitalabel.check(sys.argv[3]) if x == 0: print "There is no label " + sys.argv[3] sys.exit(1) if METRICSDIR == 0: if sys.platform == "win32": try: os.mkdir ("c:\\build") except: if quiet == 0: print DIR_ERR OUTDIR = "c:\\build\\" os.system ("echo Metrics starting at: > timetemp.txt") os.system ("timer on >> timetemp.txt") else: try: os.mkdir ("metrics") except: if quiet == 0: print DIR_ERR OUTDIR = "metrics" + os.sep else: OUTDIR = METRICSDIR try: os.mkdir (OUTDIR) except: if quiet == 0: print DIR_ERR makemetricsfiles.create (sys.argv[1], sys.argv[2], sys.argv[3]) makemetricsfiles.createlabel (sys.argv[1], sys.argv[2], sys.argv[3]) if quiet == 1: os.system ("python " + TOOLSDIR + os.sep + "changes.py " + sys.argv[1] + " " + sys.argv[2] + " " + sys.argv[3] + " > " + OUTDIR + os.sep + sys.argv[3] + ".list_of_changes") os.system ("python " + TOOLSDIR + os.sep + "describechanges.py " + sys.argv[1] + " " + sys.argv[2] + " " + sys.argv[3] + " > " + OUTDIR + os.sep + sys.argv[3] + ".source_code_diffs_by_change") os.system ("python " + TOOLSDIR + os.sep + "changemetrics.py " + sys.argv[1] + " " + sys.argv[2] + " " + sys.argv[3] + " > " + OUTDIR + os.sep + sys.argv[3] + ".diff_summary_by_change") os.system ("python " + TOOLSDIR + os.sep + "diff.py " + sys.argv[2] + " " + sys.argv[3] + " > " + OUTDIR + os.sep + sys.argv[3] + ".source_code_diffs") os.system ("python " + TOOLSDIR + os.sep + "filemetrics.py " + sys.argv[1] + " " + sys.argv[2] + " " + sys.argv[3] + " > " + OUTDIR + os.sep + sys.argv[3] + ".diff_summary") os.system ("python " + TOOLSDIR + os.sep + "treemetrics.py " + sys.argv[1] + " " + sys.argv[2] + " " + sys.argv[3] + " > " + OUTDIR + os.sep + sys.argv[3] + ".source_tree_report") os.system ("python " + TOOLSDIR + os.sep + "usermetrics.py " + sys.argv[1] + " " + sys.argv[2] + " " + sys.argv[3] + " > " + OUTDIR + os.sep + sys.argv[3] + ".diff_summary_by_user") os.system ("python " + TOOLSDIR + os.sep + "filehistorymetrics.py " + sys.argv[1] + " " + sys.argv[2] + " " + sys.argv[3] + " > " + OUTDIR + os.sep + sys.argv[3] + ".diff_summary_by_file_revision") os.system ("python " + TOOLSDIR + os.sep + "changedfiles.py " + sys.argv[2] + " " + sys.argv[3] + " > " + OUTDIR + os.sep + sys.argv[3] + ".list_of_changed_files") os.system ("python " + TOOLSDIR + os.sep + "ownermetrics.py " + sys.argv[3]) if sys.platform == "win32": os.system ("countlines " + sys.argv[3] + " > NUL") else: os.system ("python " + TOOLSDIR + os.sep + "changes.py " + sys.argv[1] + " " + sys.argv[2] + " " + sys.argv[3] + " | tee " + OUTDIR + os.sep + sys.argv[3] + ".list_of_changes") os.system ("python " + TOOLSDIR + os.sep + "describechanges.py " + sys.argv[1] + " " + sys.argv[2] + " " + sys.argv[3] + " | tee " + OUTDIR + os.sep + sys.argv[3] + ".source_code_diffs_by_change") os.system ("python " + TOOLSDIR + os.sep + "changemetrics.py " + sys.argv[1] + " " + sys.argv[2] + " " + sys.argv[3] + " | tee " + OUTDIR + os.sep + sys.argv[3] + ".diff_summary_by_change") os.system ("python " + TOOLSDIR + os.sep + "diff.py " + sys.argv[2] + " " + sys.argv[3] + " | tee " + OUTDIR + os.sep + sys.argv[3] + ".source_code_diffs") os.system ("python " + TOOLSDIR + os.sep + "filemetrics.py " + sys.argv[1] + " " + sys.argv[2] + " " + sys.argv[3] + " | tee " + OUTDIR + os.sep + sys.argv[3] + ".diff_summary") os.system ("python " + TOOLSDIR + os.sep + "treemetrics.py " + sys.argv[1] + " " + sys.argv[2] + " " + sys.argv[3] + " | tee " + OUTDIR + os.sep + sys.argv[3] + ".source_tree_report") os.system ("python " + TOOLSDIR + os.sep + "usermetrics.py " + sys.argv[1] + " " + sys.argv[2] + " " + sys.argv[3] + " | tee " + OUTDIR + os.sep + sys.argv[3] + ".diff_summary_by_user") os.system ("python " + TOOLSDIR + os.sep + "filehistorymetrics.py " + sys.argv[1] + " " + sys.argv[2] + " " + sys.argv[3] + " | tee " + OUTDIR + os.sep + sys.argv[3] + ".diff_summary_by_file_revision") os.system ("python " + TOOLSDIR + os.sep + "changedfiles.py " + sys.argv[2] + " " + sys.argv[3] + " | tee " + OUTDIR + os.sep + sys.argv[3] + ".list_of_changed_files") os.system ("python " + TOOLSDIR + os.sep + "ownermetrics.py " + sys.argv[3]) if sys.platform == "win32": os.system ("countlines " + sys.argv[3]) os.remove (sys.argv[2] + '.txt') os.remove (sys.argv[3] + '.txt') os.remove (sys.argv[2] + '.label') os.remove (sys.argv[3] + '.label') try: os.remove (sys.argv[3] + ".diff") except: print "Error removing file " + sys.argv[3] + ".diff" print "Metrics completed" if sys.platform == "win32": os.system ("echo Metrics finishing at: >> timetemp.txt") os.system ("timer >> timetemp.txt") os.system ("type timetemp.txt") os.remove ("timetemp.txt")