gen-javahl-errors.py [plain text]
import sys, os
try:
from svn import core
except ImportError as e:
sys.stderr.write("ERROR: Unable to import Subversion's Python bindings: '%s'\n" \
"Hint: Set your PYTHONPATH environment variable, or adjust your " \
"PYTHONSTARTUP\nfile to point to your Subversion install " \
"location's svn-python directory.\n" % e)
sys.stderr.flush()
sys.exit(1)
def get_errors():
errs = {}
for key in vars(core):
if key.find('SVN_ERR_') == 0:
try:
val = int(vars(core)[key])
errs[val] = key
except:
pass
return errs
def gen_javahl_class(error_codes, output_filename):
jfile = open(output_filename, 'w')
jfile.write(
"""/** ErrorCodes.java - This file is autogenerated by gen-javahl-errors.py
*/
package org.tigris.subversion.javahl;
/**
* Provide mappings from error codes generated by the C runtime to meaningful
* Java values. For a better description of each error, please see
* svn_error_codes.h in the C source.
*/
public class ErrorCodes
{
""")
keys = sorted(error_codes.keys())
for key in keys:
code_name = error_codes[key][8:].replace('_', ' ').title().replace(' ', '')
code_name = code_name[0].lower() + code_name[1:]
jfile.write(" public static final int %s = %d;\n" % (code_name, key))
jfile.write("}\n")
jfile.close()
if __name__ == "__main__":
if len(sys.argv) > 1:
output_filename = sys.argv[1]
else:
output_filename = os.path.join('..', '..', 'subversion', 'bindings',
'javahl', 'src', 'org', 'tigris',
'subversion', 'javahl', 'ErrorCodes.java')
gen_javahl_class(get_errors(), output_filename)