Refactor stuff
This commit is contained in:
parent
dd302c83a3
commit
9d11d2ca71
55
main.py
55
main.py
@ -11,10 +11,10 @@ class IniFile:
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._data = {}
|
self._data = {}
|
||||||
|
|
||||||
def __getitem__(self, key):
|
def __getitem__(self, key: str):
|
||||||
return self._data[key]
|
return self._data[key]
|
||||||
|
|
||||||
def __setitem__(self, key, value):
|
def __setitem__(self, key: str, value):
|
||||||
self._data[key] = value
|
self._data[key] = value
|
||||||
|
|
||||||
def write(self, f):
|
def write(self, f):
|
||||||
@ -30,16 +30,20 @@ class IniFile:
|
|||||||
f.write(f"{key}={value}\n")
|
f.write(f"{key}={value}\n")
|
||||||
f.write("\n")
|
f.write("\n")
|
||||||
|
|
||||||
def abort(msg):
|
def abort(msg: str):
|
||||||
print(msg, file=sys.stderr)
|
print(msg, file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
def enforce_list(key, dict_):
|
def enforce_list(key: str, dict_: dict):
|
||||||
if not isinstance(dict_[key], list):
|
if not isinstance(dict_[key], list):
|
||||||
abort(f"{key} is not a list. Offending dict: {dict_}")
|
abort(f"{key} is not a list. Offending dict: {dict_}")
|
||||||
|
|
||||||
|
|
||||||
def write_build_unit(args, yaml_dict, service_name):
|
def write_file(ini_file: IniFile, path: Path):
|
||||||
|
with open(path, "w", encoding="utf-8") as f:
|
||||||
|
ini_file.write(f)
|
||||||
|
|
||||||
|
def write_build_unit(args, yaml_dict: dict, service_name: str):
|
||||||
out_file = args.output_dir / f"{service_name}.build"
|
out_file = args.output_dir / f"{service_name}.build"
|
||||||
print(f'Generating build "{service_name}" ({out_file})')
|
print(f'Generating build "{service_name}" ({out_file})')
|
||||||
build = yaml_dict["services"][service_name]["build"]
|
build = yaml_dict["services"][service_name]["build"]
|
||||||
@ -58,23 +62,10 @@ def write_build_unit(args, yaml_dict, service_name):
|
|||||||
if "dockerfile" in build:
|
if "dockerfile" in build:
|
||||||
unit_file["Build"]["File"] = build["dockerfile"]
|
unit_file["Build"]["File"] = build["dockerfile"]
|
||||||
|
|
||||||
with open(out_file, "w", encoding="utf-8") as f:
|
write_file(unit_file, out_file)
|
||||||
unit_file.write(f)
|
|
||||||
|
|
||||||
|
|
||||||
def parse_args():
|
def write_network_units(args, yaml_dict):
|
||||||
parser = argparse.ArgumentParser()
|
|
||||||
parser.add_argument("compose_file")
|
|
||||||
parser.add_argument("-o", "--output-dir", default="/etc/containers/systemd", type=Path)
|
|
||||||
parser.add_argument("-u", "--user")
|
|
||||||
return parser.parse_args()
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
args = parse_args()
|
|
||||||
with open(args.compose_file, encoding="utf-8") as f:
|
|
||||||
yaml_dict = yaml.safe_load(f)
|
|
||||||
|
|
||||||
for network_name in yaml_dict.get("networks", []):
|
for network_name in yaml_dict.get("networks", []):
|
||||||
out_file = args.output_dir / f"{network_name}.network"
|
out_file = args.output_dir / f"{network_name}.network"
|
||||||
print(f'Generating network "{network_name}" ({out_file})')
|
print(f'Generating network "{network_name}" ({out_file})')
|
||||||
@ -98,9 +89,10 @@ def main():
|
|||||||
unit_file["Install"] = {}
|
unit_file["Install"] = {}
|
||||||
unit_file["Install"]["WantedBy"] = "default.target"
|
unit_file["Install"]["WantedBy"] = "default.target"
|
||||||
|
|
||||||
with open(out_file, "w", encoding="utf-8") as f:
|
write_file(unit_file, out_file)
|
||||||
unit_file.write(f)
|
|
||||||
|
|
||||||
|
|
||||||
|
def write_service_units(args, yaml_dict):
|
||||||
for service_name in yaml_dict["services"]:
|
for service_name in yaml_dict["services"]:
|
||||||
out_file = args.output_dir / f"{service_name}.container"
|
out_file = args.output_dir / f"{service_name}.container"
|
||||||
print(f'Generating container "{service_name}" ({out_file})')
|
print(f'Generating container "{service_name}" ({out_file})')
|
||||||
@ -170,8 +162,23 @@ def main():
|
|||||||
unit_file["Install"] = {}
|
unit_file["Install"] = {}
|
||||||
unit_file["Install"]["WantedBy"] = "default.target"
|
unit_file["Install"]["WantedBy"] = "default.target"
|
||||||
|
|
||||||
with open(out_file, "w", encoding="utf-8") as f:
|
write_file(unit_file, out_file)
|
||||||
unit_file.write(f)
|
|
||||||
|
|
||||||
|
def parse_args():
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument("compose_file")
|
||||||
|
parser.add_argument("-o", "--output-dir", default="/etc/containers/systemd", type=Path)
|
||||||
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
args = parse_args()
|
||||||
|
with open(args.compose_file, encoding="utf-8") as f:
|
||||||
|
yaml_dict = yaml.safe_load(f)
|
||||||
|
|
||||||
|
write_network_units(args, yaml_dict)
|
||||||
|
write_service_units(args, yaml_dict)
|
||||||
|
|
||||||
print('\n==> Remember to run "systemctl daemon-reload"')
|
print('\n==> Remember to run "systemctl daemon-reload"')
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user