diff options
author | Ben Pfaff <blp@nicira.com> | 2015-06-16 08:22:46 -0700 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2015-06-16 08:22:46 -0700 |
commit | b59de254f20cd85db0dde9b1cbbfdb3816a21d27 (patch) | |
tree | a6c2f4466fa5a955228d3f8edf4035500ba42f07 /build-aux | |
parent | 8420c7ad4ee9ba244edf3df143a7ffe7c9047c2b (diff) | |
download | openvswitch-b59de254f20cd85db0dde9b1cbbfdb3816a21d27.tar.gz |
xml2nroff: Add support for variable substitutions.
This allows XML-generated manpages in the source tree to include correct
directory names for the local configuration, instead of just the plain
nroff ones.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Alex Wang <alexw@nicira.com>
Diffstat (limited to 'build-aux')
-rwxr-xr-x | build-aux/xml2nroff | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/build-aux/xml2nroff b/build-aux/xml2nroff index 8dc9d4f78..1df195e59 100755 --- a/build-aux/xml2nroff +++ b/build-aux/xml2nroff @@ -28,17 +28,26 @@ def usage(): print """\ %(argv0)s: XML to nroff converter Converts the XML format supplied as input into an nroff-formatted manpage. -usage: %(argv0)s [OPTIONS] INPUT.XML +usage: %(argv0)s [OPTIONS] INPUT.XML [VAR=VALUE]... where INPUT.XML is a manpage in an OVS-specific XML format. +Each VAR, when enclosed by "@"s in the input, is replaced by its +corresponding VALUE, with characters &<>"' in VALUE escaped. + The following options are also available: --version=VERSION use VERSION to display on document footer -h, --help display this help message\ """ % {'argv0': argv0} sys.exit(0) -def manpage_to_nroff(xml_file, version=None): - doc = xml.dom.minidom.parse(xml_file).documentElement +def manpage_to_nroff(xml_file, subst, version=None): + f = open(xml_file) + input = [] + for line in f: + for k, v in subst.iteritems(): + line = line.replace(k, v) + input += [line] + doc = xml.dom.minidom.parseString(''.join(input)).documentElement d = date.fromtimestamp(os.stat(xml_file).st_mtime) if version == None: @@ -102,13 +111,23 @@ if __name__ == "__main__": else: sys.exit(0) - if len(args) != 1: + if len(args) < 1: sys.stderr.write("%s: exactly 1 non-option arguments required " "(use --help for help)\n" % argv0) sys.exit(1) + subst = {} + for s in args[1:]: + var, value = s.split('=', 1) + value = value.replace('&', '&') + value = value.replace('<', '<') + value = value.replace('>', '>') + value = value.replace('"', '"') + value = value.replace("'", ''') + subst['@%s@' % var] = value + try: - s = manpage_to_nroff(args[0], version) + s = manpage_to_nroff(args[0], subst, version) except error.Error, e: sys.stderr.write("%s: %s\n" % (argv0, e.msg)) sys.exit(1) |