summaryrefslogtreecommitdiff
path: root/src/buildstream/source.py
diff options
context:
space:
mode:
authorDarius Makovsky <traveltissues@protonmail.com>2019-10-18 11:38:31 +0100
committerDarius Makovsky <traveltissues@protonmail.com>2019-10-18 11:53:53 +0100
commit3138bf591d07ff8200669ac0bb687748fc90a42f (patch)
treef3e6792eddc85383f14092900de686555588b4c6 /src/buildstream/source.py
parent5d5ec87f81ce9787e270dadf4ccaa59f2293db2c (diff)
downloadbuildstream-traveltissues/tmp2.tar.gz
Diffstat (limited to 'src/buildstream/source.py')
-rw-r--r--src/buildstream/source.py24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/buildstream/source.py b/src/buildstream/source.py
index e9170987d..534f984be 100644
--- a/src/buildstream/source.py
+++ b/src/buildstream/source.py
@@ -163,7 +163,7 @@ Class Reference
import os
from contextlib import contextmanager
-from typing import Iterable, Iterator, Optional, Tuple, TYPE_CHECKING
+from typing import Iterable, Iterator, Optional, Tuple, TYPE_CHECKING, Union
from . import _yaml, utils
from .node import MappingNode
@@ -671,22 +671,26 @@ class Source(Plugin):
return project.directory
def stage_into_cas(self, path: str) -> Tuple[Directory, str]:
- cas_dir = self._get_cas_dir()
- self.stage_into_directory(path, cas_dir)
- return cas_dir, self._get_dir_hash(cas_dir)
+ with self.timed_activity("Staging local files into CAS"):
+ cas_dir = self._get_cas_dir()
+ self.stage_into_directory(path, cas_dir)
+ return cas_dir, self._get_dir_hash(cas_dir)
- def stage_into_directory(self, path: str, directory: Directory) -> None:
+ def stage_into_directory(self, path: Union[str, Directory], directory: Directory) -> None:
assert isinstance(directory, Directory)
- with self.timed_activity("Staging local files into CAS"):
+ assert path
+ if isinstance(path, str):
if os.path.isdir(path) and not os.path.islink(path):
result = directory.import_files(path)
else:
result = directory.import_single_file(path)
+ else:
+ result = directory.import_files(path)
- if result.overwritten or result.ignored:
- raise SourceError(
- "Failed to stage source: files clash with existing directory",
- reason='ensure-stage-dir-fail')
+ if result.overwritten or result.ignored:
+ raise SourceError(
+ "Failed to stage source: files clash with existing directory",
+ reason='ensure-stage-dir-fail')
@contextmanager
def tempdir(self) -> Iterator[str]: