|
1 | 1 | package cmd |
2 | 2 |
|
3 | 3 | import ( |
| 4 | + "github.com/dtvem/dtvem/src/internal/config" |
4 | 5 | "github.com/dtvem/dtvem/src/internal/runtime" |
5 | 6 | "github.com/dtvem/dtvem/src/internal/ui" |
6 | 7 | "github.com/spf13/cobra" |
7 | 8 | ) |
8 | 9 |
|
| 10 | +// Version indicator emojis |
| 11 | +const ( |
| 12 | + globalIndicator = "🌐" |
| 13 | + localIndicator = "📍" |
| 14 | +) |
| 15 | + |
9 | 16 | var listCmd = &cobra.Command{ |
10 | 17 | Use: "list [runtime]", |
11 | 18 | Short: "List installed versions", |
@@ -49,15 +56,13 @@ func listAllRuntimes() { |
49 | 56 | } |
50 | 57 |
|
51 | 58 | hasAny = true |
| 59 | + runtimeName := provider.Name() |
52 | 60 | globalVersion, _ := provider.GlobalVersion() |
| 61 | + localVersion, _ := config.LocalVersion(runtimeName) |
53 | 62 |
|
54 | 63 | ui.Printf(" %s:\n", ui.Highlight(provider.DisplayName())) |
55 | 64 | for _, v := range versions { |
56 | | - if v.String() == globalVersion { |
57 | | - ui.Printf(" %s (global)\n", ui.HighlightVersion(v.String())) |
58 | | - } else { |
59 | | - ui.Printf(" %s\n", ui.HighlightVersion(v.String())) |
60 | | - } |
| 65 | + printVersionLine(v.String(), globalVersion, localVersion) |
61 | 66 | } |
62 | 67 | } |
63 | 68 |
|
@@ -89,13 +94,37 @@ func listSingleRuntime(runtimeName string) { |
89 | 94 | } |
90 | 95 |
|
91 | 96 | globalVersion, _ := provider.GlobalVersion() |
| 97 | + localVersion, _ := config.LocalVersion(runtimeName) |
92 | 98 |
|
93 | 99 | for _, v := range versions { |
94 | | - if v.String() == globalVersion { |
95 | | - ui.Printf(" %s (global)\n", ui.HighlightVersion(v.String())) |
96 | | - } else { |
97 | | - ui.Printf(" %s\n", ui.HighlightVersion(v.String())) |
98 | | - } |
| 100 | + printVersionLine(v.String(), globalVersion, localVersion) |
| 101 | + } |
| 102 | +} |
| 103 | + |
| 104 | +// printVersionLine prints a single version with appropriate indicators and colors |
| 105 | +// Active version (local > global) is shown in green |
| 106 | +// Indicators: 🌐 for global, 📍 for local |
| 107 | +func printVersionLine(version, globalVersion, localVersion string) { |
| 108 | + isGlobal := version == globalVersion |
| 109 | + isLocal := version == localVersion |
| 110 | + |
| 111 | + // Determine if this is the active version (local takes priority over global) |
| 112 | + isActive := isLocal || (isGlobal && localVersion == "") |
| 113 | + |
| 114 | + // Build the indicator string |
| 115 | + var indicators string |
| 116 | + if isLocal { |
| 117 | + indicators += " " + localIndicator |
| 118 | + } |
| 119 | + if isGlobal { |
| 120 | + indicators += " " + globalIndicator |
| 121 | + } |
| 122 | + |
| 123 | + // Format and print |
| 124 | + if isActive { |
| 125 | + ui.Printf(" %s%s\n", ui.ActiveVersion(version), indicators) |
| 126 | + } else { |
| 127 | + ui.Printf(" %s%s\n", version, indicators) |
99 | 128 | } |
100 | 129 | } |
101 | 130 |
|
|
0 commit comments