From 9d0cfcafdfeeec37a021a9f6a065ec63f82ec5e2 Mon Sep 17 00:00:00 2001 From: Vera Sativa Date: Thu, 5 Dec 2019 11:05:47 -0300 Subject: [PATCH] feat: [WIP] remote dir download --- dvc/remote/base.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/dvc/remote/base.py b/dvc/remote/base.py index 10969250a..77bca4694 100644 --- a/dvc/remote/base.py +++ b/dvc/remote/base.py @@ -547,11 +547,20 @@ class RemoteBASE(object): if to_info.scheme != "local": raise NotImplementedError - logger.debug("Downloading '{}' to '{}'".format(from_info, to_info)) + makedirs(to_info.parent, exist_ok=True, mode=dir_mode) + if self.isdir(from_info): + # need to create dir here + # also pass the individual file name (file and to) + for file_info in self.walk_files(from_info): + self.single_file_download(file_info, to_info, name, no_progress_bar, file_mode) + else: + self.single_file_download(from_info, to_info, name, no_progress_bar, file_mode) + + def single_file_download(self, from_info, to_info, name, no_progress_bar, file_mode): + logger.debug("Downloading '{}' to '{}'".format(from_info, to_info)) name = name or to_info.name - makedirs(to_info.parent, exist_ok=True, mode=dir_mode) tmp_file = tmp_fname(to_info) try: @@ -567,6 +576,7 @@ class RemoteBASE(object): return 0 + def open(self, path_info, mode="r", encoding=None): if hasattr(self, "_generate_download_url"): get_url = partial(self._generate_download_url, path_info)