def save(self): if not self.use_cache: super(OutputLOCAL, self).save() self._verify_metric() msg = 'Output \'{}\' doesn\'t use cache. Skipping saving.' self.project.logger.info(msg.format(self.rel_path)) return if not os.path.exists(self.path): raise self.DoesNotExistError(self.rel_path) if not os.path.isfile(self.path) \ and not os.path.isdir(self.path): # pragma: no cover raise self.IsNotFileOrDirError(self.rel_path) if (os.path.isfile(self.path) and os.path.getsize(self.path) == 0) or \ (os.path.isdir(self.path) and len(os.listdir(self.path)) == 0): msg = "File/directory '{}' is empty.".format(self.rel_path) self.project.logger.warn(msg) if not self.changed(): msg = 'Output \'{}\' didn\'t change. Skipping saving.' self.project.logger.info(msg.format(self.rel_path)) return if self.is_local: if self.project.scm.is_tracked(self.path): raise OutputAlreadyTrackedError(self.rel_path) if self.use_cache: self.project.scm.ignore(self.path) self.info = self.project.cache.local.save(self.path_info)
def save(self): if not os.path.exists(self.path): raise self.DoesNotExistError(self.rel_path) if not os.path.isfile(self.path) and not os.path.isdir(self.path): raise self.IsNotFileOrDirError(self.rel_path) if (os.path.isfile(self.path) and os.path.getsize(self.path) == 0) or ( os.path.isdir(self.path) and len(os.listdir(self.path)) == 0): msg = "file/directory '{}' is empty.".format(self.rel_path) logger.warning(msg) if not self.use_cache: self.info = self.remote.save_info(self.path_info) self._verify_metric() if not self.IS_DEPENDENCY: msg = "Output '{}' doesn't use cache. Skipping saving." logger.info(msg.format(self.rel_path)) return assert not self.IS_DEPENDENCY if not self.changed(): msg = "Output '{}' didn't change. Skipping saving." logger.info(msg.format(self.rel_path)) return if self.is_local: if self.project.scm.is_tracked(self.path): raise OutputAlreadyTrackedError(self.rel_path) if self.use_cache: self.project.scm.ignore(self.path) self.info = self.project.cache.local.save(self.path_info)