Skip to content

Commit 804a5d1

Browse files
authored
cli: tweak how new log flags are injected (#6516)
- create custom wire types - allow multiple resource filters - remove legacy wire gen Signed-off-by: Nick Santos <[email protected]>
1 parent 62b10e4 commit 804a5d1

File tree

13 files changed

+99
-96
lines changed

13 files changed

+99
-96
lines changed

Makefile

+1-7
Original file line numberDiff line numberDiff line change
@@ -113,14 +113,8 @@ else
113113
endif
114114

115115
wire:
116-
# run wire in a container, which will then invoke `make wire-dev`
117-
toast wire
118-
119-
wire-dev:
120-
# run wire directly, both used by Toast job and useful for faster iteration
121-
# if you have wire installed (but don't forget to run `make wire` before
122-
# committing to generate the authoritative versions!)
123116
wire ./internal/engine ./internal/engine/buildcontrol ./internal/cli
117+
goimports -w -l $(GOIMPORTS_LOCAL_ARG) internal/
124118

125119
wire-check:
126120
wire check ./internal/engine ./internal/engine/buildcontrol ./internal/cli

internal/cli/ci.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ See blog post for additional information: https://blog.tilt.dev/2020/04/16/how-t
4949
addTiltfileFlag(cmd, &c.fileName)
5050
addKubeContextFlag(cmd)
5151
addNamespaceFlag(cmd)
52-
addLogFilterFlags(cmd, &logSourceFlag, &logResourceFlag, &logLevelFlag)
52+
addLogFilterFlags(cmd)
5353

5454
cmd.Flags().BoolVar(&logActionsFlag, "logactions", false, "log all actions and state changes")
5555
cmd.Flags().Lookup("logactions").Hidden = true

internal/cli/flags.go

+4-5
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ var (
1919
defaultWebPort = model.DefaultWebPort
2020
defaultNamespace = ""
2121
defaultLogLevel = ""
22-
defaultLogResource = ""
2322
defaultLogSource = "all"
2423
webHostFlag = ""
2524
webPortFlag = 0
@@ -82,8 +81,8 @@ func addNamespaceFlag(cmd *cobra.Command) {
8281
cmd.Flags().StringVar(&namespaceOverride, "namespace", defaultNamespace, "Default namespace for Kubernetes resources (overrides default namespace from active context in kubeconfig)")
8382
}
8483

85-
func addLogFilterFlags(cmd *cobra.Command, logSource *string, logResource *string, logLevel *string) {
86-
cmd.Flags().StringVar(logLevel, "log-level", defaultLogLevel, `Specify a log level. One of "warn", "error"`)
84+
func addLogFilterFlags(cmd *cobra.Command) {
85+
cmd.Flags().StringVar(&logLevelFlag, "log-level", defaultLogLevel, `Specify a log level. One of "warn", "error"`)
8786
_ = cmd.RegisterFlagCompletionFunc(
8887
"log-level",
8988
func(_ *cobra.Command, _ []string, toComplete string) ([]string, cobra.ShellCompDirective) {
@@ -98,8 +97,8 @@ func addLogFilterFlags(cmd *cobra.Command, logSource *string, logResource *strin
9897
return completions, cobra.ShellCompDirectiveNoFileComp
9998
},
10099
)
101-
cmd.Flags().StringVar(logResource, "log-resource", defaultLogResource, `Specify a resource to print logs for, e.g. "(Tiltfile)", "nginx", etc.`)
102-
cmd.Flags().StringVar(logSource, "log-source", defaultLogSource, `Specify a log source. One of "all", "build", "runtime"`)
100+
cmd.Flags().StringSliceVar(&logResourcesFlag, "log-resource", nil, `Specify one or more resources to print logs for, e.g. "(Tiltfile)", "nginx", etc. If not specified, prints all resources.`)
101+
cmd.Flags().StringVar(&logSourceFlag, "log-source", defaultLogSource, `Specify a log source. One of "all", "build", "runtime"`)
103102
_ = cmd.RegisterFlagCompletionFunc(
104103
"log-source",
105104
func(_ *cobra.Command, _ []string, toComplete string) ([]string, cobra.ShellCompDirective) {

internal/cli/up.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,12 @@ var webModeFlag model.WebMode = model.DefaultWebMode
3131
const DefaultWebDevPort = 46764
3232

3333
var (
34-
updateModeFlag string = string(liveupdates.UpdateModeAuto)
35-
webDevPort = 0
36-
logActionsFlag bool = false
37-
logSourceFlag string = ""
38-
logResourceFlag string = ""
39-
logLevelFlag string = ""
34+
updateModeFlag string = string(liveupdates.UpdateModeAuto)
35+
webDevPort = 0
36+
logActionsFlag bool = false
37+
logSourceFlag string = ""
38+
logResourcesFlag []string = nil
39+
logLevelFlag string = ""
4040
)
4141

4242
var userExitError = errors.New("user requested Tilt exit")
@@ -89,7 +89,7 @@ local resources--i.e. those using serve_cmd--are terminated when you exit Tilt.
8989
addTiltfileFlag(cmd, &c.fileName)
9090
addKubeContextFlag(cmd)
9191
addNamespaceFlag(cmd)
92-
addLogFilterFlags(cmd, &logSourceFlag, &logResourceFlag, &logLevelFlag)
92+
addLogFilterFlags(cmd)
9393
cmd.Flags().Lookup("logactions").Hidden = true
9494
cmd.Flags().StringVar(&c.outputSnapshotOnExit, "output-snapshot-on-exit", "", "If specified, Tilt will dump a snapshot of its state to the specified path when it exits")
9595

internal/cli/wire.go

+11-7
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ var BaseWireSet = wire.NewSet(
107107
build.ProvideClock,
108108
provideClock,
109109
provideLogSource,
110-
provideLogResource,
110+
provideLogResources,
111111
provideLogLevel,
112112
hud.WireSet,
113113
prompt.WireSet,
@@ -360,17 +360,21 @@ func provideLogSource() hud.FilterSource {
360360
return hud.FilterSource(logSourceFlag)
361361
}
362362

363-
func provideLogResource() model.ManifestName {
364-
return model.ManifestName(logResourceFlag)
363+
func provideLogResources() hud.FilterResources {
364+
result := []model.ManifestName{}
365+
for _, r := range logResourcesFlag {
366+
result = append(result, model.ManifestName(r))
367+
}
368+
return hud.FilterResources(result)
365369
}
366370

367-
func provideLogLevel() logger.Level {
371+
func provideLogLevel() hud.FilterLevel {
368372
switch logLevelFlag {
369373
case "warn", "WARN", "warning", "WARNING":
370-
return logger.WarnLvl
374+
return hud.FilterLevel(logger.WarnLvl)
371375
case "error", "ERROR":
372-
return logger.ErrorLvl
376+
return hud.FilterLevel(logger.ErrorLvl)
373377
default:
374-
return logger.NoneLvl
378+
return hud.FilterLevel(logger.NoneLvl)
375379
}
376380
}

internal/cli/wire_gen.go

+26-22
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/engine/buildcontrol/wire_gen.go

+3-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/engine/upper_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -3187,7 +3187,7 @@ func newTestFixture(t *testing.T, options ...fixtureOptions) *testFixture {
31873187
lsc := local.NewServerController(cdc)
31883188
sr := ctrlsession.NewReconciler(cdc, st, clock)
31893189
sessionController := session.NewController(sr)
3190-
ts := hud.NewTerminalStream(hud.NewIncrementalPrinter(log), hud.NewLogFilter(hud.FilterSourceAll, "", logger.NoneLvl), st)
3190+
ts := hud.NewTerminalStream(hud.NewIncrementalPrinter(log), hud.NewLogFilter(hud.FilterSourceAll, nil, hud.FilterLevel(logger.NoneLvl)), st)
31913191
tp := prompt.NewTerminalPrompt(ta, prompt.TTYOpen, openurl.BrowserOpen,
31923192
log, "localhost", model.WebURL{})
31933193
h := hud.NewFakeHud()

internal/engine/wire_gen.go

+4-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/hud/log_filter.go

+28-11
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,40 @@ const (
1818

1919
func (s FilterSource) String() string { return string(s) }
2020

21+
type FilterResources []model.ManifestName
22+
23+
func (r FilterResources) Matches(name model.ManifestName) bool {
24+
if len(r) == 0 {
25+
return true
26+
}
27+
28+
for _, n := range r {
29+
if n == name {
30+
return true
31+
}
32+
}
33+
34+
return false
35+
}
36+
37+
type FilterLevel logger.Level
38+
2139
func NewLogFilter(
2240
source FilterSource,
23-
manifestName model.ManifestName,
24-
level logger.Level,
41+
resources FilterResources,
42+
level FilterLevel,
2543
) LogFilter {
26-
r := LogFilter{
27-
source: source,
28-
manifestName: manifestName,
29-
level: level,
44+
return LogFilter{
45+
source: source,
46+
resources: resources,
47+
level: logger.Level(level),
3048
}
31-
return r
3249
}
3350

3451
type LogFilter struct {
35-
source FilterSource
36-
manifestName model.ManifestName
37-
level logger.Level
52+
source FilterSource
53+
resources FilterResources
54+
level logger.Level
3855
}
3956

4057
// The implementation is identical to isBuildSpanId in web/src/logs.ts.
@@ -61,7 +78,7 @@ func (f LogFilter) Matches(line logstore.LogLine) bool {
6178
return true
6279
}
6380

64-
if f.manifestName != "" && f.manifestName != line.ManifestName {
81+
if !f.resources.Matches(line.ManifestName) {
6582
return false
6683
}
6784

internal/hud/log_filter_test.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -139,19 +139,19 @@ func TestLogFilterMatches(t *testing.T) {
139139
},
140140
{
141141
description: "empty manifest name matches any logs",
142-
logFilter: LogFilter{source: FilterSourceAll, manifestName: ""},
142+
logFilter: LogFilter{source: FilterSourceAll, resources: nil},
143143
input: logstore.LogLine{SpanID: "pod:default:nginx", ManifestName: "nginx"},
144144
expected: true,
145145
},
146146
{
147147
description: "manifest name matches logs with the same manifest name",
148-
logFilter: LogFilter{source: FilterSourceAll, manifestName: "nginx"},
148+
logFilter: LogFilter{source: FilterSourceAll, resources: FilterResources{"nginx"}},
149149
input: logstore.LogLine{SpanID: "pod:default:nginx", ManifestName: "nginx"},
150150
expected: true,
151151
},
152152
{
153153
description: "manifest name does not match logs with a different manifest name",
154-
logFilter: LogFilter{source: FilterSourceAll, manifestName: "test"},
154+
logFilter: LogFilter{source: FilterSourceAll, resources: FilterResources{"test"}},
155155
input: logstore.LogLine{SpanID: "pod:default:nginx", ManifestName: "nginx"},
156156
expected: false,
157157
},
@@ -261,7 +261,7 @@ func TestLogFilterApply(t *testing.T) {
261261
},
262262
{
263263
description: "filter with manifest name matches only logs with the same manifest name",
264-
logFilter: LogFilter{source: FilterSourceAll, manifestName: "nginx"},
264+
logFilter: LogFilter{source: FilterSourceAll, resources: FilterResources{"nginx"}},
265265
input: []logstore.LogLine{
266266
{SpanID: "pod:default:nginx", ManifestName: "nginx"},
267267
{SpanID: "build:1", ManifestName: "nginx"},

pkg/webview/view.pb.go

+8-8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)