Refactored setting of env vars passed via the env flag.
This commit is contained in:
@ -1,3 +1,4 @@
|
|||||||
|
import codecs
|
||||||
import os
|
import os
|
||||||
|
|
||||||
import bonobo
|
import bonobo
|
||||||
@ -41,7 +42,7 @@ def _install_requirements(requirements):
|
|||||||
|
|
||||||
|
|
||||||
def read(filename, module, install=False, quiet=False, verbose=False, env=None):
|
def read(filename, module, install=False, quiet=False, verbose=False, env=None):
|
||||||
import re
|
|
||||||
import runpy
|
import runpy
|
||||||
from bonobo import Graph, settings
|
from bonobo import Graph, settings
|
||||||
|
|
||||||
@ -52,10 +53,21 @@ def read(filename, module, install=False, quiet=False, verbose=False, env=None):
|
|||||||
settings.DEBUG.set(True)
|
settings.DEBUG.set(True)
|
||||||
|
|
||||||
if env:
|
if env:
|
||||||
quote_killer = re.compile('["\']')
|
__escape_decoder = codecs.getdecoder('unicode_escape')
|
||||||
|
|
||||||
|
def decode_escaped(escaped):
|
||||||
|
return __escape_decoder(escaped)[0]
|
||||||
|
|
||||||
for e in env:
|
for e in env:
|
||||||
var_name, var_value = e.split('=')
|
ename, evalue = e.split('=', 1)
|
||||||
os.environ[var_name] = quote_killer.sub('', var_value)
|
|
||||||
|
if len(evalue) > 0:
|
||||||
|
quoted = evalue[0] == evalue[len(evalue) - 1] in ['"', "'"]
|
||||||
|
|
||||||
|
if quoted:
|
||||||
|
evalue = decode_escaped(evalue[1:-1])
|
||||||
|
|
||||||
|
os.environ[ename] = evalue
|
||||||
|
|
||||||
if filename:
|
if filename:
|
||||||
if os.path.isdir(filename):
|
if os.path.isdir(filename):
|
||||||
|
|||||||
Reference in New Issue
Block a user