import os, sys
SKIP = ['deprecated.c',
'entries.c',
'entries.h',
'old-and-busted.c']
TERMS = ['svn_wc_adm_access_t',
'svn_wc_entry_t',
'svn_wc__node_',
'svn_wc__db_temp_',
'svn_wc__db_node_hidden',
'svn_wc__loggy',
'svn_wc__db_wq_add',
]
def get_files_in(path):
names = os.listdir(path)
for skip in SKIP:
try:
names.remove(skip)
except ValueError:
pass
return [os.path.join(path, fname) for fname in names
if fname.endswith('.c') or fname.endswith('.h')]
def count_terms_in(path):
files = get_files_in(path)
counts = {}
for term in TERMS:
counts[term] = 0
for filepath in get_files_in(path):
contents = open(filepath).read()
for term in TERMS:
counts[term] += contents.count(term)
return counts
def print_report(wcroot):
client = count_terms_in(os.path.join(wcroot, 'subversion', 'libsvn_client'))
wc = count_terms_in(os.path.join(wcroot, 'subversion', 'libsvn_wc'))
client_total = 0
wc_total = 0
FMT = '%22s |%14s |%10s |%6s'
SEP = '%s+%s+%s+%s' % (23*'-', 15*'-', 11*'-', 7*'-')
print(FMT % ('', 'libsvn_client', 'libsvn_wc', 'Total'))
print(SEP)
for term in TERMS:
print(FMT % (term, client[term], wc[term], client[term] + wc[term]))
client_total += client[term]
wc_total += wc[term]
print(SEP)
print(FMT % ('Total', client_total, wc_total, client_total + wc_total))
def usage():
print("""\
Usage: %s [WCROOT]
%s --help
Show statistics related to outstanding WC-NG code conversion work
items in working copy branch root WCROOT. If WCROOT is omitted, this
program will attempt to guess it using the assumption that it is being
run from within the working copy of interest."""
% (sys.argv[0], sys.argv[0]))
sys.exit(0)
if __name__ == '__main__':
if len(sys.argv) > 1:
if '--help' in sys.argv[1:]:
usage()
print_report(sys.argv[1])
else:
cwd = os.path.abspath(os.getcwd())
idx = cwd.rfind(os.sep + 'subversion')
if idx > 0:
wcroot = cwd[:idx]
else:
idx = cwd.rfind(os.sep + 'tools')
if idx > 0:
wcroot = cwd[:idx]
elif os.path.exists(os.path.join(cwd, 'subversion')):
wcroot = cwd
else:
print("ERROR: the root of 'trunk' cannot be located -- please provide")
sys.exit(1)
print_report(wcroot)