diff options
author | lassulus <lass@lassul.us> | 2017-05-29 10:54:07 +0200 |
---|---|---|
committer | lassulus <lass@lassul.us> | 2017-05-29 10:54:07 +0200 |
commit | 35bc9f03a9bea7c6f864b95c95f5c095fa53e92b (patch) | |
tree | 059b5dc3b4fee6838b35f272a75dde3bd2ac785b /krebs/5pkgs/simple/Reaktor/scripts/sed-plugin.py | |
parent | 6e93f661e0b31c95f69d1bd3a6f208d26e3e0958 (diff) | |
parent | 4d1de57df5800879e7fcfcc38e5a10f0c1b993d7 (diff) |
Merge remote-tracking branch 'ni/master'
Diffstat (limited to 'krebs/5pkgs/simple/Reaktor/scripts/sed-plugin.py')
-rw-r--r-- | krebs/5pkgs/simple/Reaktor/scripts/sed-plugin.py | 41 |
1 files changed, 41 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 100644 index 000000000..da8e2f726 --- /dev/null +++ b/krebs/5pkgs/simple/Reaktor/scripts/sed-plugin.py @@ -0,0 +1,41 @@ +#!/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 +import re + +d = shelve.open(join(environ['state_dir'], 'sed-plugin.shelve'), writeback=True) +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) + so, se = p.communicate(bytes("{}\n".format(last), "UTF-8")) + if p.returncode: + print("something went wrong when trying to process your regex: {}".format(se.decode())) + ret = so.decode() + print("\x1b[1m{}\x1b[0m meant: {}".format(usr, ret.strip())) + if ret: + d[usr] = ret + + else: + print("no last message") +else: + d[usr] = line + +d.close() |