remote: show default when run "dvc remote list" (#10711)

* remote: show default when run "dvc remote list"

Fixes #10708

* Indent other remotes if there is a default remote

Now regardless of whether there is a default remote or not, all remotes are equally indented

* stricter test for listing remotes shows default

* Rewrite dvc remote list implemetation

- Default remote is indicated at end of the output and colored green
- Remotes no longer reordered to show default first
- Test updated to reflect changes and remove need for function escape_ansi.

---------

Co-authored-by: RMCrean <[email protected]>
This commit is contained in:
Rory Crean
2025-04-07 09:02:09 +05:45
committed by GitHub
co-authored by RMCrean
parent 31270c14e3
commit e455ee69aa
2 changed files with 23 additions and 1 deletions
+9 -1
View File
@@ -110,8 +110,16 @@ class CmdRemoteDefault(CmdRemote):
class CmdRemoteList(CmdRemote):
def run(self):
conf = self.config.read(self.args.level)
default_remote = conf["core"].get("remote")
for name, remote_conf in conf["remote"].items():
ui.write(name, remote_conf["url"], sep="\t")
if name == default_remote:
text = f"{name}\t{remote_conf['url']}\t(default)"
color = "green"
else:
text = f"{name}\t{remote_conf['url']}"
color = ""
ui.write(ui.rich_text(text, style=color), styled=True)
return 0
+14
View File
@@ -115,6 +115,20 @@ def test_show_default(dvc, capsys):
assert out == "foo\n"
def test_list_shows_default(dvc, capsys):
default_remote = "foo"
other_remote = "bar"
bucket_url = "s3://bucket/name"
assert main(["remote", "add", default_remote, bucket_url]) == 0
assert main(["remote", "add", other_remote, bucket_url]) == 0
assert main(["remote", "default", default_remote]) == 0
assert main(["remote", "list"]) == 0
out, _ = capsys.readouterr()
out_lines = out.splitlines()
assert out_lines[0].split() == [default_remote, bucket_url, "(default)"]
assert out_lines[1].split() == [other_remote, bucket_url]
def test_upper_case_remote(tmp_dir, dvc, local_cloud):
remote_name = "UPPERCASEREMOTE"