From 679922a7831176089fe9e3ad62346b0e0bd4dcdd Mon Sep 17 00:00:00 2001 From: lassulus Date: Sat, 23 Oct 2021 15:15:54 +0200 Subject: Revert "rip Reaktor" This reverts commit 55b137ba525f075f4619de4676d3e66f782b1a12. --- krebs/5pkgs/simple/Reaktor/scripts/sed-plugin.py | 58 ++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100755 krebs/5pkgs/simple/Reaktor/scripts/sed-plugin.py (limited to 'krebs/5pkgs/simple/Reaktor/scripts/sed-plugin.py') 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() -- cgit v1.2.3