mirror of
https://github.com/coder/coder.git
synced 2025-07-09 11:45:56 +00:00
This removes split ownership for workspaces. They are now a resource of organizations and have a designated owner, which is a user. This enables simple administration for commands like: - `coder stop ben/dev` - `coder build logs colin/arch` or if we decide to allow administrators to access workspaces, they could even SSH using this syntax: `coder ssh colin/dev`.
52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
package cli
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/spf13/cobra"
|
|
|
|
"github.com/coder/coder/codersdk"
|
|
)
|
|
|
|
func workspaces() *cobra.Command {
|
|
cmd := &cobra.Command{
|
|
Use: "workspaces",
|
|
Aliases: []string{"ws"},
|
|
}
|
|
cmd.AddCommand(workspaceCreate())
|
|
cmd.AddCommand(workspaceDelete())
|
|
cmd.AddCommand(workspaceList())
|
|
cmd.AddCommand(workspaceShow())
|
|
cmd.AddCommand(workspaceStop())
|
|
cmd.AddCommand(workspaceStart())
|
|
cmd.AddCommand(ssh())
|
|
cmd.AddCommand(workspaceUpdate())
|
|
cmd.AddCommand(workspaceAutostart())
|
|
cmd.AddCommand(workspaceAutostop())
|
|
|
|
return cmd
|
|
}
|
|
|
|
func validArgsWorkspaceName(cmd *cobra.Command, _ []string, toComplete string) ([]string, cobra.ShellCompDirective) {
|
|
client, err := createClient(cmd)
|
|
if err != nil {
|
|
return nil, cobra.ShellCompDirectiveError
|
|
}
|
|
organization, err := currentOrganization(cmd, client)
|
|
if err != nil {
|
|
return nil, cobra.ShellCompDirectiveError
|
|
}
|
|
workspaces, err := client.WorkspacesByOwner(cmd.Context(), organization.ID, codersdk.Me)
|
|
if err != nil {
|
|
return nil, cobra.ShellCompDirectiveError
|
|
}
|
|
names := make([]string, 0)
|
|
for _, workspace := range workspaces {
|
|
if !strings.HasPrefix(workspace.Name, toComplete) {
|
|
continue
|
|
}
|
|
names = append(names, workspace.Name)
|
|
}
|
|
return names, cobra.ShellCompDirectiveDefault
|
|
}
|