def upload_conan(self, conan_reference, the_files): """ the_files: dict with relative_path: content """ self.check_credentials() # Get the remote snapshot remote_snapshot = self._get_conan_snapshot(conan_reference) local_snapshot = { filename: md5(content) for filename, content in the_files.iteritems() } # Get the diff new, modified, deleted = diff_snapshots(local_snapshot, remote_snapshot) files_to_upload = { filename.replace("\\", "/"): the_files[filename] for filename in new + modified } if files_to_upload: # Get the upload urls url = "%s/conans/%s/upload_urls" % (self._remote_api_url, "/".join(conan_reference)) filesizes = { filename.replace("\\", "/"): len(content) for filename, content in files_to_upload.iteritems() } urls = self._get_json(url, data=filesizes) self.upload_files(urls, files_to_upload, self._output) if deleted: self.remove_conanfile_files(conan_reference, deleted)
def upload_package(self, package_reference, the_files): """ basedir: Base directory with the files to upload (for read the files in disk) relative_files: relative paths to upload """ self.check_credentials() # Get the remote snapshot remote_snapshot = self._get_package_snapshot(package_reference) local_snapshot = {filename: md5(content) for filename, content in the_files.items()} # Get the diff new, modified, deleted = diff_snapshots(local_snapshot, remote_snapshot) files_to_upload = {filename: the_files[filename] for filename in new + modified} if files_to_upload: # Obtain upload urls url = "%s/conans/%s/packages/%s/upload_urls" % (self._remote_api_url, "/".join(package_reference.conan), package_reference.package_id) filesizes = {filename: len(content) for filename, content in files_to_upload.items()} self._output.rewrite_line("Requesting upload permissions...") urls = self._get_json(url, data=filesizes) self._output.rewrite_line("Requesting upload permissions...Done!") self._output.writeln("") self.upload_files(urls, files_to_upload, self._output) else: self._output.rewrite_line("Package is up to date.") self._output.writeln("") if deleted: self.remove_package_files(package_reference, deleted)
def upload_recipe(self, conan_reference, the_files, retry, retry_wait, ignore_deleted_file): """ the_files: dict with relative_path: content """ self.check_credentials() # Get the remote snapshot remote_snapshot = self._get_conan_snapshot(conan_reference) local_snapshot = {filename: md5sum(abs_path) for filename, abs_path in the_files.items()} # Get the diff new, modified, deleted = diff_snapshots(local_snapshot, remote_snapshot) if ignore_deleted_file and ignore_deleted_file in deleted: deleted.remove(ignore_deleted_file) files_to_upload = {filename.replace("\\", "/"): the_files[filename] for filename in new + modified} if files_to_upload: # Get the upload urls url = "%s/conans/%s/upload_urls" % (self._remote_api_url, "/".join(conan_reference)) filesizes = {filename.replace("\\", "/"): os.stat(abs_path).st_size for filename, abs_path in files_to_upload.items()} urls = self._get_json(url, data=filesizes) self.upload_files(urls, files_to_upload, self._output, retry, retry_wait) if deleted: self._remove_conanfile_files(conan_reference, deleted)
def upload_package(self, package_reference, the_files, retry, retry_wait, no_overwrite): """ basedir: Base directory with the files to upload (for read the files in disk) relative_files: relative paths to upload """ self.check_credentials() t1 = time.time() # Get the remote snapshot remote_snapshot = self._get_package_snapshot(package_reference) local_snapshot = { filename: md5sum(abs_path) for filename, abs_path in the_files.items() } # Get the diff new, modified, deleted = diff_snapshots(local_snapshot, remote_snapshot) if not new and not deleted and modified in (["conanmanifest.txt"], []): return False if no_overwrite and remote_snapshot: if no_overwrite == "all": raise ConanException( "Local package is different from the remote package. " "Forbidden overwrite") files_to_upload = { filename: the_files[filename] for filename in new + modified } if files_to_upload: # Obtain upload urls url = "%s/conans/%s/packages/%s/upload_urls" % ( self.remote_api_url, "/".join( package_reference.conan), package_reference.package_id) filesizes = { filename: os.stat(abs_path).st_size for filename, abs_path in files_to_upload.items() } self._output.rewrite_line("Requesting upload permissions...") urls = self._get_file_to_url_dict(url, data=filesizes) self._output.rewrite_line("Requesting upload permissions...Done!") self._output.writeln("") self._upload_files(urls, files_to_upload, self._output, retry, retry_wait) if deleted: raise Exception( "This shouldn't be happening, deleted files " "in local package present in remote: %s.\n Please, report it at " "https://github.com/conan-io/conan/issues " % str(deleted)) logger.debug("====> Time rest client upload_package: %f" % (time.time() - t1)) return files_to_upload or deleted
def upload_recipe(self, conan_reference, the_files, retry, retry_wait, ignore_deleted_file, no_overwrite): """ the_files: dict with relative_path: content """ self.check_credentials() # Get the remote snapshot remote_snapshot = self._get_conan_snapshot(conan_reference) local_snapshot = { filename: md5sum(abs_path) for filename, abs_path in the_files.items() } # Get the diff new, modified, deleted = diff_snapshots(local_snapshot, remote_snapshot) if ignore_deleted_file and ignore_deleted_file in deleted: deleted.remove(ignore_deleted_file) if not new and not deleted and modified in (["conanmanifest.txt"], []): return False if no_overwrite and remote_snapshot: if no_overwrite in ("all", "recipe"): raise ConanException( "Local recipe is different from the remote recipe. " "Forbidden overwrite") files_to_upload = { filename.replace("\\", "/"): the_files[filename] for filename in new + modified } if files_to_upload: # Get the upload urls url = "%s/conans/%s/upload_urls" % (self._remote_api_url, "/".join(conan_reference)) filesizes = { filename.replace("\\", "/"): os.stat(abs_path).st_size for filename, abs_path in files_to_upload.items() } urls = self._get_file_to_url_dict(url, data=filesizes) self.upload_files(urls, files_to_upload, self._output, retry, retry_wait) if deleted: self._remove_conanfile_files(conan_reference, deleted) return files_to_upload or deleted
def upload_package(self, package_reference, the_files, retry, retry_wait): """ basedir: Base directory with the files to upload (for read the files in disk) relative_files: relative paths to upload """ self.check_credentials() t1 = time.time() # Get the remote snapshot remote_snapshot = self._get_package_snapshot(package_reference) local_snapshot = { filename: md5sum(abs_path) for filename, abs_path in the_files.items() } # Get the diff new, modified, deleted = diff_snapshots(local_snapshot, remote_snapshot) if not new and not deleted and modified == ["conanmanifest.txt"]: return False files_to_upload = { filename: the_files[filename] for filename in new + modified } if files_to_upload: # Obtain upload urls url = "%s/conans/%s/packages/%s/upload_urls" % ( self._remote_api_url, "/".join( package_reference.conan), package_reference.package_id) filesizes = { filename: os.stat(abs_path).st_size for filename, abs_path in files_to_upload.items() } self._output.rewrite_line("Requesting upload permissions...") urls = self._get_json(url, data=filesizes) self._output.rewrite_line("Requesting upload permissions...Done!") self._output.writeln("") self.upload_files(urls, files_to_upload, self._output, retry, retry_wait) if deleted: self._remove_package_files(package_reference, deleted) logger.debug("====> Time rest client upload_package: %f" % (time.time() - t1)) return files_to_upload or deleted
def upload_conan(self, conan_reference, the_files): """ the_files: dict with relative_path: content """ self.check_credentials() # Get the remote snapshot remote_snapshot = self._get_conan_snapshot(conan_reference) local_snapshot = {filename: md5(content) for filename, content in the_files.items()} # Get the diff new, modified, deleted = diff_snapshots(local_snapshot, remote_snapshot) files_to_upload = {filename.replace("\\", "/"): the_files[filename] for filename in new + modified} if files_to_upload: # Get the upload urls url = "%s/conans/%s/upload_urls" % (self._remote_api_url, "/".join(conan_reference)) filesizes = {filename.replace("\\", "/"): len(content) for filename, content in files_to_upload.items()} urls = self._get_json(url, data=filesizes) self.upload_files(urls, files_to_upload, self._output) if deleted: self.remove_conanfile_files(conan_reference, deleted)
def upload_package(self, package_reference, the_files, retry, retry_wait, no_overwrite): """ basedir: Base directory with the files to upload (for read the files in disk) relative_files: relative paths to upload """ self.check_credentials() t1 = time.time() # Get the remote snapshot remote_snapshot = self._get_package_snapshot(package_reference) local_snapshot = {filename: md5sum(abs_path) for filename, abs_path in the_files.items()} # Get the diff new, modified, deleted = diff_snapshots(local_snapshot, remote_snapshot) if not new and not deleted and modified in (["conanmanifest.txt"], []): return False if no_overwrite and remote_snapshot: if no_overwrite in ("all"): raise ConanException("Local package is different from the remote package. " "Forbbiden overwrite") files_to_upload = {filename: the_files[filename] for filename in new + modified} if files_to_upload: # Obtain upload urls url = "%s/conans/%s/packages/%s/upload_urls" % (self._remote_api_url, "/".join(package_reference.conan), package_reference.package_id) filesizes = {filename: os.stat(abs_path).st_size for filename, abs_path in files_to_upload.items()} self._output.rewrite_line("Requesting upload permissions...") urls = self._get_file_to_url_dict(url, data=filesizes) self._output.rewrite_line("Requesting upload permissions...Done!") self._output.writeln("") self.upload_files(urls, files_to_upload, self._output, retry, retry_wait) if deleted: self._remove_package_files(package_reference, deleted) logger.debug("====> Time rest client upload_package: %f" % (time.time() - t1)) return files_to_upload or deleted
def upload_recipe(self, conan_reference, the_files, retry, retry_wait, ignore_deleted_file, no_overwrite): """ the_files: dict with relative_path: content """ self.check_credentials() # Get the remote snapshot remote_snapshot = self._get_conan_snapshot(conan_reference) local_snapshot = {filename: md5sum(abs_path) for filename, abs_path in the_files.items()} # Get the diff new, modified, deleted = diff_snapshots(local_snapshot, remote_snapshot) if ignore_deleted_file and ignore_deleted_file in deleted: deleted.remove(ignore_deleted_file) if not new and not deleted and modified in (["conanmanifest.txt"], []): return False if no_overwrite and remote_snapshot: if no_overwrite in ("all", "recipe"): raise ConanException("Local recipe is different from the remote recipe. " "Forbbiden overwrite") files_to_upload = {filename.replace("\\", "/"): the_files[filename] for filename in new + modified} if files_to_upload: # Get the upload urls url = "%s/conans/%s/upload_urls" % (self._remote_api_url, "/".join(conan_reference)) filesizes = {filename.replace("\\", "/"): os.stat(abs_path).st_size for filename, abs_path in files_to_upload.items()} urls = self._get_file_to_url_dict(url, data=filesizes) self.upload_files(urls, files_to_upload, self._output, retry, retry_wait) if deleted: self._remove_conanfile_files(conan_reference, deleted) return files_to_upload or deleted