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()  | 
