summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGökçen Nurlu <gnurlu1@bloomberg.net>2018-10-25 18:38:44 +0100
committerGökçen Nurlu <gnurlu1@bloomberg.net>2018-11-22 18:08:50 +0000
commitbf827ed2320b2a00c223e9278c17331fbdfa169a (patch)
tree014b6248d545e101f830e3e7b70133795cf36002
parent920674525871fca62464c68b66a8ffedcf6706c4 (diff)
downloadbuildstream-bf827ed2320b2a00c223e9278c17331fbdfa169a.tar.gz
Add no-fetch flag for 'bst push' command
-rw-r--r--buildstream/_frontend/cli.py6
-rw-r--r--buildstream/_stream.py6
2 files changed, 8 insertions, 4 deletions
diff --git a/buildstream/_frontend/cli.py b/buildstream/_frontend/cli.py
index 99054fe74..f45ffb004 100644
--- a/buildstream/_frontend/cli.py
+++ b/buildstream/_frontend/cli.py
@@ -464,8 +464,10 @@ def pull(app, elements, deps, remote, no_fetch):
help="The URL of the remote cache (defaults to the first configured cache)")
@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 junction(s) automatically")
@click.pass_obj
-def push(app, elements, deps, remote):
+def push(app, elements, deps, remote, no_fetch):
"""Push a built artifact to a remote artifact cache.
The default destination is the highest priority configured cache. You can
@@ -478,7 +480,7 @@ def push(app, elements, deps, remote):
all: All dependencies
"""
with app.initialized(session_name="Push"):
- app.stream.push(elements, selection=deps, remote=remote)
+ app.stream.push(elements, selection=deps, remote=remote, no_fetch=no_fetch)
##################################################################
diff --git a/buildstream/_stream.py b/buildstream/_stream.py
index 992b37ad5..cd69808ce 100644
--- a/buildstream/_stream.py
+++ b/buildstream/_stream.py
@@ -325,13 +325,15 @@ class Stream():
# targets (list of str): Targets to push
# selection (PipelineSelection): The selection mode for the specified targets
# remote (str): The URL of a specific remote server to push to, or None
+ # no_fetch (bool): Flag to disable auto-fetch of junctions needed by `targets`
#
# If `remote` specified as None, then regular configuration will be used
# to determine where to push artifacts to.
#
def push(self, targets, *,
selection=PipelineSelection.NONE,
- remote=None):
+ remote=None,
+ no_fetch):
use_config = True
if remote:
@@ -341,7 +343,7 @@ class Stream():
selection=selection,
use_artifact_config=use_config,
artifact_remote_url=remote,
- fetch_subprojects=True)
+ fetch_subprojects=not no_fetch)
if not self._artifacts.has_push_remotes():
raise StreamError("No artifact caches available for pushing artifacts")