#!/usr/bin/python import sys import os import md5 import os.path EDITOR = os.environ.get('EDITOR', 'vim') def md5file(filename): try: return md5.new(file(filename,'r').read()).hexdigest() except: return "" if len(sys.argv) < 2: print "need command" sys.exit(1) mode = "unknown" if os.path.exists('DIAGMODE') : mode = "diag" if os.path.exists('PRODMODE'): mode = "prod" if os.path.exists('.hg'): merc = 1 else : merc = 0 if mode=="unknown": print "Unable to determine DIAGMODE or PRODMODE. Please touch appropriate file in run-dir" sys.exit(0); cmd = sys.argv[0] files = os.listdir('.') files.sort() lastfile="" new = 0 for i in range(1,len(files) + 1): j = -1 * i f = files[j] if f.endswith(".sql"): lastfile = f break; if sys.argv[1] in ["current","c"]: # no last file! if len(lastfile) == 0: print "No last file" sys.exit(0) editfile =lastfile elif sys.argv[1] in ["next","n"]: new = 1 if len(sys.argv) == 3: input = sys.argv[2] else: print "I need description as third argument" sys.exit(1) if len(input): if len(lastfile): first = lastfile[:lastfile.find("_")] try: number = int(first) except: number = int(first[:-1]) number += 1 else: number = 1 editfile = "%05u_%s.sql" % (number,input) else: editfile = sys.argv[1].strip() if not (os.path.exists(editfile) and os.path.isfile(editfile) ): print "no real file" editfile = "" if editfile.find("_") == -1: print "Malformed filename" editfile = "" else: first = editfile[:editfile.find("_")] try: number = int(first) except: try: number = int(first[:-1]) except: number = -1 print number if number < 1: editfile = "" print "No number" if len(editfile) ==0: sys.exit(0) before_md5 = md5file(editfile) exitcode = os.system('%s %s' % (EDITOR, editfile)) after_md5 = md5file(editfile) if (after_md5 != "" and before_md5 != after_md5): if mode == 'prod': os.system("rundb %s" % (number,)) elif mode == 'diag': os.system("rundb %s" % (editfile,)) if merc == 1: if new: os.system("hg add " + editfile) print "Run mercurial ? (Yes [A]uto, Yes [M]anual, No)" c = "" while c not in ['a','m','n']: c = sys.stdin.read(1).lower() if c == 'n': sys.exit() if c == 'a': os.system("hg ci -m `date +auto%Y%m%d%H%M%S`") sys.exit() if c == 'm': os.system("hg ci") sys.exit()