示例#1
0
def write_sources_to_disk(package: Package, package_dir: Path,
                          ipfs_backend: BaseIPFSBackend) -> None:
    sources = resolve_sources(package, ipfs_backend)
    for path, source_contents in sources.items():
        target_file = package_dir / SRC_DIR_NAME / path
        target_dir = target_file.parent
        if not target_dir.is_dir():
            target_dir.mkdir(parents=True)
        target_file.touch()
        validate_parent_directory((package_dir / SRC_DIR_NAME), target_file)
        target_file.write_text(source_contents)
示例#2
0
def write_build_deps_to_disk(pkg: Package, pkg_dir: Path,
                             ipfs_backend: BaseIPFSBackend) -> None:
    if "build_dependencies" in pkg.manifest:
        child_ethpm_dir = pkg_dir / ETHPM_PACKAGES_DIR
        child_ethpm_dir.mkdir()
        for name, uri in pkg.manifest["build_dependencies"].items():
            dep_pkg = Package(Namespace(uri=uri, alias=""), ipfs_backend)
            tmp_dep_dir = child_ethpm_dir / name
            tmp_dep_dir.mkdir()
            validate_parent_directory(pkg_dir, tmp_dep_dir)
            write_pkg_installation_files(dep_pkg, tmp_dep_dir, ipfs_backend)
示例#3
0
def install_package(pkg: Package, config: Config) -> None:
    if is_package_installed(pkg.alias, config):
        raise InstallError(
            f"Installation conflict: Package: '{pkg.manifest['package_name']}' "
            f"aliased to '{pkg.alias}' already installed on the filesystem at "
            f"{config.ethpm_dir / pkg.alias}. Try installing this package with "
            "a different alias.")

    # Create temporary package directory
    tmp_pkg_dir = Path(tempfile.mkdtemp())
    write_pkg_installation_files(pkg, tmp_pkg_dir, config.ipfs_backend)

    # Copy temp package directory to ethpm dir namespace
    dest_pkg_dir = config.ethpm_dir / pkg.alias
    validate_parent_directory(config.ethpm_dir, dest_pkg_dir)
    shutil.copytree(tmp_pkg_dir, dest_pkg_dir)
    install_to_ethpm_lock(pkg, (config.ethpm_dir / LOCKFILE_NAME))