Allow overriding vars in the project assets subcommand (#9248)

This change makes the `project assets` subcommand accept variables to
override as well, making the interface more similar to `project run`.
This commit is contained in:
Daniël de Kok 2021-09-21 10:49:45 +02:00 committed by GitHub
parent 00bdb31150
commit 17802836be
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,18 +1,24 @@
from typing import Optional from typing import Any, Dict, Optional
from pathlib import Path from pathlib import Path
from wasabi import msg from wasabi import msg
import re import re
import shutil import shutil
import requests import requests
import typer
from ...util import ensure_path, working_dir from ...util import ensure_path, working_dir
from .._util import project_cli, Arg, Opt, PROJECT_FILE, load_project_config from .._util import project_cli, Arg, Opt, PROJECT_FILE, load_project_config
from .._util import get_checksum, download_file, git_checkout, get_git_version from .._util import get_checksum, download_file, git_checkout, get_git_version
from .._util import SimpleFrozenDict, parse_config_overrides
@project_cli.command("assets") @project_cli.command(
"assets",
context_settings={"allow_extra_args": True, "ignore_unknown_options": True},
)
def project_assets_cli( def project_assets_cli(
# fmt: off # fmt: off
ctx: typer.Context, # This is only used to read additional arguments
project_dir: Path = Arg(Path.cwd(), help="Path to cloned project. Defaults to current working directory.", exists=True, file_okay=False), project_dir: Path = Arg(Path.cwd(), help="Path to cloned project. Defaults to current working directory.", exists=True, file_okay=False),
sparse_checkout: bool = Opt(False, "--sparse", "-S", help="Use sparse checkout for assets provided via Git, to only check out and clone the files needed. Requires Git v22.2+.") sparse_checkout: bool = Opt(False, "--sparse", "-S", help="Use sparse checkout for assets provided via Git, to only check out and clone the files needed. Requires Git v22.2+.")
# fmt: on # fmt: on
@ -24,16 +30,22 @@ def project_assets_cli(
DOCS: https://spacy.io/api/cli#project-assets DOCS: https://spacy.io/api/cli#project-assets
""" """
project_assets(project_dir, sparse_checkout=sparse_checkout) overrides = parse_config_overrides(ctx.args)
project_assets(project_dir, overrides=overrides, sparse_checkout=sparse_checkout)
def project_assets(project_dir: Path, *, sparse_checkout: bool = False) -> None: def project_assets(
project_dir: Path,
*,
overrides: Dict[str, Any] = SimpleFrozenDict(),
sparse_checkout: bool = False,
) -> None:
"""Fetch assets for a project using DVC if possible. """Fetch assets for a project using DVC if possible.
project_dir (Path): Path to project directory. project_dir (Path): Path to project directory.
""" """
project_path = ensure_path(project_dir) project_path = ensure_path(project_dir)
config = load_project_config(project_path) config = load_project_config(project_path, overrides=overrides)
assets = config.get("assets", {}) assets = config.get("assets", {})
if not assets: if not assets:
msg.warn(f"No assets specified in {PROJECT_FILE}", exits=0) msg.warn(f"No assets specified in {PROJECT_FILE}", exits=0)