|
1 | 1 | package cli |
2 | 2 |
|
3 | 3 | import ( |
| 4 | + "context" |
| 5 | + "fmt" |
| 6 | + |
4 | 7 | "github.com/spf13/cobra" |
5 | 8 |
|
6 | 9 | "github.com/replicate/cog/pkg/client" |
| 10 | + "github.com/replicate/cog/pkg/global" |
7 | 11 | "github.com/replicate/cog/pkg/logger" |
8 | | - "github.com/replicate/cog/pkg/util/console" |
| 12 | + "github.com/replicate/cog/pkg/util/terminal" |
9 | 13 | ) |
10 | 14 |
|
11 | 15 | var buildNoFollow bool |
@@ -47,31 +51,44 @@ func showBuildLogs(cmd *cobra.Command, args []string) error { |
47 | 51 | } |
48 | 52 |
|
49 | 53 | c := client.NewClient() |
50 | | - // FIXME(bfirsh): why isn't this a logger.Logger? |
| 54 | + |
| 55 | + ui := terminal.ConsoleUI(context.Background()) |
| 56 | + defer ui.Close() |
| 57 | + |
51 | 58 | logChan, err := c.GetBuildLogs(model, buildID, !buildNoFollow) |
52 | 59 | if err != nil { |
53 | 60 | return err |
54 | 61 | } |
55 | | - for entry := range logChan { |
56 | | - outputLogEntry(entry, "") |
| 62 | + |
| 63 | + if global.Verbose { |
| 64 | + for entry := range logChan { |
| 65 | + fmt.Println(entry.Line) |
| 66 | + } |
| 67 | + } else { |
| 68 | + logWriter := logger.NewTerminalLogger(ui) |
| 69 | + pipeLogChanToLogger(logChan, logWriter) |
57 | 70 | } |
58 | 71 |
|
59 | 72 | return nil |
60 | 73 | } |
61 | 74 |
|
62 | | -func outputLogEntry(entry *client.LogEntry, prefix string) { |
63 | | - switch entry.Level { |
64 | | - case logger.LevelFatal: |
65 | | - console.Fatal(prefix + entry.Line) |
66 | | - case logger.LevelError: |
67 | | - console.Error(prefix + entry.Line) |
68 | | - case logger.LevelWarn: |
69 | | - console.Warn(prefix + entry.Line) |
70 | | - case logger.LevelStatus: // TODO(andreas): handle status differently or remove |
71 | | - console.Info(prefix + entry.Line) |
72 | | - case logger.LevelInfo: |
73 | | - console.Info(prefix + entry.Line) |
74 | | - case logger.LevelDebug: |
75 | | - console.Debug(prefix + entry.Line) |
| 75 | +// FIXME(bfirsh): |
| 76 | +func pipeLogChanToLogger(logChan chan *client.LogEntry, logWriter logger.Logger) { |
| 77 | + for entry := range logChan { |
| 78 | + switch entry.Level { |
| 79 | + case logger.LevelFatal: |
| 80 | + logWriter.WriteError(fmt.Errorf(entry.Line)) |
| 81 | + case logger.LevelError: |
| 82 | + logWriter.WriteError(fmt.Errorf(entry.Line)) |
| 83 | + case logger.LevelWarn: |
| 84 | + logWriter.WriteError(fmt.Errorf(entry.Line)) |
| 85 | + case logger.LevelStatus: |
| 86 | + logWriter.Info(entry.Line) |
| 87 | + case logger.LevelInfo: |
| 88 | + logWriter.Info(entry.Line) |
| 89 | + case logger.LevelDebug: |
| 90 | + logWriter.Debug(entry.Line) |
| 91 | + } |
76 | 92 | } |
| 93 | + |
77 | 94 | } |
0 commit comments