Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
gitpod-io
GitHub Repository: gitpod-io/gitpod
Path: blob/main/dev/gpctl/cmd/imagebuilds-logs.go
2498 views
1
// Copyright (c) 2020 Gitpod GmbH. All rights reserved.
2
// Licensed under the GNU Affero General Public License (AGPL).
3
// See License.AGPL.txt in the project root for license information.
4
5
package cmd
6
7
import (
8
"context"
9
"fmt"
10
"io"
11
12
"github.com/spf13/cobra"
13
14
"github.com/gitpod-io/gitpod/common-go/log"
15
builder "github.com/gitpod-io/gitpod/image-builder/api"
16
)
17
18
var imagebuildsLogsCmd = &cobra.Command{
19
Use: "logs <build-ref>",
20
Short: "Subscribes to the logs of an ongoing build",
21
Args: cobra.ExactArgs(1),
22
Run: func(cmd *cobra.Command, args []string) {
23
ctx, cancel := context.WithCancel(context.Background())
24
defer cancel()
25
26
conn, client, err := getImagebuildsClient(ctx)
27
if err != nil {
28
log.WithError(err).Fatal("cannot connect")
29
}
30
defer conn.Close()
31
32
// build did start, print log until done
33
censor, _ := cmd.Flags().GetBool("censor")
34
lc, err := client.Logs(ctx, &builder.LogsRequest{
35
BuildRef: args[0],
36
Censored: censor,
37
})
38
if err != nil && err != io.EOF {
39
log.Fatal(err)
40
}
41
log.WithField("censor", censor).Info("listening for build logs")
42
for {
43
l, err := lc.Recv()
44
if err == io.EOF {
45
break
46
}
47
if err != nil {
48
log.WithError(err).Fatal("recv err")
49
}
50
fmt.Print(string(l.Content))
51
}
52
},
53
}
54
55
func init() {
56
imagebuildsCmd.AddCommand(imagebuildsLogsCmd)
57
58
imagebuildsLogsCmd.Flags().Bool("censor", false, "censor the log output")
59
}
60
61