From cadb0e55347cdac149e49f611c99b9d53a105520 Mon Sep 17 00:00:00 2001 From: Tom Forbes Date: Thu, 28 Jul 2022 17:34:49 +0100 Subject: [PATCH] feat: Support downloading archive subpaths --- gitlab/v4/objects/repositories.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/gitlab/v4/objects/repositories.py b/gitlab/v4/objects/repositories.py index e968a6a6a..b8dbdd8af 100644 --- a/gitlab/v4/objects/repositories.py +++ b/gitlab/v4/objects/repositories.py @@ -201,6 +201,7 @@ def repository_archive( action: Optional[Callable[..., Any]] = None, chunk_size: int = 1024, format: Optional[str] = None, + path: Optional[str] = None, *, iterator: bool = False, **kwargs: Any, @@ -218,6 +219,7 @@ def repository_archive( data chunk_size: Size of each chunk format: file format (tar.gz by default) + path: The subpath of the repository to download (all files by default) **kwargs: Extra options to send to the server (e.g. sudo) Raises: @@ -227,14 +229,16 @@ def repository_archive( Returns: The binary data of the archive """ - path = f"/projects/{self.encoded_id}/repository/archive" + url_path = f"/projects/{self.encoded_id}/repository/archive" if format: - path += "." + format + url_path += "." + format query_data = {} if sha: query_data["sha"] = sha + if path is not None: + query_data["path"] = path result = self.manager.gitlab.http_get( - path, query_data=query_data, raw=True, streamed=streamed, **kwargs + url_path, query_data=query_data, raw=True, streamed=streamed, **kwargs ) if TYPE_CHECKING: assert isinstance(result, requests.Response)