diff options
author | nico wellpott <nico@magicbroccoli.de> | 2021-04-06 11:32:04 +0200 |
---|---|---|
committer | nico wellpott <nico@magicbroccoli.de> | 2021-04-06 11:32:04 +0200 |
commit | e54cb3b21568bba183eebb21835afb7d470ba9d0 (patch) | |
tree | e819f275f6b4e32799ceffa726f666e850919046 /src/blimp/bl_process.py | |
parent | e478c2b51f0636a3a3ad247f2f1d0f19ec66860b (diff) | |
parent | 78015c196afd5f1ae8c3d65348e0059dddcce6c5 (diff) |
Merge branch 'packaging'
Diffstat (limited to 'src/blimp/bl_process.py')
-rw-r--r-- | src/blimp/bl_process.py | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/blimp/bl_process.py b/src/blimp/bl_process.py new file mode 100644 index 0000000..06c9c0f --- /dev/null +++ b/src/blimp/bl_process.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +import sys + +from ruamel.yaml import YAML, scalarstring + +from .misc import local_file_present + + +class ProcessBlocklist: + def __init__(self): + pass + + @classmethod + def process(self, blacklist, outfile, dryrun: bool): + """ + function to build and compare the local yaml file to the remote file + if the remote file is different, the local file gets overwritten + """ + # cheeky none catch + try: + # load local blacklist outfile + if local_file_present(outfile): + with open(outfile, "r", encoding="utf-8") as local_file: + local_blacklist = local_file.read() + + except TypeError: + # no local copy use empty one instead + local_blacklist = YAML(typ="safe") + + # blacklist frame + remote_file = {"acl": {"spamblacklist": {"server": []}}} + + # build the blacklist with the given frame to compare to local blacklist + for entry in blacklist.split(): + entry = scalarstring.DoubleQuotedScalarString(entry) + remote_file["acl"]["spamblacklist"]["server"].append(entry) + + yml = YAML() + yml.indent(offset=2) + yml.default_flow_style = False + + # if dry-run true print expected content + if dryrun: + yml.dump(remote_file, sys.stdout) + return + + if local_blacklist == remote_file: + return + + if outfile is None: + print("no outfile assigned", file=sys.stderr) + sys.exit(2) + + # proceed to update the defined outfile + with open(outfile, "w", encoding="utf-8") as new_local_file: + yml.dump(remote_file, new_local_file) |