diff options
Diffstat (limited to 'buildstream/_frontend/cli.py')
-rw-r--r-- | buildstream/_frontend/cli.py | 145 |
1 files changed, 41 insertions, 104 deletions
diff --git a/buildstream/_frontend/cli.py b/buildstream/_frontend/cli.py index c6c9d8156..5efa97b7e 100644 --- a/buildstream/_frontend/cli.py +++ b/buildstream/_frontend/cli.py @@ -3,7 +3,7 @@ import sys import click from .. import _yaml -from .._exceptions import BstError, PipelineError, LoadError +from .._exceptions import BstError, LoadError from ..__version__ import __version__ as build_stream_version from .complete import main_bashcomplete, complete_path, CompleteUnhandled @@ -201,17 +201,10 @@ def build(app, elements, all_, track_, track_save, track_all, track_except): if track_: rewritable = True - app.initialize(elements, except_=track_except, rewritable=rewritable, - use_configured_remote_caches=True, track_elements=track_, - fetch_subprojects=True) - app.print_heading() - try: + with app.initialized(elements, session_name="Build", except_=track_except, rewritable=rewritable, + use_configured_remote_caches=True, track_elements=track_, + fetch_subprojects=True): app.pipeline.build(app.scheduler, all_, track_) - app.print_summary() - except PipelineError as e: - app.print_error(e) - app.print_summary() - sys.exit(-1) ################################################################## @@ -244,19 +237,11 @@ def fetch(app, elements, deps, track_, except_): plan: Only dependencies required for the build plan all: All dependencies """ - - app.initialize(elements, except_=except_, rewritable=track_, - track_elements=elements if track_ else None, - fetch_subprojects=True) - try: + with app.initialized(elements, session_name="Fetch", except_=except_, rewritable=track_, + track_elements=elements if track_ else None, + fetch_subprojects=True): dependencies = app.pipeline.deps_elements(deps) - app.print_heading(deps=dependencies) app.pipeline.fetch(app.scheduler, dependencies, track_) - app.print_summary() - except PipelineError as e: - app.print_error(e) - app.print_summary() - sys.exit(-1) ################################################################## @@ -285,17 +270,10 @@ def track(app, elements, deps, except_): none: No dependencies, just the element itself all: All dependencies """ - app.initialize(elements, except_=except_, rewritable=True, track_elements=elements, - fetch_subprojects=True) - try: + with app.initialized(elements, session_name="Track", except_=except_, rewritable=True, + track_elements=elements, fetch_subprojects=True): dependencies = app.pipeline.deps_elements(deps) - app.print_heading(deps=dependencies) app.pipeline.track(app.scheduler, dependencies) - app.print_summary() - except PipelineError as e: - app.print_error(e) - app.print_summary() - sys.exit(-1) ################################################################## @@ -323,16 +301,10 @@ def pull(app, elements, deps, remote): none: No dependencies, just the element itself all: All dependencies """ - app.initialize(elements, use_configured_remote_caches=(remote is None), - add_remote_cache=remote, fetch_subprojects=True) - try: + with app.initialized(elements, session_name="Pull", use_configured_remote_caches=(remote is None), + add_remote_cache=remote, fetch_subprojects=True): to_pull = app.pipeline.deps_elements(deps) app.pipeline.pull(app.scheduler, to_pull) - app.print_summary() - except BstError as e: - app.print_error(e) - app.print_summary() - sys.exit(-1) ################################################################## @@ -359,16 +331,11 @@ def push(app, elements, deps, remote): none: No dependencies, just the element itself all: All dependencies """ - app.initialize(elements, use_configured_remote_caches=(remote is None), - add_remote_cache=remote, fetch_subprojects=True) - try: + with app.initialized(elements, session_name="Push", + use_configured_remote_caches=(remote is None), + add_remote_cache=remote, fetch_subprojects=True): to_push = app.pipeline.deps_elements(deps) app.pipeline.push(app.scheduler, to_push) - app.print_summary() - except BstError as e: - app.print_error(e) - app.print_summary() - sys.exit(-1) ################################################################## @@ -439,20 +406,17 @@ def show(app, elements, deps, except_, order, format_, downloadable): bst show target.bst --format \\ $'---------- %{name} ----------\\n%{vars}' """ - app.initialize(elements, except_=except_, use_configured_remote_caches=downloadable) - try: + with app.initialized(elements, except_=except_, use_configured_remote_caches=downloadable): + dependencies = app.pipeline.deps_elements(deps) - except PipelineError as e: - click.echo("{}".format(e), err=True) - sys.exit(-1) + if order == "alpha": + dependencies = sorted(dependencies) - if order == "alpha": - dependencies = sorted(dependencies) + if not format_: + format_ = app.context.log_element_format - if not format_: - format_ = app.context.log_element_format + report = app.logger.show_pipeline(dependencies, format_) - report = app.logger.show_pipeline(dependencies, format_) click.echo(report, color=app.colors) @@ -498,7 +462,8 @@ def shell(app, element, sysroot, mount, isolate, build_, command): else: scope = Scope.RUN - app.initialize((element,)) + with app.initialized((element,)): + pass # Assert we have everything we need built. missing_deps = [] @@ -548,13 +513,8 @@ def shell(app, element, sysroot, mount, isolate, build_, command): def checkout(app, element, directory, force, integrate, hardlinks): """Checkout a built artifact to the specified directory """ - app.initialize((element,)) - try: + with app.initialized((element,)): app.pipeline.checkout(directory, force, integrate, hardlinks) - click.echo("", err=True) - except BstError as e: - app.print_error(e) - sys.exit(-1) ################################################################## @@ -578,18 +538,12 @@ def checkout(app, element, directory, force, integrate, hardlinks): @click.pass_obj def source_bundle(app, target, force, directory, track_, compression, except_): - """Produce a source bundle to be manually executed""" - app.initialize((target,), rewritable=track_, track_elements=[target] if track_ else None) - try: + """Produce a source bundle to be manually executed + """ + with app.initialized((target,), rewritable=track_, track_elements=[target] if track_ else None): dependencies = app.pipeline.deps_elements('all') - app.print_heading(dependencies) app.pipeline.source_bundle(app.scheduler, dependencies, force, track_, compression, directory) - click.echo("", err=True) - except BstError as e: - click.echo("", err=True) - click.echo("ERROR: {}".format(e), err=True) - sys.exit(-1) ################################################################## @@ -618,13 +572,8 @@ def workspace(): def workspace_open(app, no_checkout, force, track_, element, directory): """Open a workspace for manual source modification""" - app.initialize((element,), rewritable=track_, track_elements=[element] if track_ else None) - try: + with app.initialized((element,), rewritable=track_, track_elements=[element] if track_ else None): app.pipeline.open_workspace(app.scheduler, directory, no_checkout, track_, force) - click.echo("", err=True) - except BstError as e: - app.print_error(e) - sys.exit(-1) ################################################################## @@ -639,24 +588,18 @@ def workspace_open(app, no_checkout, force, track_, element, directory): def workspace_close(app, remove_dir, element): """Close a workspace""" - app.initialize((element,)) + with app.initialized((element,)): - if app.pipeline.project._workspaces.get_workspace(app.pipeline.targets[0]) is None: - click.echo("ERROR: Workspace '{}' does not exist".format(element), err=True) - sys.exit(-1) - - if app.interactive and remove_dir: - if not click.confirm('This will remove all your changes, are you sure?'): - click.echo('Aborting', err=True) + if app.pipeline.project._workspaces.get_workspace(app.pipeline.targets[0]) is None: + click.echo("ERROR: Workspace '{}' does not exist".format(element), err=True) sys.exit(-1) - try: + if app.interactive and remove_dir: + if not click.confirm('This will remove all your changes, are you sure?'): + click.echo('Aborting', err=True) + sys.exit(-1) + app.pipeline.close_workspace(remove_dir) - click.echo("", err=True) - except BstError as e: - click.echo("", err=True) - click.echo("ERROR: {}".format(e), err=True) - sys.exit(-1) ################################################################## @@ -672,19 +615,13 @@ def workspace_close(app, remove_dir, element): @click.pass_obj def workspace_reset(app, track_, no_checkout, element): """Reset a workspace to its original state""" - app.initialize((element,)) - if app.interactive: - if not click.confirm('This will remove all your changes, are you sure?'): - click.echo('Aborting', err=True) - sys.exit(-1) + with app.initialized((element,)): + if app.interactive: + if not click.confirm('This will remove all your changes, are you sure?'): + click.echo('Aborting', err=True) + sys.exit(-1) - try: app.pipeline.reset_workspace(app.scheduler, track_, no_checkout) - click.echo("", err=True) - except BstError as e: - click.echo("", err=True) - click.echo("ERROR: {}".format(e), err=True) - sys.exit(-1) ################################################################## |