#!/bin/env python3

import argparse

try:
    import yaml
except ImportError:
    raise SystemExit("""\
The program depends on the "PyYAML" module,
please execute the following command to install:
>>> pip install PyYAML
""")

DEFAULT_GROUP = "DEFAULT_GROUP"

def fix_config(config_file, server_addr, namespace, group):
    data = None
    with open(config_file, 'r') as f:
        data = yaml.safe_load(f)
        data["spring"]["cloud"]["nacos"]["discovery"]["server-addr"] = server_addr
        data["spring"]["cloud"]["nacos"]["discovery"]["namespace"] = namespace
        # if data["spring"]["cloud"]["nacos"]["discovery"].get("group"):
        #     data["spring"]["cloud"]["nacos"]["discovery"]["group"] = group
        data["spring"]["cloud"]["nacos"]["discovery"]["group"] = group

        data["spring"]["cloud"]["nacos"]["config"]["server-addr"] = server_addr
        data["spring"]["cloud"]["nacos"]["config"]["namespace"] = namespace
        # if data["spring"]["cloud"]["nacos"]["config"].get("group"):
        #     data["spring"]["cloud"]["nacos"]["config"]["group"] = group
        data["spring"]["cloud"]["nacos"]["config"]["group"] = group
    yaml.safe_dump(data, open(config_file, 'w'), default_flow_style=False, encoding='utf-8', allow_unicode=True)


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("config_file", help="path to the program configuration file")
    parser.add_argument("-s", help="nacos server url")
    parser.add_argument("-n", help="nacos namespace id")
    parser.add_argument("-g", default=DEFAULT_GROUP, help="nacos namespace groupname")
    args = parser.parse_args()
    fix_config(
        config_file=args.config_file, 
        server_addr=args.s,
        namespace=args.n,
        group=args.g
    )


if __name__ == '__main__':
    main()
