Skip to content

Commit 80d16de

Browse files
authored
Merge pull request #2074 from apache/jbilleter/no-project
_frontend: Fix error for commands without targets outside project dir
2 parents 06eb62a + 2fd746b commit 80d16de

File tree

2 files changed

+31
-12
lines changed

2 files changed

+31
-12
lines changed

src/buildstream/_frontend/cli.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -525,7 +525,7 @@ def build(
525525
deps = app.context.build_dependencies
526526

527527
if not elements:
528-
elements = app.project.get_default_targets()
528+
elements = app.stream.get_default_targets()
529529
# Junction elements cannot be built, exclude them from default targets
530530
ignore_junction_targets = True
531531

@@ -655,7 +655,7 @@ def show(app, elements, deps, except_, order, format_):
655655
need_state = bool(state_match or key_match or full_key_match or artifact_cas_digest_match)
656656

657657
if not elements:
658-
elements = app.project.get_default_targets()
658+
elements = app.stream.get_default_targets()
659659

660660
dependencies = app.stream.load_selection(
661661
elements, selection=deps, except_targets=except_, need_state=need_state
@@ -763,7 +763,7 @@ def shell(
763763

764764
with app.initialized():
765765
if not target:
766-
target = app.project.get_default_target()
766+
target = app.stream.get_default_target()
767767
if not target:
768768
raise AppError('Missing argument "TARGET".')
769769

@@ -860,7 +860,7 @@ def source_fetch(app, elements, deps, except_, source_remotes, ignore_project_so
860860
"""
861861
with app.initialized(session_name="Fetch"):
862862
if not elements:
863-
elements = app.project.get_default_targets()
863+
elements = app.stream.get_default_targets()
864864

865865
app.stream.fetch(
866866
elements,
@@ -933,7 +933,7 @@ def source_push(app, elements, deps, except_, source_remotes, ignore_project_sou
933933
"""
934934
with app.initialized(session_name="Push"):
935935
if not elements:
936-
elements = app.project.get_default_targets()
936+
elements = app.stream.get_default_targets()
937937

938938
app.stream.source_push(
939939
elements,
@@ -993,7 +993,7 @@ def source_track(app, elements, deps, except_, cross_junctions):
993993
"""
994994
with app.initialized(session_name="Track"):
995995
if not elements:
996-
elements = app.project.get_default_targets()
996+
elements = app.stream.get_default_targets()
997997

998998
# Substitute 'none' for 'redirect' so that element redirections
999999
# will be done
@@ -1086,7 +1086,7 @@ def source_checkout(
10861086

10871087
with app.initialized():
10881088
if not element:
1089-
element = app.project.get_default_target()
1089+
element = app.stream.get_default_target()
10901090
if not element:
10911091
raise AppError('Missing argument "ELEMENT".')
10921092

@@ -1171,7 +1171,7 @@ def workspace_close(app, remove_dir, all_, elements):
11711171
if not (all_ or elements):
11721172
# NOTE: I may need to revisit this when implementing multiple projects
11731173
# opening one workspace.
1174-
element = app.project.get_default_target()
1174+
element = app.stream.get_default_target()
11751175
if element:
11761176
elements = (element,)
11771177
else:
@@ -1219,7 +1219,7 @@ def workspace_reset(app, soft, all_, elements):
12191219
with app.initialized():
12201220

12211221
if not (all_ or elements):
1222-
element = app.project.get_default_target()
1222+
element = app.stream.get_default_target()
12231223
if element:
12241224
elements = (element,)
12251225
else:
@@ -1412,7 +1412,7 @@ def artifact_checkout(
14121412

14131413
with app.initialized():
14141414
if not target:
1415-
target = app.project.get_default_target()
1415+
target = app.stream.get_default_target()
14161416
if not target:
14171417
raise AppError('Missing argument "ELEMENT".')
14181418

@@ -1494,7 +1494,7 @@ def artifact_pull(app, deps, artifact_remotes, ignore_project_artifact_remotes,
14941494
ignore_junction_targets = False
14951495

14961496
if not artifacts:
1497-
artifacts = app.project.get_default_targets()
1497+
artifacts = app.stream.get_default_targets()
14981498
# Junction elements cannot be pulled, exclude them from default targets
14991499
ignore_junction_targets = True
15001500

@@ -1562,7 +1562,7 @@ def artifact_push(app, deps, artifact_remotes, ignore_project_artifact_remotes,
15621562
ignore_junction_targets = False
15631563

15641564
if not artifacts:
1565-
artifacts = app.project.get_default_targets()
1565+
artifacts = app.stream.get_default_targets()
15661566
# Junction elements cannot be pushed, exclude them from default targets
15671567
ignore_junction_targets = True
15681568

src/buildstream/_stream.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1242,6 +1242,25 @@ def redirect_element_names(self, elements):
12421242
def get_state(self):
12431243
return self._state
12441244

1245+
# get_default_target()
1246+
#
1247+
# Attempts to interpret which element the user intended to run a command on.
1248+
# This is for commands that only accept a single target element and thus,
1249+
# this only uses the workspace element (if invoked from workspace directory)
1250+
# and does not use the project default targets.
1251+
#
1252+
def get_default_target(self):
1253+
return self._project.get_default_target() if self._project else None
1254+
1255+
# get_default_targets()
1256+
#
1257+
# Attempts to interpret which elements the user intended to run a command on.
1258+
# This is for commands that accept multiple target elements.
1259+
#
1260+
def get_default_targets(self):
1261+
self._assert_project("Unable to determine default targets")
1262+
return self._project.get_default_targets()
1263+
12451264
#############################################################
12461265
# Scheduler API forwarding #
12471266
#############################################################

0 commit comments

Comments
 (0)