#!/usr/bin/python # commitlog.py # # Written July 2001 by David W. Jeske <jeske@neotonic.com> # # Released freely into the public domain. # # parse CVS commit logs and make nice submit logs... # import sys import os import string import time def main(argv): PATH = argv[1] module = argv[2] body = sys.stdin.read() body_lines = string.split(body,"\n") mode = 0 mod_files = [] add_files = [] rem_files = [] log_lines = [] for a_line in body_lines: if a_line == "Modified Files:": mode = "modfiles" elif a_line == "Added Files:": mode = "addfiles" elif a_line == "Log Message:": mode = "loglines" elif a_line == "Removed Files:": mode = "remfiles" else: if mode == "modfiles": mod_files.append(string.strip(a_line)) elif mode == "addfiles": add_files.append(string.strip(a_line)) elif mode == "loglines": log_lines.append(a_line) elif mode == "remfiles": rem_files.append(string.strip(a_line)) # if files don't exist, we should create them... CVS_USER = os.environ['LOGNAME'] DATE = time.strftime( "%I:%M%p %Y/%m/%d", time.localtime(time.time())) log_summary = "%10s %16s %s\n" % (CVS_USER,DATE,string.join(log_lines," ")[:60]) filename = os.path.join(PATH,"%s.summary" % module) os.system('co -f -q -l %s %s,v' % (filename,filename)) # check to see if the log line is already there fps = open(filename,"a+") try: fps.seek(-len(log_summary),2) check_data = fps.read(len(log_summary)) if check_data != log_summary: fps.write(log_summary) except IOError: # Not enough data to go back that far fps.write(log_summary) fps.close() os.system('ci -q -m"none" %s %s,v' % (filename,filename)) log_data = "----------------\n" + "USER: %s\n" % CVS_USER + "DATE: %s\n" % DATE + body filename = os.path.join(PATH,"%s" % module) os.system('co -f -q -l %s %s,v' % (filename,filename)) fp = open(filename,"a+") fp.write(log_data) fp.close() os.system('ci -q -m"none" %s %s,v' % (filename,filename)) if __name__ == "__main__": main(sys.argv)