Index: client/cmd/logdog_butler/main.go |
diff --git a/client/cmd/logdog_butler/main.go b/client/cmd/logdog_butler/main.go |
index 5803146eba23cda32ca2a7be953a4af45f3055f9..5f61f833fa9958038890f05eace6d500ef812389 100644 |
--- a/client/cmd/logdog_butler/main.go |
+++ b/client/cmd/logdog_butler/main.go |
@@ -105,6 +105,8 @@ func (a *application) addFlags(fs *flag.FlagSet) { |
a.maxBufferAge = clockflag.Duration(butler.DefaultMaxBufferAge) |
+ fs.Var(&a.butler.Project, "project", |
+ "The log prefix's project name (required).") |
fs.Var(&a.butler.Prefix, "prefix", |
"Prefix to apply to all stream names.") |
fs.Var(&a.outputConfig, "output", |
@@ -172,12 +174,18 @@ func (a *application) Main(runFunc func(b *butler.Butler) error) error { |
if a.cpuProfile != "" { |
f, err := os.Create(a.cpuProfile) |
if err != nil { |
- return fmt.Errorf("Failed to create CPU profile output: %v", err) |
+ return fmt.Errorf("failed to create CPU profile output: %v", err) |
} |
pprof.StartCPUProfile(f) |
defer pprof.StopCPUProfile() |
} |
+ // Generate a prefix secret for this Butler session. |
+ var err error |
+ if a.butler.Secret, err = types.NewPrefixSecret(); err != nil { |
+ return fmt.Errorf("failed to generate prefix secret: %s", err) |
+ } |
+ |
// Instantiate our Butler. |
a.butler.MaxBufferAge = time.Duration(a.maxBufferAge) |
a.butler.BufferLogs = !a.noBufferLogs |
@@ -280,6 +288,14 @@ func mainImpl(ctx context.Context, argv []string) int { |
a.Context = logConfig.Set(a.Context) |
+ // TODO(dnj): Force all invocations to supply a Project. |
+ if a.butler.Project != "" { |
+ if err := a.butler.Project.Validate(); err != nil { |
+ log.WithError(err).Errorf(a, "Invalid project (-project).") |
+ return configErrorReturnCode |
+ } |
+ } |
+ |
// Validate our Prefix; generate a user prefix if one was not supplied. |
prefix := a.butler.Prefix |
if prefix == "" { |