bin/pvl.irk
changeset 224 ed410776effd
parent 223 6842794c20e8
child 225 3c2d0dd42045
equal deleted inserted replaced
223:6842794c20e8 224:ed410776effd
     1 #!/usr/bin/env python
       
     2 
       
     3 """
       
     4     Test Irk
       
     5 """
       
     6 
       
     7 __version__ = '0.1'
       
     8 
       
     9 import pvl.args
       
    10 import pvl.irk
       
    11 
       
    12 import sys, pvl.syslog.tail # XXX: for sys.stdin
       
    13 
       
    14 import logging, optparse
       
    15 
       
    16 log = logging.getLogger('main')
       
    17 
       
    18 def parse_options (argv) :
       
    19     """
       
    20         Parse command-line arguments.
       
    21     """
       
    22 
       
    23     prog = argv[0]
       
    24 
       
    25     parser = optparse.OptionParser(
       
    26             prog        = prog,
       
    27             usage       = '%prog: [options]',
       
    28             version     = __version__,
       
    29 
       
    30             # module docstring
       
    31             description = __doc__,
       
    32     )
       
    33     
       
    34     # options
       
    35     parser.add_option_group(pvl.args.parser(parser))
       
    36     parser.add_option_group(pvl.irk.parser(parser))
       
    37     
       
    38     parser.add_option('--join',     action='store_true',    help="Join given targets")
       
    39     parser.add_option('--part',     action='store_true',    help="Part given targets")
       
    40 
       
    41     # parse
       
    42     options, args = parser.parse_args(argv[1:])
       
    43     
       
    44     # apply
       
    45     pvl.args.apply(options, prog)
       
    46 
       
    47     return options, args
       
    48 
       
    49 def main (argv) :
       
    50     options, args = parse_options(argv)
       
    51 
       
    52     log.info("Connect IRK..")
       
    53     irker = pvl.irk.apply(options)
       
    54 
       
    55     log.info("Load targets...")
       
    56     targets = [irker.target(target, join=options.join) for target in args]
       
    57 
       
    58     log.info("Send messages...")
       
    59     for line in pvl.syslog.file.File(sys.stdin) :
       
    60         log.info("%s", line)
       
    61 
       
    62         for target in targets :
       
    63             target(line)
       
    64 
       
    65     if options.part :
       
    66         for target in targets :
       
    67             target.part()
       
    68 
       
    69     # done
       
    70     log.info("Exiting...")
       
    71     return 0
       
    72 
       
    73 if __name__ == '__main__':
       
    74     import sys
       
    75 
       
    76     sys.exit(main(sys.argv))