41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
import shlex, subprocess
|
|
def createShellArgs(*args,**kwargs):
|
|
rargs = []
|
|
for k in kwargs:
|
|
if len(k)==1:
|
|
rargs.append("-{!s} {!r}".format(k,kwargs[k]))
|
|
else:
|
|
rargs.append("--{!s} {!r}".format(k.strip("_").replace("_","-"),kwargs[k]))
|
|
rargs.extend(map(str,args))
|
|
return " ".join(rargs)
|
|
|
|
class Program:
|
|
def __init__(self,binary):
|
|
self.binary = binary
|
|
self.default_method = "run"
|
|
|
|
def __use_method(self,f,*args,**kwargs):
|
|
cli = self.binary+" "+createShellArgs(*args,**kwargs)
|
|
print(cli)
|
|
return f(shlex.split(cli))
|
|
|
|
def __call__(self,*args,**kwargs):
|
|
return getattr(self,self.default_method,self.run)(*args,**kwargs)
|
|
|
|
def run(self,*args,**kwargs):
|
|
return self.__use_method(subprocess.run,*args,**kwargs)
|
|
|
|
def check_output(self,*args,**kwargs):
|
|
return self.__use_method(subprocess.check_output,*args,**kwargs)
|
|
|
|
def call(self,*args,**kwargs):
|
|
return self.__use_method(subprocess.call,*args,**kwargs)
|
|
|
|
def getoutput(self,*args,**kwargs):
|
|
return self.__use_method(subprocess.getoutput,*args,**kwargs)
|
|
|
|
def check_call(self,*args,**kwargs):
|
|
return self.__use_method(subprocess.check_call,*args,**kwargs)
|
|
|
|
|