Mercurial > hg > fail
view fail.py @ 1:a4680e54c481
fix formatting
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Tue, 23 Aug 2016 13:57:20 -0700 |
parents | 02d077c5627a |
children | d1880117acb5 |
line wrap: on
line source
#!/usr/bin/env python """ run a program until it fails """ # imports import argparse import subprocess import sys import time def main(args=sys.argv[1:]): """CLI""" # parse command line parser = argparse.ArgumentParser(description=__doc__) parser.add_argument('command', help="command to run") parser.add_argument('--code', dest='codes', default=(0,), nargs='+', help="allowed exit codes") parser.add_argument('-s', '--sleep', dest='sleep', type=float, default=1., help="sleep between iterations [DEFAULT: %(default)s]") options = parser.parse_args(args) try: ctr = 0 while True: print ("Iteration {}".format(ctr)) ctr += 1 # run it process = subprocess.Popen(options.command, shell=True) _, _ = process.communicate() # test it if process.returncode not in options.codes: sys.exit(process.returncode) # loop control time.sleep(options.sleep) except KeyboardInterrupt: sys.exit(0) if __name__ == '__main__': main()