diff options
Diffstat (limited to 'buildstream/_stream.py')
-rw-r--r-- | buildstream/_stream.py | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/buildstream/_stream.py b/buildstream/_stream.py index 14398b90d..2580134e3 100644 --- a/buildstream/_stream.py +++ b/buildstream/_stream.py @@ -560,8 +560,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, fetch): if track_first: track_targets = targets @@ -570,7 +571,8 @@ class Stream(): elements, track_elements = self._load(targets, track_targets, selection=PipelineSelection.REDIRECT, - track_selection=PipelineSelection.REDIRECT) + track_selection=PipelineSelection.REDIRECT, + fetch_subprojects=fetch) nonexisting = [] for element in elements: @@ -579,9 +581,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 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() |