0

genPOI: replace optparse with argparse

Maybe one day we'll use actual subparsers but today is not that day.
This commit is contained in:
Nicolas F
2019-03-22 17:10:52 +01:00
parent 4c78a05e91
commit dc7d1cd208

View File

@@ -29,7 +29,7 @@ import urllib.error
from collections import defaultdict from collections import defaultdict
from contextlib import closing from contextlib import closing
from multiprocessing import Pool from multiprocessing import Pool
from optparse import OptionParser from argparse import ArgumentParser
from overviewer_core import configParser, logger, nbt, world from overviewer_core import configParser, logger, nbt, world
from overviewer_core.files import FileReplacer, get_fs_caps from overviewer_core.files import FileReplacer, get_fs_caps
@@ -438,37 +438,33 @@ def create_marker_from_filter_result(poi, result):
def main(): def main():
if os.path.basename(sys.argv[0]) == "genPOI.py":
if os.path.basename(sys.argv[0]) == """genPOI.py""": prog_name = "genPOI.py"
helptext = """genPOI.py
%prog --config=<config file> [options]"""
else: else:
helptext = """genPOI prog_name = sys.argv[0] + " --genpoi"
%prog --genpoi --config=<config file> [options]"""
logger.configure() logger.configure()
parser = OptionParser(usage=helptext) parser = ArgumentParser(prog=prog_name)
parser.add_option("-c", "--config", dest="config", action="store", parser.add_argument("-c", "--config", dest="config", action="store", required=True,
help="Specify the config file to use.") help="Specify the config file to use.")
parser.add_option("-q", "--quiet", dest="quiet", action="count", parser.add_argument("-q", "--quiet", dest="quiet", action="count",
help="Reduce logging output") help="Reduce logging output")
parser.add_option("--skip-scan", dest="skipscan", action="store_true", parser.add_argument("--skip-scan", dest="skipscan", action="store_true",
help="Skip scanning for entities when using GenPOI") help="Skip scanning for entities when using GenPOI")
parser.add_option("--skip-players", dest="skipplayers", action="store_true", parser.add_argument("--skip-players", dest="skipplayers", action="store_true",
help="Skip getting player data when using GenPOI") help="Skip getting player data when using GenPOI")
options, args = parser.parse_args() args = parser.parse_args()
if not options.config:
parser.print_help()
return
if options.quiet and options.quiet > 0: if args.quiet and args.quiet > 0:
logger.configure(logging.WARN, False) logger.configure(logging.WARN, False)
# Parse the config file # Parse the config file
mw_parser = configParser.MultiWorldParser() mw_parser = configParser.MultiWorldParser()
mw_parser.parse(options.config) try:
mw_parser.parse(args.config)
except configParser.MissingConfigException:
parser.error("The configuration file '{}' does not exist.".format(args.config))
try: try:
config = mw_parser.get_validated_config() config = mw_parser.get_validated_config()
except Exception: except Exception:
@@ -532,16 +528,16 @@ def main():
for name, filter_name, __, __, __, __ in filters) for name, filter_name, __, __, __, __ in filters)
# apply filters to regionsets # apply filters to regionsets
if not options.skipscan: if not args.skipscan:
# group filters by rset # group filters by rset
def keyfunc(x): def keyfunc(x):
return x[3] return x[3]
sfilters = sorted(filters, key=keyfunc) sfilters = sorted(filters, key=keyfunc)
for rset, rset_filters in itertools.groupby(sfilters, keyfunc): for rset, rset_filters in itertools.groupby(sfilters, keyfunc):
handleEntities(rset, config, options.config, list(rset_filters), markers) handleEntities(rset, config, args.config, list(rset_filters), markers)
# apply filters to players # apply filters to players
if not options.skipplayers: if not args.skipplayers:
PlayerDict.load_cache(destdir) PlayerDict.load_cache(destdir)
# group filters by worldpath, so we only search for players once per # group filters by worldpath, so we only search for players once per
@@ -565,7 +561,7 @@ def main():
logging.info("Done handling POIs") logging.info("Done handling POIs")
logging.info("Writing out javascript files") logging.info("Writing out javascript files")
if not options.skipplayers: if not args.skipplayers:
PlayerDict.save_cache(destdir) PlayerDict.save_cache(destdir)
with open(os.path.join(destdir, "markersDB.js"), "w") as output: with open(os.path.join(destdir, "markersDB.js"), "w") as output: