scripts/configure-environment.py (43 lines of code) (raw):
#!/usr/bin/python3
"""
Updates the config.json in-place in dom0 to set the environment to 'dev' or
'staging'.
"""
import argparse
import json
import os
import sys
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument(
"--config",
default="config.json",
required=False,
action="store",
help="Path to JSON configuration file",
)
parser.add_argument(
"--environment",
default="dev",
required=False,
action="store",
help="Target deploy strategy, i.e. 'dev', or 'staging'",
)
args = parser.parse_args()
if not os.path.exists(args.config):
msg = f"Config file not found: {args.config}\n"
sys.stderr.write(msg)
parser.print_help(sys.stderr)
sys.exit(1)
if args.environment not in ("dev", "staging"):
parser.print_help(sys.stderr)
sys.exit(2)
return args
def set_env_in_config(args):
with open(args.config) as f:
old_config = json.load(f)
new_config = dict(old_config)
new_config["environment"] = args.environment
if new_config != old_config:
msg = f"Updated config environment to '{args.environment}'...\n"
sys.stderr.write(msg)
with open(args.config, "w") as f:
json.dump(new_config, f)
if __name__ == "__main__":
args = parse_args()
set_env_in_config(args)