Fix a missing dependency, and fix an issue when a Popen object has no return code
This commit is contained in:
parent
a2de18c7c2
commit
6021561b52
18
bou.py
18
bou.py
@ -12,6 +12,10 @@ BUILD_FILES = ['build.yaml', 'build.yml', 'bou.yaml', 'bou.yml']
|
||||
ENV_VAR = re.compile(r'(\$([A-Za-z0-9_]+))')
|
||||
|
||||
|
||||
class StepFailedError(Exception):
|
||||
pass
|
||||
|
||||
|
||||
def parse_args():
|
||||
"""
|
||||
Parse command line arguments, and return an object with all the arguments
|
||||
@ -55,6 +59,7 @@ def setup_step(config, step_name):
|
||||
"""
|
||||
step = config['steps'][step_name]
|
||||
step['environment'] = config.get('environment', []) + step.get('environment', [])
|
||||
step['name'] = step_name
|
||||
return step
|
||||
|
||||
|
||||
@ -91,7 +96,9 @@ def run_step(step, base_path):
|
||||
for output in iter(lambda: proc.stdout.read(1), b''):
|
||||
sys.stdout.buffer.write(output)
|
||||
sys.stdout.buffer.flush()
|
||||
return proc.returncode == 0
|
||||
proc.stdout.close()
|
||||
proc.wait()
|
||||
return not proc.returncode
|
||||
|
||||
|
||||
def run_stage(config, stage_name, base_path):
|
||||
@ -102,10 +109,11 @@ def run_stage(config, stage_name, base_path):
|
||||
:param stage_name: The stage to run
|
||||
:param base_path: The base path of the build
|
||||
"""
|
||||
for step in get_steps_for_stage(config, stage_name):
|
||||
steps = get_steps_for_stage(config, stage_name)
|
||||
for step in steps:
|
||||
result = run_step(step, base_path)
|
||||
if not result:
|
||||
break
|
||||
raise StepFailedError('Error running step "{name}"'.format(name=step['name']))
|
||||
|
||||
|
||||
def get_all_stages(config):
|
||||
@ -161,6 +169,7 @@ def main():
|
||||
config = yaml.full_load(build_file.open())
|
||||
all_stages = get_all_stages(config)
|
||||
all_steps = get_all_steps(config)
|
||||
try:
|
||||
if args.stage_or_step:
|
||||
if args.stage_or_step in all_stages:
|
||||
run_stage(config, args.stage_or_step, base_path)
|
||||
@ -179,6 +188,9 @@ def main():
|
||||
for step_name in all_steps:
|
||||
step = setup_step(config, step_name)
|
||||
run_step(config, step, base_path)
|
||||
except StepFailedError as e:
|
||||
print(str(e))
|
||||
return 3
|
||||
return 0
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user