123 lines
3.2 KiB
Python
123 lines
3.2 KiB
Python
# -*-python-*-
|
|
#
|
|
# Copyright (C) 1999-2013 The ViewCVS Group. All Rights Reserved.
|
|
#
|
|
# By using this file, you agree to the terms and conditions set forth in
|
|
# the LICENSE.html file which can be found at the top level of the ViewVC
|
|
# distribution or at http://viewvc.org/license-1.html.
|
|
#
|
|
# For more information, visit http://viewvc.org/
|
|
#
|
|
# -----------------------------------------------------------------------
|
|
|
|
"""debug.py: various debugging tools for the rcsparse package."""
|
|
|
|
import time
|
|
|
|
from __init__ import parse
|
|
import common
|
|
|
|
|
|
class DebugSink(common.Sink):
|
|
def set_head_revision(self, revision):
|
|
print 'head:', revision
|
|
|
|
def set_principal_branch(self, branch_name):
|
|
print 'branch:', branch_name
|
|
|
|
def define_tag(self, name, revision):
|
|
print 'tag:', name, '=', revision
|
|
|
|
def set_comment(self, comment):
|
|
print 'comment:', comment
|
|
|
|
def set_description(self, description):
|
|
print 'description:', description
|
|
|
|
def define_revision(self, revision, timestamp, author, state,
|
|
branches, next):
|
|
print 'revision:', revision
|
|
print ' timestamp:', timestamp
|
|
print ' author:', author
|
|
print ' state:', state
|
|
print ' branches:', branches
|
|
print ' next:', next
|
|
|
|
def set_revision_info(self, revision, log, text):
|
|
print 'revision:', revision
|
|
print ' log:', log
|
|
print ' text:', text[:100], '...'
|
|
|
|
|
|
class DumpSink(common.Sink):
|
|
"""Dump all the parse information directly to stdout.
|
|
|
|
The output is relatively unformatted and untagged. It is intended as a
|
|
raw dump of the data in the RCS file. A copy can be saved, then changes
|
|
made to the parsing engine, then a comparison of the new output against
|
|
the old output.
|
|
"""
|
|
def __init__(self):
|
|
global sha
|
|
import sha
|
|
|
|
def set_head_revision(self, revision):
|
|
print revision
|
|
|
|
def set_principal_branch(self, branch_name):
|
|
print branch_name
|
|
|
|
def define_tag(self, name, revision):
|
|
print name, revision
|
|
|
|
def set_comment(self, comment):
|
|
print comment
|
|
|
|
def set_description(self, description):
|
|
print description
|
|
|
|
def define_revision(self, revision, timestamp, author, state,
|
|
branches, next):
|
|
print revision, timestamp, author, state, branches, next
|
|
|
|
def set_revision_info(self, revision, log, text):
|
|
print revision, sha.new(log).hexdigest(), sha.new(text).hexdigest()
|
|
|
|
def tree_completed(self):
|
|
print 'tree_completed'
|
|
|
|
def parse_completed(self):
|
|
print 'parse_completed'
|
|
|
|
|
|
def dump_file(fname):
|
|
parse(open(fname, 'rb'), DumpSink())
|
|
|
|
def time_file(fname):
|
|
f = open(fname, 'rb')
|
|
s = common.Sink()
|
|
t = time.time()
|
|
parse(f, s)
|
|
t = time.time() - t
|
|
print t
|
|
|
|
def _usage():
|
|
print 'This is normally a module for importing, but it has a couple'
|
|
print 'features for testing as an executable script.'
|
|
print 'USAGE: %s COMMAND filename,v' % sys.argv[0]
|
|
print ' where COMMAND is one of:'
|
|
print ' dump: filename is "dumped" to stdout'
|
|
print ' time: filename is parsed with the time written to stdout'
|
|
sys.exit(1)
|
|
|
|
if __name__ == '__main__':
|
|
import sys
|
|
if len(sys.argv) != 3:
|
|
_usage()
|
|
if sys.argv[1] == 'dump':
|
|
dump_file(sys.argv[2])
|
|
elif sys.argv[1] == 'time':
|
|
time_file(sys.argv[2])
|
|
else:
|
|
_usage()
|