-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Expand file tree
/
Copy pathconnect.go
More file actions
46 lines (43 loc) · 1.26 KB
/
connect.go
File metadata and controls
46 lines (43 loc) · 1.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package cli
import (
"github.com/coder/coder/v2/codersdk/workspacesdk"
"github.com/coder/serpent"
)
func (r *RootCmd) connectCmd() *serpent.Command {
cmd := &serpent.Command{
Use: "connect",
Short: "Commands related to Coder Connect (OS-level tunneled connection to workspaces).",
Handler: func(i *serpent.Invocation) error {
return i.Command.HelpHandler(i)
},
Hidden: true,
Children: []*serpent.Command{
r.existsCmd(),
},
}
return cmd
}
func (*RootCmd) existsCmd() *serpent.Command {
cmd := &serpent.Command{
Use: "exists <hostname>",
Short: "Checks if the given hostname exists via Coder Connect.",
Long: "This command is designed to be used in scripts to check if the given hostname exists via Coder " +
"Connect. It prints no output. It returns exit code 0 if it does exist and code 1 if it does not.",
Middleware: serpent.Chain(
serpent.RequireNArgs(1),
),
Handler: func(inv *serpent.Invocation) error {
hostname := inv.Args[0]
exists, err := workspacesdk.ExistsViaCoderConnect(inv.Context(), hostname)
if err != nil {
return err
}
if !exists {
// we don't want to print any output, since this command is designed to be a check in scripts / SSH config.
return ErrSilent
}
return nil
},
}
return cmd
}