"""INI configuration query and modification tool."""
import os
import stat
import json
import argparse
import traceback
import sys
CUR_PATH = os.path.dirname(os.path.realpath(__file__))
sys.path.insert(0, CUR_PATH)
from config import cfg as _cfg
_paths = _cfg.paths
def opt_ini_conf(file_path, action, key, value):
with open(file_path, "r", encoding="utf-8") as fp:
config = fp.readlines()
for i, item in enumerate(config):
if "=" not in item:
continue
_key, _value = item.split('=', maxsplit=1)
if key == _key.strip(" "):
if action == "modify":
config[i] = f"{key} = {value}\n"
break
if action == "query":
print(item, end="")
return
else:
print("key is incorrect.")
return
flags = os.O_CREAT | os.O_RDWR | os.O_TRUNC
modes = stat.S_IWUSR | stat.S_IRUSR
with os.fdopen(os.open(file_path, flags, modes), "w") as file_obj:
file_obj.writelines(config)
print("modify config success.")
def ograc_opt_ini_conf(action, key, value):
file_path = _paths.ogracd_ini
opt_ini_conf(file_path, action, key, value)
def cms_opt_ini_conf(action, key, value):
file_path = _paths.cms_ini
opt_ini_conf(file_path, action, key, value)
def main():
update_parse = argparse.ArgumentParser()
update_parse.add_argument("-c", "--component", dest="component",
choices=["cms", "ograc"], required=True)
update_parse.add_argument("-a", "--action", dest="action", choices=["query", "modify"],
required=True)
update_parse.add_argument("-k", "--key", dest="key", required=True)
update_parse.add_argument("-v", "--value", dest="value", required=False)
args = update_parse.parse_args()
func_dict = {"ograc": ograc_opt_ini_conf, "cms": cms_opt_ini_conf}
func_dict.get(args.component)(args.action, args.key, args.value)
if __name__ == "__main__":
try:
main()
except Exception as err:
exit(str(traceback.format_exc(limit=1)))