2
2
// Licensed under the GNU Affero General Public License (AGPL).
3
3
// See License-AGPL.txt in the project root for license information.
4
4
5
- package supervisor
5
+ package supervisor_helper
6
6
7
7
import (
8
8
"context"
@@ -12,7 +12,7 @@ import (
12
12
"syscall"
13
13
14
14
"github.com/creack/pty"
15
- "github.com/gitpod-io/gitpod/supervisor/api"
15
+ supervisor "github.com/gitpod-io/gitpod/supervisor/api"
16
16
log "github.com/sirupsen/logrus"
17
17
"golang.org/x/term"
18
18
)
@@ -23,9 +23,9 @@ type AttachToTerminalOpts struct {
23
23
Token string
24
24
}
25
25
26
- func AttachToTerminal (ctx context.Context , client api .TerminalServiceClient , alias string , opts AttachToTerminalOpts ) {
26
+ func AttachToTerminal (ctx context.Context , client supervisor .TerminalServiceClient , alias string , opts AttachToTerminalOpts ) {
27
27
// Copy to stdout/stderr
28
- listen , err := client .Listen (ctx , & api .ListenTerminalRequest {
28
+ listen , err := client .Listen (ctx , & supervisor .ListenTerminalRequest {
29
29
Alias : alias ,
30
30
})
31
31
if err != nil {
@@ -50,7 +50,7 @@ func AttachToTerminal(ctx context.Context, client api.TerminalServiceClient, ali
50
50
// Set stdin in raw mode.
51
51
oldState , err := term .MakeRaw (int (os .Stdin .Fd ()))
52
52
if err != nil {
53
- panic (err )
53
+ log . WithError (err ). Fatal ( "cannot attach to terminal" )
54
54
}
55
55
defer func () { _ = term .Restore (int (os .Stdin .Fd ()), oldState ) }() // Best effort.
56
56
@@ -66,9 +66,9 @@ func AttachToTerminal(ctx context.Context, client api.TerminalServiceClient, ali
66
66
continue
67
67
}
68
68
69
- req := & api .SetTerminalSizeRequest {
69
+ req := & supervisor .SetTerminalSizeRequest {
70
70
Alias : alias ,
71
- Size : & api .TerminalSize {
71
+ Size : & supervisor .TerminalSize {
72
72
Cols : uint32 (size .Cols ),
73
73
Rows : uint32 (size .Rows ),
74
74
WidthPx : uint32 (size .X ),
@@ -78,10 +78,10 @@ func AttachToTerminal(ctx context.Context, client api.TerminalServiceClient, ali
78
78
79
79
var expectResize bool
80
80
if opts .ForceResize {
81
- req .Priority = & api .SetTerminalSizeRequest_Force {Force : true }
81
+ req .Priority = & supervisor .SetTerminalSizeRequest_Force {Force : true }
82
82
expectResize = true
83
83
} else if opts .Token != "" {
84
- req .Priority = & api .SetTerminalSizeRequest_Token {Token : opts .Token }
84
+ req .Priority = & supervisor .SetTerminalSizeRequest_Token {Token : opts .Token }
85
85
expectResize = true
86
86
}
87
87
@@ -100,7 +100,7 @@ func AttachToTerminal(ctx context.Context, client api.TerminalServiceClient, ali
100
100
for {
101
101
n , err := os .Stdin .Read (buf )
102
102
if n > 0 {
103
- _ , serr := client .Write (ctx , & api .WriteTerminalRequest {Alias : alias , Stdin : buf [:n ]})
103
+ _ , serr := client .Write (ctx , & supervisor .WriteTerminalRequest {Alias : alias , Stdin : buf [:n ]})
104
104
if serr != nil {
105
105
errchan <- err
106
106
return
@@ -127,3 +127,12 @@ func AttachToTerminal(ctx context.Context, client api.TerminalServiceClient, ali
127
127
case <- stopch :
128
128
}
129
129
}
130
+
131
+ func GetTerminalServiceClient (ctx context.Context ) (supervisor.TerminalServiceClient , error ) {
132
+ conn , err := Dial (ctx )
133
+ if err != nil {
134
+ return nil , err
135
+ }
136
+ terminalClient := supervisor .NewTerminalServiceClient (conn )
137
+ return terminalClient , nil
138
+ }
0 commit comments