Show symbolic links in uv python list (#5343)

## Summary

This PR displays symbolic links in `uv python list` and produces output
similar to the following:

```
:) uv python list --preview
cpython-3.12.1-macos-aarch64-none     /Users/eth/workspace/astral-sh/uv/bin/python3.12 -> versions/cpython@3.12.1/install/bin/python3
cpython-3.12.1-macos-aarch64-none     /Users/eth/workspace/astral-sh/uv/bin/python3 -> versions/cpython@3.12.1/install/bin/python3
cpython-3.12.1-macos-aarch64-none     /Users/eth/workspace/astral-sh/uv/bin/python -> versions/cpython@3.12.1/install/bin/python3
cpython-3.11.7-macos-aarch64-none     /Users/eth/workspace/astral-sh/uv/bin/python3.11 -> versions/cpython@3.11.7/install/bin/python3
cpython-3.10.13-macos-aarch64-none    /Users/eth/workspace/astral-sh/uv/bin/python3.10 -> versions/cpython@3.10.13/install/bin/python3
cpython-3.9.18-macos-aarch64-none     /Users/eth/workspace/astral-sh/uv/bin/python3.9 -> versions/cpython@3.9.18/install/bin/python3
cpython-3.8.18-macos-aarch64-none     /Users/eth/workspace/astral-sh/uv/bin/python3.8 -> versions/cpython@3.8.18/install/bin/python3

```


Resolves #5308 

## Test Plan

```
$ cargo run python list
```
This commit is contained in:
eth3lbert 2024-07-24 00:41:29 +08:00 committed by GitHub
parent 0f8186d9ad
commit e05d653a71
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -142,11 +142,21 @@ pub(crate) async fn list(
for (key, path) in include {
let key = key.to_string();
if let Some(path) = path {
writeln!(
printer.stdout(),
"{key:width$} {}",
path.user_display().cyan()
)?;
let is_symlink = fs_err::symlink_metadata(path)?.is_symlink();
if is_symlink {
writeln!(
printer.stdout(),
"{key:width$} {} -> {}",
path.user_display().cyan(),
path.read_link()?.user_display().cyan()
)?;
} else {
writeln!(
printer.stdout(),
"{key:width$} {}",
path.user_display().cyan()
)?;
}
} else {
writeln!(
printer.stdout(),