Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions dvc/cli/completion.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@
local _dvc_remotes=($(dvc remote list | cut -d' ' -f1))
compgen -W "${_dvc_remotes[*]}" -- $1
}

_dvc_compgen_config_vars() {
compgen -W "${_dvc_config_vars[*]}" -- $1
}
"""

ZSH_PREAMBLE = """
Expand Down Expand Up @@ -64,6 +68,10 @@
_dvc_compadd_remotes() {
_describe 'remotes' "($(dvc remote list | cut -d' ' -f1))"
}

_dvc_compadd_config_vars() {
_describe 'config_vars' _dvc_config_vars
}
"""

PREAMBLE = {
Expand All @@ -81,3 +89,21 @@
}
EXPERIMENT = {"bash": "_dvc_compgen_exps", "zsh": "_dvc_compadd_exps"}
REMOTE = {"bash": "_dvc_compgen_remotes", "zsh": "_dvc_compadd_remotes"}
CONFIG_VARS = {"bash": "_dvc_compgen_config_vars", "zsh": "_dvc_compadd_config_vars"}


def get_preamble() -> dict[str, str]:
from dvc.config_schema import config_vars_for_completion

ret: dict[str, str] = {}
config_vars = list(config_vars_for_completion())

nl = "\n\t".expandtabs(4)
config_vars_arr = f"""
_dvc_config_vars=(
{nl.join(config_vars)}
)
"""
for shell, preamble in PREAMBLE.items():
ret[shell] = config_vars_arr + preamble
return ret
4 changes: 2 additions & 2 deletions dvc/commands/completion.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from dvc.cli import formatter
from dvc.cli.command import CmdBaseNoRepo
from dvc.cli.completion import PREAMBLE
from dvc.cli.completion import get_preamble
from dvc.cli.utils import append_doc_link
from dvc.log import logger
from dvc.ui import ui
Expand All @@ -17,7 +17,7 @@ def run(self):

shell = self.args.shell
parser = self.args.parser
script = shtab.complete(parser, shell=shell, preamble=PREAMBLE)
script = shtab.complete(parser, shell=shell, preamble=get_preamble())
ui.write(script, force=True)
return 0

Expand Down
4 changes: 2 additions & 2 deletions dvc/commands/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

from funcy import set_in

from dvc.cli import formatter
from dvc.cli import completion, formatter
from dvc.cli.command import CmdBaseNoRepo
from dvc.cli.utils import append_doc_link
from dvc.log import logger
Expand Down Expand Up @@ -224,7 +224,7 @@ def add_parser(subparsers, parent_parser):
nargs="?",
type=_name_type,
help="Option name (section.option or remote.name.option).",
)
).complete = completion.CONFIG_VARS
config_parser.add_argument("value", nargs="?", help="Option value.")
config_parser.add_argument(
"-l",
Expand Down
Loading
Loading