示例#1
0
def main():
    print ('Cmd: %s' % ' '.join(sys.argv))
    # TODO: Option to treat files with -f, --format as LAS, LIS, AUTO
    # TODO: Depth scale overrides -s, --scale ?
    optParser = CmnCmdOpts.argParserInOut(
        'Generates SVG plot(s) from input LIS & LAS file/directory to an output file/directory.',
        prog=None,
        version=__version__,
    )
    optParser.add_argument("-A", "--API", action="store_true", dest="apiHeader", default=False, 
                      help="Put an API header on each plot. [default: False]")
    optParser.add_argument("-x", "--xml", action="append", dest="LgFormat", default=[],
                      help="Use XML LgFormat UniqueId to use for plotting (additive)." \
                      +" Use -x? to see what LgFormats (UniqueID+Description) are available." \
                      +" Use -x?? to see what curves each format can plot. See also -X. [default: []]")
    optParser.add_argument(
            "-X", "--XML", type=int, dest="LgFormat_min", default=0,
            help="Use any LgFormat XML plots that use n or more outputs. If -x option present limited by those LgFormats [default: 0]" 
        )
#    optParser.add_argument("-f", "--file-type", choices=['LAS', 'LIS', 'AUTO'],
#            help="File format to assume for the input, AUTO will do it's best. [default: \"AUTO\"].")
    optParser.add_argument("-s", "--scale", action="append", type=int, dest="scale", default=0,
            help="Scale of X axis to use (an integer). [default: 0].")
    myOptNs = optParser.parse_args()
    clkStart = time.clock()
    timStart = time.time()
    # Initialise logging etc.
    logging.basicConfig(level=myOptNs.logLevel,
                    format='%(asctime)s %(levelname)-8s %(message)s',
                    #datefmt='%y-%m-%d % %H:%M:%S',
                    stream=sys.stdout)
    # Your code here
    if '?' in ''.join(myOptNs.LgFormat):
        # Handle -x? here and exit
        myFg = FILMCfgXML.FilmCfgXMLRead()
        print('XML LgFormats available: [{:d}]'.format(len(myFg.keys())))
        print(myFg.longStr(''.join(myOptNs.LgFormat).count('?')))
        return 1
    if myOptNs.jobs == CmnCmdOpts.DEFAULT_OPT_MP_JOBS:
        myPlp = PlotLogPasses(
            myOptNs.pathIn,
            myOptNs.pathOut,
            myOptNs,
        )
        myResult = myPlp.plotLogInfo
    else:
        myResult = plotLogPassesMP(
            myOptNs.pathIn,
            myOptNs.pathOut,
            myOptNs,
        )
    if os.path.isdir(myOptNs.pathOut):
        myResult.writeHTML(os.path.join(myOptNs.pathOut, 'index.html'), myOptNs.pathIn)
    print('plotLogInfo', str(myResult))
    print('  CPU time = %8.3f (S)' % (time.clock() - clkStart))
    print('Exec. time = %8.3f (S)' % (time.time() - timStart))
    print('Bye, bye!')
    return 0
示例#2
0
 def test_23(self):
     """TestCmnCmdOpts.test_23(): basic use of CmnCmdOpts.argParserInOut() with -h option."""
     myP = CmnCmdOpts.argParserInOut("Description", "Program", "Version")
     myNs = myP.parse_args(['IN', 'OUT'])
     self.assertEqual('IN', myNs.pathIn)
     self.assertEqual('OUT', myNs.pathOut)
     try:
         print()
         myNs = myP.parse_args(['-h',])
         self.fail('SystemExit not raised: %s' % myNs)
     except SystemExit:
         pass
示例#3
0
    def test_24(self):
        """TestCmnCmdOpts.test_24(): basic use of CmnCmdOpts.argParserInOut() format_usage() and format_help()."""
        myP = CmnCmdOpts.argParserInOut("Description", "Program", "Version")
        myNs = myP.parse_args(['IN', 'OUT'])
        self.assertEqual('IN', myNs.pathIn)
        self.assertEqual('OUT', myNs.pathOut)
        #        print()
        #        print(dir(myP))
        #        print(dir(myNs))
        #        print(myNs._get_args())
        #        print(myNs._get_kwargs())
        #        print(myP.format_usage())
        #        print(myP.format_help())
        self.assertEqual(
            """usage: Program [-h] [--version] [-j JOBS] [-k] [-l LOGLEVEL] [-g] [-r] in out
""", myP.format_usage())
        self.assertEqual(
            """usage: Program [-h] [--version] [-j JOBS] [-k] [-l LOGLEVEL] [-g] [-r] in out

Description

positional arguments:
  in                    Input path.
  out                   Output path.

optional arguments:
  -h, --help            show this help message and exit
  --version             show program's version number and exit
  -j JOBS, --jobs JOBS  Max processes when multiprocessing. Zero uses number
                        of native CPUs [8]. -1 disables multiprocessing.
                        Default: -1.
  -k, --keep-going      Keep going as far as sensible. Default: False.
  -l LOGLEVEL, --loglevel LOGLEVEL
                        Log Level (debug=10, info=20, warning=30, error=40,
                        critical=50). Default: 40.
  -g, --glob            File match pattern. Default: None.
  -r, --recursive       Process input recursively. Default: False.

Copyright (c) 2010-2012 Paul Ross. All rights reserved.
""", myP.format_help())
示例#4
0
 def test_22(self):
     """TestCmnCmdOpts.test_22(): basic use of CmnCmdOpts.argParserInOut()."""
     myP = CmnCmdOpts.argParserInOut("Description", "Program", "Version")
     myNs = myP.parse_args(['IN', 'OUT'])
     self.assertEqual('IN', myNs.pathIn)
     self.assertEqual('OUT', myNs.pathOut)