@@ -2,6 +2,8 @@ package cli
2
2
3
3
import (
4
4
"fmt"
5
+ "reflect"
6
+ "strings"
5
7
"time"
6
8
7
9
"github.com/google/uuid"
@@ -58,10 +60,12 @@ func workspaceListRowFromWorkspace(now time.Time, usersByID map[uuid.UUID]coders
58
60
59
61
func list () * cobra.Command {
60
62
var (
61
- all bool
62
- columns []string
63
- defaultQuery = "owner:me"
64
- searchQuery string
63
+ all bool
64
+ columns []string
65
+ defaultQuery = "owner:me"
66
+ searchQuery string
67
+ me bool
68
+ displayWorkspaces []workspaceListRow
65
69
)
66
70
cmd := & cobra.Command {
67
71
Annotations : workspaceCommand ,
@@ -80,6 +84,14 @@ func list() *cobra.Command {
80
84
if all && searchQuery == defaultQuery {
81
85
filter .FilterQuery = ""
82
86
}
87
+
88
+ if me {
89
+ myUser , err := client .User (cmd .Context (), codersdk .Me )
90
+ if err != nil {
91
+ return err
92
+ }
93
+ filter .Owner = myUser .Username
94
+ }
83
95
workspaces , err := client .Workspaces (cmd .Context (), filter )
84
96
if err != nil {
85
97
return err
@@ -101,7 +113,7 @@ func list() *cobra.Command {
101
113
}
102
114
103
115
now := time .Now ()
104
- displayWorkspaces : = make ([]workspaceListRow , len (workspaces ))
116
+ displayWorkspaces = make ([]workspaceListRow , len (workspaces ))
105
117
for i , workspace := range workspaces {
106
118
displayWorkspaces [i ] = workspaceListRowFromWorkspace (now , usersByID , workspace )
107
119
}
@@ -115,10 +127,21 @@ func list() *cobra.Command {
115
127
return err
116
128
},
117
129
}
130
+
131
+ v := reflect .Indirect (reflect .ValueOf (displayWorkspaces ))
132
+ availColumns , err := cliui .TypeToTableHeaders (v .Type ().Elem ())
133
+ if err != nil {
134
+ panic (err )
135
+ }
136
+ for i , s := range availColumns {
137
+ availColumns [i ] = strings .Replace (s , " " , "_" , - 1 )
138
+ }
139
+ columnString := strings .Join (availColumns [:], ", " )
140
+
118
141
cmd .Flags ().BoolVarP (& all , "all" , "a" , false ,
119
142
"Specifies whether all workspaces will be listed or not." )
120
143
cmd .Flags ().StringArrayVarP (& columns , "column" , "c" , nil ,
121
- "Specify a column to filter in the table." )
122
- cmd .Flags ().StringVar (& searchQuery , "search" , defaultQuery , "Search for a workspace with a query." )
144
+ fmt . Sprintf ( "Specify a column to filter in the table. Available columns are: %v" , columnString ) )
145
+ cmd .Flags ().StringVar (& searchQuery , "search" , "" , "Search for a workspace with a query." )
123
146
return cmd
124
147
}
0 commit comments