asset fix & UX

This commit is contained in:
svlandeg 2020-09-10 14:36:53 +02:00
parent 4fec8c39a3
commit 3889747119

View File

@ -38,38 +38,45 @@ def project_assets(project_dir: Path) -> None:
msg.warn(f"No assets specified in {PROJECT_FILE}", exits=0) msg.warn(f"No assets specified in {PROJECT_FILE}", exits=0)
msg.info(f"Fetching {len(assets)} asset(s)") msg.info(f"Fetching {len(assets)} asset(s)")
for asset in assets: for asset in assets:
dest = Path(asset["dest"]) dest = project_dir / asset["dest"]
checksum = asset.get("checksum") checksum = asset.get("checksum")
if "git" in asset:
if dest.exists(): if dest.exists():
# If there's already a file, check for checksum # If there's already a file, check for checksum
if checksum and checksum == get_checksum(dest): if checksum and checksum == get_checksum(dest):
msg.good(f"Skipping download with matching checksum: {dest}") msg.good(f"Skipping download with matching checksum: {dest}")
continue continue
else: else:
msg.good(f"Removing asset with outdated checksum: {dest} ")
if dest.is_dir():
shutil.rmtree(dest) shutil.rmtree(dest)
else:
dest.unlink()
if "git" in asset:
git_sparse_checkout( git_sparse_checkout(
asset["git"]["repo"], asset["git"]["repo"],
asset["git"]["path"], asset["git"]["path"],
dest, dest,
branch=asset["git"].get("branch"), branch=asset["git"].get("branch"),
) )
else: elif "url" in asset:
url = asset.get("url") url = asset.get("url")
if not url: if not url:
# project.yml defines asset without URL that the user has to place # project.yml defines asset without URL that the user has to place
check_private_asset(dest, checksum) check_private_asset(dest, checksum)
continue continue
fetch_asset(project_path, url, dest, checksum) fetch_asset(project_path, url, dest, checksum)
else:
msg.warn(f"Could not fetch asset {dest} as neither a 'git' or 'url' parameter is specified.")
def check_private_asset(dest: Path, checksum: Optional[str] = None) -> None: def check_private_asset(dest: Path, checksum: Optional[str] = None) -> None:
"""Check and validate assets without a URL (private assets that the user """Check and validate assets without a URL (private assets that the user
has to provide themselves) and give feedback about the checksum. has to provide themselves) and give feedback about the checksum.
dest (Path): Desintation path of the asset. dest (Path): Destination path of the asset.
checksum (Optional[str]): Optional checksum of the expected file. checksum (Optional[str]): Optional checksum of the expected file.
""" """
print("path", dest)
if not Path(dest).exists(): if not Path(dest).exists():
err = f"No URL provided for asset. You need to add this file yourself: {dest}" err = f"No URL provided for asset. You need to add this file yourself: {dest}"
msg.warn(err) msg.warn(err)