diff options
-rw-r--r-- | makefu/2configs/Reaktor/sed-plugin.nix | 18 | ||||
-rw-r--r-- | makefu/2configs/Reaktor/sed-plugin.py | 24 |
2 files changed, 30 insertions, 12 deletions
diff --git a/makefu/2configs/Reaktor/sed-plugin.nix b/makefu/2configs/Reaktor/sed-plugin.nix new file mode 100644 index 000000000..1ec977116 --- /dev/null +++ b/makefu/2configs/Reaktor/sed-plugin.nix @@ -0,0 +1,18 @@ +{ config, lib, pkgs, ... }: + +with pkgs; +let + script = ./sed-plugin.py; +in { + #TODO: this will eat up the last regex, fix Reaktor + krebs.Reaktor.extraConfig = '' + public_commands.append({ + 'capname' : "shack-correct", + # only support s///gi + 'pattern' : '^(?P<args>.*)$$', + 'argv' : ["${pkgs.python3}/bin/python3","${script}"], + 'env' : { 'state_dir' : workdir, + 'PATH':'${lib.makeSearchPath "bin" [pkgs.gnused]}' }}) + ''; +} + diff --git a/makefu/2configs/Reaktor/sed-plugin.py b/makefu/2configs/Reaktor/sed-plugin.py index 677a1a44f..8103c9585 100644 --- a/makefu/2configs/Reaktor/sed-plugin.py +++ b/makefu/2configs/Reaktor/sed-plugin.py @@ -1,18 +1,18 @@ #!/usr/bin/env python3 # Usage: -# _from=krebs statedir=. python sed-plugin.py 'dick butt' -# _from=krebs statedir=. python sed-plugin.py 's/t/l/g' +# _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 -d = shelve.open(join(environ['statedir'],'sed-plugin.shelve'),writeback=True) +d = shelve.open(join(environ['state_dir'],'sed-plugin.shelve'),writeback=True) +usr = environ['_from'] import re def is_regex(line): - # TODO: match s/di\/ck/butt/ but not s/di/ck/butt/ myre = re.compile(r'^s/((?:\\/|[^/])+)/((?:\\/|[^/])*)/([ig]*)$') return myre.match(line) @@ -32,22 +32,22 @@ if m: count = 0 else: flagstr = '' - last = d.get(environ['_from'],None) + last = d.get(usr,None) if last: - print(fn,tn,last) #print(re.sub(fn,tn,last,count=count,flags=flags)) from subprocess import Popen,PIPE p = Popen(['sed','s/{}/{}/{}'.format(f,t,flagstr)],stdin=PIPE,stdout=PIPE ) - so,_ = p.communicate(last+"\n") + so,se = p.communicate(bytes("{}\n".format(last),"UTF-8")) if p.returncode: - print("something went wrong when trying to process your regex") - print(so) - + print("something went wrong when trying to process your regex: {}".format(se.decode())) + ret = so.decode() + print("\x1b[1m{}\x1b[0m meinte: {}".format(usr,ret.strip())) + if ret: + d[usr] = ret else: print("no last message") else: - print("setting line") - d[environ['_from']] = line + d[usr] = line d.close() |