diff options
author | Gökçen Nurlu <gnurlu1@bloomberg.net> | 2018-10-29 18:44:21 +0000 |
---|---|---|
committer | Gökçen Nurlu <gnurlu1@bloomberg.net> | 2018-11-23 16:04:23 +0000 |
commit | 1c45f7272f2ffe865c3c37d64e4f242817f81e6a (patch) | |
tree | 0ec1842bbe0a0ea0e9567620faf249cb3eccaeeb | |
parent | dacfba3521f8777b57d44cbfd52b46d3900d2cdc (diff) | |
download | buildstream-gokcen/no_auto_fetch.tar.gz |
Add no-fetch flag for 'bst workspace-reset'gokcen/no_auto_fetch
-rw-r--r-- | buildstream/_frontend/cli.py | 6 | ||||
-rw-r--r-- | buildstream/_stream.py | 19 |
2 files changed, 19 insertions, 6 deletions
diff --git a/buildstream/_frontend/cli.py b/buildstream/_frontend/cli.py index ec0fbef71..d2801f543 100644 --- a/buildstream/_frontend/cli.py +++ b/buildstream/_frontend/cli.py @@ -798,8 +798,10 @@ def workspace_close(app, remove_dir, all_, elements): help="Reset all open workspaces") @click.argument('elements', nargs=-1, type=click.Path(readable=False)) +@click.option('--no-fetch', 'no_fetch', default=False, is_flag=True, + help="Disable auto-fetching of elements and related junction(s)") @click.pass_obj -def workspace_reset(app, soft, track_, all_, elements): +def workspace_reset(app, soft, track_, all_, elements, no_fetch): """Reset a workspace to its original state""" # Check that the workspaces in question exist @@ -819,7 +821,7 @@ def workspace_reset(app, soft, track_, all_, elements): if all_: elements = tuple(element_name for element_name, _ in app.context.get_workspaces().list()) - app.stream.workspace_reset(elements, soft=soft, track_first=track_) + app.stream.workspace_reset(elements, soft=soft, track_first=track_, no_fetch=no_fetch) ################################################################## diff --git a/buildstream/_stream.py b/buildstream/_stream.py index 6fda88169..98f3fcca0 100644 --- a/buildstream/_stream.py +++ b/buildstream/_stream.py @@ -626,8 +626,9 @@ class Stream(): # targets (list of str): The target elements to reset the workspace for # soft (bool): Only reset workspace state # track_first (bool): Whether to also track the sources first + # fetch (bool): Enable auto-fetching of target and related junction(s) # - def workspace_reset(self, targets, *, soft, track_first): + def workspace_reset(self, targets, *, soft, track_first, no_fetch): if track_first: track_targets = targets @@ -636,7 +637,8 @@ class Stream(): elements, track_elements = self._load(targets, track_targets, selection=PipelineSelection.REDIRECT, - track_selection=PipelineSelection.REDIRECT) + track_selection=PipelineSelection.REDIRECT, + fetch_subprojects=not no_fetch) nonexisting = [] for element in elements: @@ -645,9 +647,18 @@ class Stream(): if nonexisting: raise StreamError("Workspace does not exist", detail="\n".join(nonexisting)) - # Do the tracking first + to_track = [] if track_first: - self._fetch(elements, track_elements=track_elements) + to_track = track_elements + + to_fetch = [] + if not no_fetch: + to_fetch = elements + + if to_fetch or to_track: + self._fetch(to_fetch, track_elements=to_track) + + self._pipeline.assert_sources_cached(elements) workspaces = self._context.get_workspaces() |