diff options
author | justanothercatgirl <sotov2070@gmail.com> | 2024-03-10 20:38:25 +0300 |
---|---|---|
committer | justanothercatgirl <sotov2070@gmail.com> | 2024-03-10 20:57:57 +0300 |
commit | dad11ba32a578ddc6f156201a2bc03af6d20ee5f (patch) | |
tree | e5d8c838e71bffe8994e988a71a004c10f40dc0a /.root/etc/sing-box/libconfig_to_json.py | |
parent | b99a645e1a877fc31ab84d0b7f848dcaa049a51c (diff) |
added systemwide files to .root directory
For more information, check .root/README.md
Diffstat (limited to '.root/etc/sing-box/libconfig_to_json.py')
-rwxr-xr-x | .root/etc/sing-box/libconfig_to_json.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/.root/etc/sing-box/libconfig_to_json.py b/.root/etc/sing-box/libconfig_to_json.py new file mode 100755 index 0000000..7300a7e --- /dev/null +++ b/.root/etc/sing-box/libconfig_to_json.py @@ -0,0 +1,63 @@ +#!/bin/env /pyenv/bin/python3 + +import argparse +import json +from libconf import load + +ENDC = "\033[0m" +BOLD = "\033[1m" +UNDERLINE = "\033[4m" +BLACK = "\033[30m" +RED = "\033[31m" +GREEN = "\033[32m" +YELLOW = "\033[33m" +BLUE = "\033[34m" +MAGENTA = "\033[35m" +CYAN = "\033[36m" +WHITE = "\033[37m" +BG_BLACK = "\033[40m" +BG_RED = "\033[41m" +BG_GREEN = "\033[42m" +BG_YELLOW = "\033[43m" +BG_BLUE = "\033[44m" +BG_MAGENTA = "\033[45m" +BG_CYAN = "\033[46m" +BG_WHITE = "\033[47m" + +def convert_libconf_to_json(input_file, output_file): + try: + with open(input_file, 'r') as f: + config = load(f) + except Exception as e: + print(e) + print(f"{RED}Error: Could not read input file '{input_file}'.{ENDC}") + exit(1) + + json_data = _convert_data(config) + + try: + with open(output_file, 'w') as f: + json.dump(json_data, f, indent=4) + except Exception as e: + print(e) + print(f"{RED}Error: Could not write to output file '{output_file}'.{ENDC}") + exit(1) + + print(f"{GREEN}Successfully converted '{input_file}' to '{output_file}'.{ENDC}") + + +def _convert_data(data): + if isinstance(data, dict): + return {key: _convert_data(value) for key, value in data.items()} + elif isinstance(data, list): + return [_convert_data(item) for item in data] + else: + return data + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Convert libconfig file to JSON") + parser.add_argument("i", help="Path to the libconfig file") + parser.add_argument("o", help="Path to the output JSON file") + args = parser.parse_args() + convert_libconf_to_json(args.i, args.o) |