本文整理匯總了Python中rose.popen.RosePopener.run方法的典型用法代碼示例。如果您正苦於以下問題:Python RosePopener.run方法的具體用法?Python RosePopener.run怎麽用?Python RosePopener.run使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類rose.popen.RosePopener
的用法示例。
在下文中一共展示了RosePopener.run方法的5個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: _launch
# 需要導入模塊: from rose.popen import RosePopener [as 別名]
# 或者: from rose.popen.RosePopener import run [as 別名]
def _launch(name, event_handler=None, run_fg=False, *args, **kwargs):
popen = RosePopener(event_handler)
command = popen.get_cmd(name, *args)
kwargs['stdin'] = sys.stdin
if run_fg:
return popen.run(*command, **kwargs)
popen.run_bg(*command, **kwargs)
示例2: write_source_vc_info
# 需要導入模塊: from rose.popen import RosePopener [as 別名]
# 或者: from rose.popen.RosePopener import run [as 別名]
def write_source_vc_info(run_source_dir, output=None, popen=None):
"""Write version control information of sources used in run time.
run_source_dir -- The source directory we are interested in.
output -- An open file handle or a string containing a writable path.
If not specified, use sys.stdout.
popen -- A rose.popen.RosePopener instance for running vc commands.
If not specified, use a new local instance.
"""
if popen is None:
popen = RosePopener()
if output is None:
handle = sys.stdout
elif hasattr(output, "write"):
handle = output
else:
handle = open(output, "wb")
msg = "%s\n" % run_source_dir
_write_safely(msg, handle)
environ = dict(os.environ)
environ["LANG"] = "C"
for vcs, args_list in [
("svn", [
["info", "--non-interactive"],
["status", "--non-interactive"],
["diff", "--internal-diff", "--non-interactive"]]),
("git", [["describe"], ["status"], ["diff"]])]:
if not popen.which(vcs):
continue
cwd = os.getcwd()
os.chdir(run_source_dir)
try:
for args in args_list:
cmd = [vcs] + args
ret_code, out, _ = popen.run(*cmd, env=environ)
if out:
_write_safely(("#" * 80 + "\n"), handle)
_write_safely(("# %s\n" % popen.list_to_shell_str(cmd)),
handle)
_write_safely(("#" * 80 + "\n"), handle)
_write_safely(out, handle)
if ret_code: # If cmd fails once, it will likely fail again
break
finally:
os.chdir(cwd)
示例3: write_source_vc_info
# 需要導入模塊: from rose.popen import RosePopener [as 別名]
# 或者: from rose.popen.RosePopener import run [as 別名]
def write_source_vc_info(run_source_dir, output=None, popen=None):
"""Write version control information of sources used in run time.
run_source_dir -- The source directory we are interested in.
output -- An open file handle or a string containing a writable path.
If not specified, use sys.stdout.
popen -- A rose.popen.RosePopener instance for running vc commands.
If not specified, use a new local instance.
"""
if popen is None:
popen = RosePopener()
if output is None:
handle = sys.stdout
elif hasattr(output, "write"):
handle = output
else:
handle = open(output, "wb")
environ = dict(os.environ)
environ["LANG"] = "C"
for vcs, cmds in [("svn", ["info", "status", "diff"]),
("git", ["describe", "status", "diff"])]:
if not popen.which(vcs):
continue
cwd = os.getcwd()
os.chdir(run_source_dir)
try:
for cmd in cmds:
rc, out, err = popen.run(vcs, cmd, env=environ)
if out:
handle.write("#" * 80 + "\n")
handle.write(("# %s %s\n" % (vcs, cmd)).upper())
handle.write("#" * 80 + "\n")
handle.write(out)
if rc: # If cmd fails once, chances are, it will fail again
break
finally:
os.chdir(cwd)
示例4: StemRunner
# 需要導入模塊: from rose.popen import RosePopener [as 別名]
# 或者: from rose.popen.RosePopener import run [as 別名]
class StemRunner(object):
"""Set up options for running a STEM job through Rose."""
def __init__(self, opts, reporter=None, popen=None, fs_util=None):
self.opts = opts
if reporter is None:
self.reporter = Reporter(opts.verbosity - opts.quietness)
else:
self.reporter = reporter
if popen is None:
self.popen = RosePopener(event_handler=self.reporter)
else:
self.popen = popen
if fs_util is None:
self.fs_util = FileSystemUtil(event_handler=self.reporter)
else:
self.fs_util = fs_util
def _add_define_option(self, var, val):
"""Add a define option passed to the SuiteRunner."""
if self.opts.defines:
self.opts.defines.append(SUITE_RC_PREFIX + var + '=' + val)
else:
self.opts.defines = [SUITE_RC_PREFIX + var + '=' + val]
self.reporter(ConfigVariableSetEvent(var, val))
return
def _get_base_dir(self, item):
"""Given a source tree return the following from 'fcm loc-layout':
* url
* sub_tree
* peg_rev
* root
* project
"""
rc, output, stderr = self.popen.run('fcm', 'loc-layout', item)
if rc != 0:
raise ProjectNotFoundException(item, stderr)
ret = {}
for line in output.splitlines():
if ":" not in line:
continue
key, value = line.split(":", 1)
if key:
if value:
ret[key] = value.strip()
return ret
def _get_project_from_url(self, source_dict):
"""Run 'fcm keyword-print' to work out the project name."""
repo = source_dict['root']
if source_dict['project']:
repo += '/' + source_dict['project']
rc, kpoutput, stderr = self.popen.run('fcm', 'kp', source_dict['url'])
project = None
for line in kpoutput.splitlines():
if line.rstrip().endswith(repo):
kpresult = re.search(r'^location{primary}\[(.*)\]', line)
if kpresult:
project = kpresult.group(1)
break
return project
def _deduce_mirror(self, source_dict, project):
"""Deduce the mirror location of this source tree."""
# Root location for project
proj_root = source_dict['root'] + '/' + source_dict['project']
# Swap project to mirror
project = re.sub(r'\.x$', r'.xm', project)
mirror_repo = "fcm:" + project
# Generate mirror location
mirror = re.sub(proj_root, mirror_repo, source_dict['url'])
# Add forwards slash after .xm if missing
if '.xm/' not in mirror:
mirror = re.sub(r'\.xm', r'.xm/', mirror)
return mirror
def _ascertain_project(self, item):
"""Set the project name and top-level from 'fcm loc-layout'.
Returns:
* project name
* top-level location of the source tree with revision number
* top-level location of the source tree without revision number
* revision number
"""
project = None
try:
#.........這裏部分代碼省略.........
示例5: StemRunner
# 需要導入模塊: from rose.popen import RosePopener [as 別名]
# 或者: from rose.popen.RosePopener import run [as 別名]
class StemRunner(object):
"""Set up options for running a STEM job through Rose."""
def __init__(self, opts, reporter=None, popen=None, fs_util=None):
self.opts = opts
if reporter is None:
self.reporter = Reporter(opts.verbosity - opts.quietness)
else:
self.reporter = reporter
if popen is None:
self.popen = RosePopener(event_handler = self.reporter)
else:
self.popen = popen
if fs_util is None:
self.fs_util = FileSystemUtil(event_handler = self.reporter)
else:
self.fs_util = fs_util
def _add_define_option(self, var, val):
"""Add a define option passed to the SuiteRunner."""
if self.opts.defines:
self.opts.defines.append(SUITE_RC_PREFIX + var + '=' + val )
else:
self.opts.defines= [ SUITE_RC_PREFIX + var + '=' + val ]
self.reporter(ConfigVariableSetEvent(var, val))
return
def _ascertain_project(self, item):
"""Set the project name and top-level from 'fcm loc-layout'"""
project = ''
if re.search(r'^\.', item):
item = os.path.abspath(os.path.join(os.getcwd(), item))
result = re.search(r'\[(\w+)\]', item)
if result:
project = result.group(1)
item = re.sub(r'\[\w+\]', r'', item)
return project, item
rc, output, stderr = self.popen.run('fcm', 'loc-layout', item)
if rc != 0:
raise ProjectNotFoundException(item, stderr)
result = re.search(r'url:\s*(file|svn|https|http|svn\+ssh)(://.*)',
output)
# Generate a unique name for this project based on fcm kp
if result:
urlstring = result.group(1) + result.group(2)
rc, kpoutput, stderr = self.popen.run('fcm', 'kp', urlstring)
kpresult = re.search(r'location{primary}\[(.*)\]\s*=', kpoutput)
if kpresult:
project = kpresult.group(1)
if not project:
raise ProjectNotFoundException(item)
result = re.search(r'peg_rev:\s*(.*)', output)
if '@' in item and result:
revision = '@' + result.group(1)
base = re.sub(r'@.*', r'', item)
else:
revision = ''
base = item
# If we're in a subdirectory of the source tree, find it and
# remove it leaving the top-level location
result = re.search(r'target:\s*(.*)', output)
target=''
if result:
target = result.group(1)
subtree=''
result2 = re.search(r'sub_tree:\s*(.*)', output)
if result2:
subtree = result2.group(1)
item = re.sub(subtree, r'', target)
# Remove trailing forwards-slash
item = re.sub(r'/$',r'',item)
return project, item, base, revision
def _generate_name(self):
"""Generate a suite name from the name of the first source tree."""
dummy, basedir, dummy2, dummy3 = self._ascertain_project(os.getcwd())
name = os.path.basename(basedir)
return name
def _this_suite(self):
"""Find the location of the suite in the first source tree."""
# Get base of first source
basedir = ''
if self.opts.source:
basedir = self.opts.source[0]
else:
dummy, basedir, dum2, dum3 = self._ascertain_project(os.getcwd())
suitedir = os.path.join(basedir, DEFAULT_TEST_DIR)
suitefile = os.path.join(suitedir, "rose-suite.conf")
#.........這裏部分代碼省略.........