70 lines
1.5 KiB
Python
70 lines
1.5 KiB
Python
import subprocess
|
|
import os
|
|
def perr(rtn,cmd = None,op = None):
|
|
if rtn == 0: return
|
|
if cmd == None: cmd = []
|
|
exc = subprocess.CalledProcessError(rtn,cmd,op)
|
|
raise exc
|
|
|
|
def pcall(*args,**kwargs):
|
|
rtn = subprocess.Popen(*args,**kwargs).wait()
|
|
perr(rtn,args[0])
|
|
|
|
def pcallStr(*args,**kwargs):
|
|
proc = subprocess.Popen(*args,**kwargs, stdout=subprocess.PIPE)
|
|
response = proc.stdout.read().decode("utf-8").strip("\n")
|
|
rtn = proc.wait()
|
|
perr(rtn,args[0])
|
|
return response
|
|
|
|
def pcallLines(*args,**kwargs):
|
|
proc = subprocess.Popen(*args,**kwargs, stdout=subprocess.PIPE)
|
|
line = b""
|
|
while True:
|
|
b = proc.stdout.read(1)
|
|
if b == b"":
|
|
yield line.decode("utf-8")
|
|
break
|
|
if b == b"\n":
|
|
yield line.decode("utf-8")
|
|
line = b""
|
|
continue
|
|
line = line + b
|
|
rtn = proc.wait()
|
|
perr(rtn,args[0])
|
|
|
|
langStore = False
|
|
def setLanguage(lang = None):
|
|
def getLanguageEnvs():
|
|
envs = []
|
|
for env in os.environ:
|
|
if env.startswith("LC_"):
|
|
envs.append(env)
|
|
continue
|
|
|
|
if env in ["LANGUAGE","LANG"]:
|
|
envs.append(env)
|
|
continue
|
|
|
|
return envs
|
|
|
|
def unsetLanguage():
|
|
for env in getLanguageEnvs():
|
|
del os.environ[env]
|
|
|
|
if lang == None:
|
|
if langStore == False: return
|
|
unsetLanguage()
|
|
for env in langStore: os.environ[env] = langStore[env]
|
|
langStore = False
|
|
return
|
|
|
|
langStore = {}
|
|
for env in getLanguageEnvs():
|
|
langStore[env] = os.environ[env]
|
|
|
|
unsetLanguage()
|
|
os.environ["LANGUAGE"] = lang
|
|
os.environ["LC_ALL"] = lang
|
|
os.environ["LANG"] = lang
|