Beispiel #1
0
def config_edit(args, l, rc):
    from ambry.dbexceptions import ConfigurationError
    from ambry.util import AttrDict

    edit_args = ' '.join(args.args)

    if args.yaml or args.json:
        if args.yaml:
            import yaml
            v = yaml.load(edit_args)
        elif args.json:
            import json
            v = json.loads(edit_args)

        d = AttrDict()
        d.update(v)

        print d

        rc.config.update_flat(d.flatten())

    else:
        key, value = edit_args.split('=')

        value = value.strip()
        key = key.strip()
        key_parts = key.split('.')
        e = rc.config
        for k in key_parts:
            k = k.strip()
            #print(k, str(key_parts[-1]))
            if str(k) == str(key_parts[-1]):
                e[k] = value
            else:
                e = e[k]


    configs = rc.config['loaded']['configs']

    if len(configs) != 1:
        raise ConfigurationError("Configuration was loaded from multiple files; don't know which to edit; "
                                 "'{}'".format(configs))

    try:
        del rc.config['accounts']
    except KeyError:
        pass

    try:
        del rc.config['loaded']
    except KeyError:
        pass

    with open(configs[0], 'w') as f:
        rc.config.dump(f)