commit 9b0f900eb3d67d62b699c0d13dbcaa0e6703869c
parent fcd78b5ca8a321d1835189ac7e0d2376f461be18
Author: lash <dev@holbrook.no>
Date: Thu, 24 Feb 2022 11:22:54 +0000
Automatically apply overrides if file exists, use source dir instead of head file explicitly in man generator
Diffstat:
1 file changed, 41 insertions(+), 24 deletions(-)
diff --git a/scripts/chainlib-man.py b/scripts/chainlib-man.py
@@ -79,13 +79,13 @@ https://git.defalsify.org
argparser = argparse.ArgumentParser()
argparser.add_argument('-b', default=add_0x(hex(argflag_std_base)), help='argument flag bitmask')
argparser.add_argument('-c', help='config override directory')
-argparser.add_argument('-n', help='tool name to use for man filename')
+argparser.add_argument('-n', required=True, help='tool name to use for man filename')
argparser.add_argument('-d', default='.', help='output directory')
argparser.add_argument('-v', action='store_true', help='turn on debug logging')
-argparser.add_argument('--overrides-file', dest='overrides_file', help='load options description override from file')
+#argparser.add_argument('--overrides-dir', dest='overrides_dir', help='load options description override from file')
argparser.add_argument('--overrides-env-dir', dest='overrides_env_dir', help='load envionment description override config from directory')
argparser.add_argument('--overrides-config-file', dest='overrides_config_file', help='load configuration text from file')
-argparser.add_argument('header_file', help='groff file containing heading, synopsis and description')
+argparser.add_argument('source_dir', help='directory containing sources for the tool man page')
args = argparser.parse_args(sys.argv[1:])
if args.v:
@@ -100,33 +100,50 @@ logg.debug('apply arg flags {}: {}'.format(flags, ', '.join(flags_debug)))
g = DocGenerator(flags)
toolname = args.n
-if toolname == None:
- parts = os.path.splitext(os.path.basename(args.header_file))
- toolname = parts[0]
+#if toolname == None:
+# parts = os.path.splitext(os.path.basename(args.header_file))
+# toolname = parts[0]
g.process()
-if args.overrides_file != None:
- f = open(args.overrides_file, 'r')
- while True:
- s = f.readline()
- if len(s) == 0:
- break
- v = s.split('\t', maxsplit=2)
- fargs = None
- try:
- fargs = v[2].rstrip().split(',')
- except IndexError:
- fargs = []
- g.override_arg(v[0], v[1], fargs)
- f.close()
-
+def apply_override(g, override_dir):
+ #if args.overrides_dir != None:
+ overrides_file = os.path.join(override_dir, toolname + '.overrides')
+ override = True
+ f = None
+ try:
+ f = open(overrides_file, 'r')
+ except FileNotFoundError:
+ logg.debug('no overrides found for {}'.format(toolname))
+ override = False
+
+ if override:
+ while True:
+ s = f.readline()
+ if len(s) == 0:
+ break
+ v = s.split('\t', maxsplit=2)
+ fargs = None
+ try:
+ fargs = v[2].rstrip().split(',')
+ except IndexError:
+ fargs = []
+ g.override_arg(v[0], v[1], fargs)
+ f.close()
+ return g
+
+g = apply_override(g, args.source_dir)
ge = EnvDocGenerator(flags, override=args.overrides_env_dir)
ge.process()
-f = open(args.header_file)
-head = f.read()
-f.close()
+def get_head(tool_name, source_dir):
+ header_file = os.path.join(source_dir, tool_name + '.head.groff')
+ f = open(header_file, 'r')
+ head = f.read()
+ f.close()
+ return head
+
+head = get_head(toolname, args.source_dir)
if args.overrides_config_file != None:
f = open(args.overrides_config_file, 'r')