[Git][NTPsec/ntpsec][master] ntviz: @OPTIONFILE improvements.

Gary E. Miller gitlab at mg.gitlab.com
Sat Oct 15 21:34:50 UTC 2016

Gary E. Miller pushed to branch master at NTPsec / ntpsec

347eac0f by Gary E. Miller at 2016-10-15T14:30:56-07:00
ntviz: @OPTIONFILE improvements.

The OPTIONFILE format is now more flexible.  Comments are
allowed, starting with an octothorpe (#).  Blank lines are
ignored, Multiple options per line allowed.  And last but not
least, option and parameter can now be separated by a space.

- - - - -

2 changed files:

- docs/includes/ntpviz-body.txt
- ntpstats/ntpviz


--- a/docs/includes/ntpviz-body.txt
+++ b/docs/includes/ntpviz-body.txt
@@ -5,8 +5,9 @@
-{ntpviz} [-d statsdir] [-g] [-n name] [-p period]
+{ntpviz} [-d LOGDIR] [-g] [-n name] [-p DAYS]
          [-s starttime] [-e endtime]
+         [-o OUTDIR]
          [ -c | --clip ]
          [--local-offset |
           --local-error |
@@ -21,9 +22,8 @@
           --peer-jitters=hosts |
           --peer-offsets=hosts |
-         [-o outdir]
          [-D N]
-         [@optionfile]
+         [@OPTIONFILE]
@@ -36,10 +36,16 @@ subset of comparative plots for multiple directories.
 === Basic Options ===
--d DIRECTORY or --datadir DIRECTORY::
+-d LOGDIR or --datadir LOGDIR::
     Specifies one or more logfile directories to examine; the default is
     the single directory /var/log/ntpstats.
+-o OUTDIR or --outdir OUTDIR::
+    Set the directory for all output to be OUTDIR.  If OUTDIR does
+    not exist it is created.  The default OUTDIR is 'ntpgraphs'.
+    Warning: existing PNG files and index.html in the output directory
+    will be clobbered.
 -n STR or --name STR::
     Set the sitename shown in the plot title, and is effective only for the
     single-directory case. The default is the basename of the log directory.
@@ -128,10 +134,7 @@ The following plots are available:
    is a fatal error for any of these names not to appear in peerstats.
 If no individual plot is specified, all plots and an index HTML page
-are generated into a new output directory.  Normally this directory is
-named 'ntpgraphs', but the name can be changed with the -o option.
-Warning: existing PNG files and index.html in this directory will be
+are generated into a the output directory.
 When an index is generated, ntpviz will look for two files in the
 output directory.  None of the files need be present, and the
@@ -154,21 +157,26 @@ standard error on, for example, missing logfile data required for a plot.
 === Argument File ===
-All command line options can also be placed into a command file.  The
-command file name is prefixed on the command line with an ampersand (@).
+Any command line options can also be placed into a command file.  The
+command file name (OPTIONFILE) is prefixed on the command line with an
+ampersand (@).
+Each line in the command file should contain just one option.  Multiple
+options per line are allowed, but discouraged.  Blank lines are allowed.
+Comments can be added, and start with an octothorpe (#).
-Each line in the command file must contain just one option.  When an
-option takes a parameter, the option and parameter must be separated by
-an equal sign (=).
+When an option takes a parameter, the option and parameter must be
+separated by an equal sign (=) or a space.
 These two ways to invoke ntpviz are equivalent:
     $ ntpviz --period 1 --outdir day
-    $ ntpviz @day/config
     $ cat day/config
+    $ ntpviz @day/config

--- a/ntpstats/ntpviz
+++ b/ntpstats/ntpviz
@@ -24,9 +24,28 @@ Python by ESR, concept and GNUPLOT code by Dan Drown.
 from __future__ import print_function, division
 import argparse
+import re
 import atexit, binascii, collections, os, socket, sys, time
 from ntp.statfiles import *
+# overload ArgumentParser
+class MyArgumentParser(argparse.ArgumentParser):
+    def convert_arg_line_to_args(self, arg_line):
+        '''Make options file more tolerant'''
+        # strip out trailing comments
+        arg_line = re.sub('\s+#.*$', '', arg_line)
+        # ignore blank lines
+        if 0 == len(arg_line):
+            return []
+        # ignore comment lines
+        if '#' == arg_line[0]:
+            return []
+        return arg_line.split()
 def print_profile():
     """called by atexit() on normal exit to print profile data"""
@@ -936,7 +955,7 @@ AADRxQAAxBEAAA==
 if __name__ == '__main__':
-    parser = argparse.ArgumentParser(description="ntpd stats visualizer",
+    parser = MyArgumentParser(description="ntpd stats visualizer",
                 epilog = """
 You can place command line options in a file, one per line.

View it on GitLab: https://gitlab.com/NTPsec/ntpsec/commit/347eac0f36b498cf65073d5e4f9f1aae06eff97b
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ntpsec.org/pipermail/vc/attachments/20161015/670a4057/attachment.html>

More information about the vc mailing list