m 2 Reaktor: finish sed-plugin
This commit is contained in:
parent
869a278aa8
commit
ee4546c9a4
18
makefu/2configs/Reaktor/sed-plugin.nix
Normal file
18
makefu/2configs/Reaktor/sed-plugin.nix
Normal file
@ -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]}' }})
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
|
@ -1,18 +1,18 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
# Usage:
|
# Usage:
|
||||||
# _from=krebs statedir=. python sed-plugin.py 'dick butt'
|
# _from=krebs state_dir=. 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 's/t/l/g'
|
||||||
## dick bull
|
## dick bull
|
||||||
import shelve
|
import shelve
|
||||||
from os import environ
|
from os import environ
|
||||||
from os.path import join
|
from os.path import join
|
||||||
from sys import argv
|
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
|
import re
|
||||||
|
|
||||||
def is_regex(line):
|
def is_regex(line):
|
||||||
# TODO: match s/di\/ck/butt/ but not s/di/ck/butt/
|
|
||||||
myre = re.compile(r'^s/((?:\\/|[^/])+)/((?:\\/|[^/])*)/([ig]*)$')
|
myre = re.compile(r'^s/((?:\\/|[^/])+)/((?:\\/|[^/])*)/([ig]*)$')
|
||||||
return myre.match(line)
|
return myre.match(line)
|
||||||
|
|
||||||
@ -32,22 +32,22 @@ if m:
|
|||||||
count = 0
|
count = 0
|
||||||
else:
|
else:
|
||||||
flagstr = ''
|
flagstr = ''
|
||||||
last = d.get(environ['_from'],None)
|
last = d.get(usr,None)
|
||||||
if last:
|
if last:
|
||||||
print(fn,tn,last)
|
|
||||||
#print(re.sub(fn,tn,last,count=count,flags=flags))
|
#print(re.sub(fn,tn,last,count=count,flags=flags))
|
||||||
from subprocess import Popen,PIPE
|
from subprocess import Popen,PIPE
|
||||||
p = Popen(['sed','s/{}/{}/{}'.format(f,t,flagstr)],stdin=PIPE,stdout=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:
|
if p.returncode:
|
||||||
print("something went wrong when trying to process your regex")
|
print("something went wrong when trying to process your regex: {}".format(se.decode()))
|
||||||
print(so)
|
ret = so.decode()
|
||||||
|
print("\x1b[1m{}\x1b[0m meinte: {}".format(usr,ret.strip()))
|
||||||
|
if ret:
|
||||||
|
d[usr] = ret
|
||||||
|
|
||||||
else:
|
else:
|
||||||
print("no last message")
|
print("no last message")
|
||||||
else:
|
else:
|
||||||
print("setting line")
|
d[usr] = line
|
||||||
d[environ['_from']] = line
|
|
||||||
|
|
||||||
d.close()
|
d.close()
|
||||||
|
Loading…
Reference in New Issue
Block a user