4
4
tea "github.com/charmbracelet/bubbletea"
5
5
"github.com/gvcgo/goutils/pkgs/gtea/gprint"
6
6
"github.com/gvcgo/version-manager/internal/download"
7
+ "github.com/gvcgo/version-manager/internal/installer/install"
7
8
"github.com/gvcgo/version-manager/internal/terminal"
8
9
"github.com/gvcgo/version-manager/internal/tui/table"
9
10
"github.com/gvcgo/version-manager/internal/utils"
@@ -17,6 +18,7 @@ const (
17
18
KeyEventRemoveLocalInstalled = "remove-installed-versions"
18
19
KeyEventClearLocalCached = "clear-local-cached-files"
19
20
KeyEventBacktoPreviousPage = "back-to-previous-page"
21
+ KeyEventWhatsInstalled = "show-installed-sdks"
20
22
)
21
23
22
24
/*
@@ -75,6 +77,41 @@ func (v *SDKSearcher) Show() (nextEvent, selectedItem string) {
75
77
return
76
78
}
77
79
80
+ func (v * SDKSearcher ) ShowInstalledOnly () (nextEvent , selectedItem string ) {
81
+ ll := table .NewList ()
82
+ ll .SetListType (table .SDKList )
83
+ v .RegisterKeyEvents (ll )
84
+
85
+ _ , w , _ := terminal .GetTerminalSize ()
86
+ if w > 30 {
87
+ w -= 30
88
+ } else {
89
+ w = 120
90
+ }
91
+ ll .SetHeader ([]table.Column {
92
+ {Title : "installed sdk" , Width : 20 },
93
+ {Title : "homepage" , Width : w },
94
+ })
95
+ rows := download .GetSDKSortedRows (v .SdkList )
96
+
97
+ installedRows := []table.Row {}
98
+ for _ , r := range rows {
99
+ if install .IsSDKInstalledByVMR (r [0 ]) {
100
+ installedRows = append (installedRows , r )
101
+ }
102
+ }
103
+ if len (installedRows ) == 0 {
104
+ gprint .PrintWarning ("no installed sdk found!" )
105
+ return
106
+ }
107
+ ll .SetRows (installedRows )
108
+ ll .Run ()
109
+
110
+ selectedItem = ll .GetSelected ()
111
+ nextEvent = ll .NextEvent
112
+ return
113
+ }
114
+
78
115
func (v * SDKSearcher ) RegisterKeyEvents (ll * table.List ) {
79
116
// Open homepage.
80
117
ll .SetKeyEventForTable ("o" , table.KeyEvent {
@@ -121,4 +158,11 @@ func (v *SDKSearcher) RegisterKeyEvents(ll *table.List) {
121
158
},
122
159
HelpInfo : "clear all local cached files of the selected sdk" ,
123
160
})
161
+ ll .SetKeyEventForTable ("w" , table.KeyEvent {
162
+ Event : func (key string , l * table.List ) tea.Cmd {
163
+ l .NextEvent = KeyEventWhatsInstalled
164
+ return tea .Quit
165
+ },
166
+ HelpInfo : "show the list of sdks installed by VMR on your system" ,
167
+ })
124
168
}
0 commit comments