diff --git a/.gitignore b/.gitignore index 4dafb764..42fd05c1 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,4 @@ get-pip.py venv test +data/base2current.json diff --git a/CLI.py b/CLI.py index 35204b65..71180e61 100644 --- a/CLI.py +++ b/CLI.py @@ -28,10 +28,15 @@ def parse_cli(argv, no_defaults=False): fish = BabelFish(lang=lang) # we need to know how many players we have first + # also if we're loading our own settings file, we should do that now parser = argparse.ArgumentParser(add_help=False) + parser.add_argument('--settingsfile', help="input json file of settings", type=str) parser.add_argument('--multi', default=defval(settings["multi"]), type=lambda value: min(max(int(value), 1), 255)) multiargs, _ = parser.parse_known_args(argv) + if multiargs.settingsfile: + settings = apply_settings_file(settings, multiargs.settingsfile) + parser = argparse.ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter) # get args @@ -72,6 +77,7 @@ def parse_cli(argv, no_defaults=False): parser.add_argument('--beemizer', default=defval(settings["beemizer"]), type=lambda value: min(max(int(value), 0), 4)) parser.add_argument('--multi', default=defval(settings["multi"]), type=lambda value: min(max(int(value), 1), 255)) parser.add_argument('--teams', default=defval(1), type=lambda value: max(int(value), 1)) + parser.add_argument('--settingsfile', dest="filename", help="input json file of settings", type=str) if multiargs.multi: for player in range(1, multiargs.multi + 1): @@ -103,6 +109,15 @@ def parse_cli(argv, no_defaults=False): return ret +def apply_settings_file(settings, settings_path): + if os.path.exists(settings_path): + with open(settings_path) as json_file: + data = json.load(json_file) + for k, v in data.items(): + settings[k] = v + return settings + + def parse_settings(): # set default settings settings = { @@ -262,11 +277,7 @@ def parse_settings(): # read saved settings file if it exists and set these settings_path = os.path.join(".", "resources", "user", "settings.json") - if os.path.exists(settings_path): - with(open(settings_path)) as json_file: - data = json.load(json_file) - for k, v in data.items(): - settings[k] = v + settings = apply_settings_file(settings, settings_path) return settings # Priority fallback is: