#!/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)