Ported optparse to argparse as it is deprecated

master
Ferry Boender 4 years ago
parent 60f7a56d5a
commit 1757c65284
  1. 116
      src/scriptform.py

@ -6,7 +6,7 @@ Main ScriptForm program
"""
import sys
import optparse
import argparse
import os
import json
import logging
@ -150,34 +150,52 @@ def main(): # pragma: no cover
"""
main method
"""
usage = [
sys.argv[0] + " [option] (--start|--stop) <form_definition.json>",
" " + sys.argv[0] + " --generate-pw",
]
parser = optparse.OptionParser(version="%%VERSION%%")
parser.set_usage('\n'.join(usage))
parser.add_option("-g", "--generate-pw", dest="generate_pw",
action="store_true", default=False,
help="Generate password")
parser.add_option("-p", "--port", dest="port", action="store", type="int",
default=8081, help="Port to listen on (default=8081)")
parser.add_option("-f", "--foreground", dest="foreground",
action="store_true", default=False,
help="Run in foreground (debugging)")
parser.add_option("-r", "--reload", dest="reload", action="store_true",
default=False,
help="Reload form config on every request (DEV)")
parser.add_option("--pid-file", dest="pid_file", action="store",
default=None, help="Pid file")
parser.add_option("--log-file", dest="log_file", action="store",
default=None, help="Log file")
parser.add_option("--start", dest="action_start", action="store_true",
default=None, help="Start daemon")
parser.add_option("--stop", dest="action_stop", action="store_true",
default=None, help="Stop daemon")
(options, args) = parser.parse_args()
parser = argparse.ArgumentParser(description='My Application.')
parser.add_argument('--version',
action='version',
version='%(prog)s %%VERSION%%')
parser.add_argument('-g', '--generate-pw',
action='store_true',
default=False,
help='Generate password')
parser.add_argument('-p', '--port',
metavar='PORT',
dest='port',
type=int,
default=8081,
help='Port to listen on (default=8081)')
parser.add_argument('-f', '--foreground',
dest='foreground',
action='store_true',
default=False,
help='Run in foreground (debugging)')
parser.add_argument('-r', '--reload',
dest='reload',
action='store_true',
default=False,
help='Reload form config on every request (DEV)')
parser.add_argument('--pid-file',
metavar='PATH',
dest='pid_file',
type=str,
default=None,
help='Pid file')
parser.add_argument('--log-file',
metavar='PATH',
dest='log_file',
type=str,
default=None,
help='Log file')
parser.add_argument('--stop',
dest='action_stop',
action='store_true',
default=None,
help='Stop daemon')
parser.add_argument(dest='config',
metavar="CONFIG_FILE",
help="Path to form definition config",
)
options = parser.parse_args()
if options.generate_pw:
# Generate a password for use in the `users` section
@ -190,35 +208,23 @@ def main(): # pragma: no cover
sys.stdout.write("{}\n".format(sha))
sys.exit(0)
else:
if not options.action_stop and not args:
parser.error("Insufficient number of arguments")
if not options.action_stop and not options.action_start:
options.action_start = True
# If a form configuration was specified, change to that dir so we can
# find the job scripts and such.
if args:
path = os.path.dirname(args[0])
if path:
os.chdir(path)
args[0] = os.path.basename(args[0])
# Switch to dir of form definition configuration
formconfig_path = os.path.realpath(options.config)
os.chdir(os.path.dirname(formconfig_path))
# Initialize daemon so we can start or stop it
daemon = Daemon(options.pid_file, options.log_file,
foreground=options.foreground)
log = logging.getLogger('MAIN')
try:
if options.action_start:
cache = not options.reload
scriptform_instance = ScriptForm(args[0], cache=cache)
daemon.register_shutdown_callback(scriptform_instance.shutdown)
daemon.start()
scriptform_instance.run(listen_port=options.port)
elif options.action_stop:
daemon.stop()
sys.exit(0)
except Exception as err:
log.exception(err)
raise
if options.action_stop:
daemon.stop()
sys.exit(0)
else:
cache = not options.reload
scriptform_instance = ScriptForm(formconfig_path, cache=cache)
daemon.register_shutdown_callback(scriptform_instance.shutdown)
daemon.start()
scriptform_instance.run(listen_port=options.port)
if __name__ == "__main__": # pragma: no cover

Loading…
Cancel
Save