azext_iot/common/fileops.py (37 lines of code) (raw):

# coding=utf-8 # -------------------------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. See License.txt in the project root for license information. # -------------------------------------------------------------------------------------------- from os import makedirs, remove, listdir from os.path import exists, join from pathlib import PurePath from typing import Union from azure.cli.core.azclierror import FileOperationError """ fileops: Functions for working with files. """ def write_content_to_file( content: Union[str, bytes], destination: str, file_name: str, overwrite: bool = False, ): dest_path = PurePath(destination) file_path = dest_path.joinpath(file_name) if exists(file_path) and not overwrite: raise FileOperationError(f"File already exists at path: {file_path}") if overwrite and destination: makedirs(destination, exist_ok=True) write_content = bytes(content, "utf-8") if isinstance(content, str) else content with open(file_path, "wb") as f: f.write(write_content) def tar_directory( target_directory: str, tarfile_path: str, tarfile_name: str, overwrite: bool = False, ): full_path = join(tarfile_path, f"{tarfile_name}.tgz") if exists(full_path): if not overwrite: raise FileOperationError(f"File {full_path} already exists") remove(full_path) if not exists(tarfile_path): makedirs(tarfile_path, exist_ok=overwrite) import tarfile with tarfile.open(full_path, "w:gz") as tar: for file_name in listdir(target_directory): tar.add(join(target_directory, file_name), file_name)