get: update show-url to take remote args

This commit is contained in:
dberenbaum
2024-03-11 09:47:05 -04:00
committed by Dave Berenbaum
parent 6bdf41a217
commit 377d0c9d58
3 changed files with 31 additions and 10 deletions
+2 -7
View File
@@ -25,7 +25,7 @@ def _wrap_exceptions(repo, url):
raise PathMissingError(exc.path, url) from exc
def get_url(path, repo=None, rev=None, remote=None):
def get_url(path, repo=None, rev=None, **kwargs):
"""
Returns the URL to the storage location of a data file or directory tracked
in a DVC repo. For Git repos, HEAD is used unless a rev argument is
@@ -39,12 +39,7 @@ def get_url(path, repo=None, rev=None, remote=None):
from dvc.config import NoRemoteError
from dvc_data.index import StorageKeyError
repo_kwargs: dict[str, Any] = {}
if remote:
repo_kwargs["config"] = {"core": {"remote": remote}}
with Repo.open(
repo, rev=rev, subrepos=True, uninitialized=True, **repo_kwargs
) as _repo:
with Repo.open(repo, rev=rev, subrepos=True, uninitialized=True, **kwargs) as _repo:
index, entry = _repo.get_data_index_entry(path)
with reraise(
(StorageKeyError, ValueError),
+7 -1
View File
@@ -12,7 +12,13 @@ class CmdGet(CmdBaseNoRepo):
from dvc.api import get_url
from dvc.ui import ui
url = get_url(self.args.path, repo=self.args.url, rev=self.args.rev)
url = get_url(
self.args.path,
repo=self.args.url,
rev=self.args.rev,
remote=self.args.remote,
remote_config=self.args.remote_config,
)
ui.write(url, force=True)
return 0
+22 -2
View File
@@ -44,7 +44,21 @@ def test_get(mocker):
def test_get_url(mocker, capsys):
cli_args = parse_args(["get", "repo_url", "src", "--rev", "version", "--show-url"])
cli_args = parse_args(
[
"get",
"repo_url",
"src",
"--rev",
"version",
"--remote",
"myremote",
"--show-url",
"--remote-config",
"k1=v1",
"k2=v2",
]
)
assert cli_args.func == CmdGet
cmd = cli_args.func(cli_args)
@@ -54,4 +68,10 @@ def test_get_url(mocker, capsys):
out, _ = capsys.readouterr()
assert "resource_url" in out
m.assert_called_once_with("src", repo="repo_url", rev="version")
m.assert_called_once_with(
"src",
repo="repo_url",
rev="version",
remote="myremote",
remote_config={"k1": "v1", "k2": "v2"},
)