diff options
author | lassulus <lassulus@lassul.us> | 2021-10-23 15:15:54 +0200 |
---|---|---|
committer | lassulus <lassulus@lassul.us> | 2021-10-23 15:15:54 +0200 |
commit | 679922a7831176089fe9e3ad62346b0e0bd4dcdd (patch) | |
tree | a6ab4cce1956c7c315106f94fd1d4c0b4e686496 /krebs/5pkgs/simple/Reaktor/scripts/sed-plugin.py | |
parent | 0564414a3184960555a8146f78b36120e6ef0c21 (diff) |
Revert "rip Reaktor"
This reverts commit 55b137ba525f075f4619de4676d3e66f782b1a12.
Diffstat (limited to 'krebs/5pkgs/simple/Reaktor/scripts/sed-plugin.py')
-rwxr-xr-x | krebs/5pkgs/simple/Reaktor/scripts/sed-plugin.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/krebs/5pkgs/simple/Reaktor/scripts/sed-plugin.py b/krebs/5pkgs/simple/Reaktor/scripts/sed-plugin.py new file mode 100755 index 000000000..4925b25bb --- /dev/null +++ b/krebs/5pkgs/simple/Reaktor/scripts/sed-plugin.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python3 + +# Usage: +# _from=krebs state_dir=. python sed-plugin.py 'dick butt' +# _from=krebs state_dir=. python sed-plugin.py 's/t/l/g' +# > dick bull +import shelve +from os import environ +from os.path import join +from sys import argv +from time import sleep +import re + +# try to open the shelve file until it succeeds +while True: + try: + d = shelve.open( + join(environ['state_dir'], 'sed-plugin.shelve'), + writeback=True + ) + break + except: # noqa: E722 + sleep(0.2) +usr = environ['_from'] + + +def is_regex(line): + myre = re.compile(r'^s/(?:\\/|[^/])+/(?:\\/|[^/])*/[ig]?$') + return myre.match(line) + + +line = argv[1] + +if is_regex(line): + last = d.get(usr, None) + if last: + from subprocess import Popen, PIPE + p = Popen(['sed', line], stdin=PIPE, stdout=PIPE, stderr=PIPE) + so, se = p.communicate(bytes("{}\n".format(last), "UTF-8")) + if p.returncode: + print("something went wrong when trying to process your regex: {}".format(line.strip())) + ret = so.decode() + if len(ret) > 512: + print('message to long, skipped') + elif len(ret.split('\n')) > 5: + print('to many lines, skipped') + else: + if last.strip() != ret.strip(): + print("\x02{}\x02 meant: {}".format(usr, ret.strip())) + if ret: + d[usr] = ret + + else: + print("no last message") +else: + d[usr] = line + +d.close() |