refactor: lint with golangci-lint
1 file changed, 36 insertions(+), 14 deletions(-)
changed files
M cmd/dev/main.go → cmd/dev/main.go
@@ -48,7 +48,8 @@ err := cmd.Process.Signal(os.Interrupt) if err != nil { log.Error("signal error:", "error", err) } - return err + + return errors.Wrap(err, "error signalling child process") } stdout, err := cmd.StdoutPipe() if err != nil {@@ -59,8 +60,18 @@ if err != nil { return } - go io.Copy(os.Stdout, stdout) - go io.Copy(os.Stderr, stderr) + go func() { + _, err := io.Copy(os.Stdout, stdout) + if err != nil { + log.Error("error copying stdout", "error", err) + } + }() + go func() { + _, err := io.Copy(os.Stderr, stderr) + if err != nil { + log.Error("error copying stderr", "error", err) + } + }() return }@@ -72,24 +83,27 @@ func NewFileWatcher(pollTime time.Duration) (*FileWatcher, error) { batcher, err := watcher.New(pollTime/5, pollTime, true) if err != nil { - return nil, err + return nil, errors.Wrap(err, "could not create file watcher") } + return &FileWatcher{batcher}, nil } func (watcher FileWatcher) WatchAllFiles(from string) error { log.Debug("watching files under", "from", from) - err := filepath.Walk(from, func(path string, info fs.FileInfo, err error) error { + err := filepath.Walk(from, func(path string, _ fs.FileInfo, err error) error { if err != nil { return err } // log.Debug(fmt.Sprintf("adding file %s to watcher", path)) if err = watcher.Add(path); err != nil { - return err + return errors.Wrapf(err, "could not add path %s to watcher", path) } + return nil }) - return err + + return errors.Wrapf(err, "could not walk directory tree %s", from) } func build(ctx context.Context, config DevConfig) error {@@ -113,6 +127,7 @@ ) if err != nil { return errors.WithMessage(err, "error running build command") } + return nil }@@ -153,7 +168,7 @@ case <-ctx.Done(): log.Debug("server context done") err := cmd.Process.Signal(os.Interrupt) if err != nil { - return err + return errors.Wrap(err, "could not process signal") } <-done case err := <-cmdErr:@@ -179,7 +194,6 @@ log.Debug("running with in /tmp", "dir", devConfig.TempDir) ctx, cancel := context.WithCancel(context.Background()) - defer cancel() log.Debug("setting interrupt handler") c := make(chan os.Signal, 1)@@ -195,9 +209,9 @@ }() serverChan := make(chan bool, 1) eventsource := eventsource.New(nil, nil) - defer eventsource.Close() srv := http.Server{ - Addr: devConfig.BaseURL.Host, + Addr: devConfig.BaseURL.Host, + ReadHeaderTimeout: 1 * time.Minute, } devCtx, devCancel := context.WithTimeout(ctx, 1*time.Second)@@ -242,15 +256,15 @@ }() fw, err := NewFileWatcher(500 * time.Millisecond) if err != nil { - log.Fatal("error creating file watcher", "error", err) + log.Panic("error creating file watcher", "error", err) } err = fw.WatchAllFiles("content") if err != nil { - log.Fatal("could not watch files in content directory", "error", err) + log.Panic("could not watch files in content directory", "error", err) } err = fw.WatchAllFiles("templates") if err != nil { - log.Fatal("could not watch files in templates directory", "error", err) + log.Panic("could not watch files in templates directory", "error", err) } var exitCode int@@ -283,6 +297,7 @@ if err != nil { log.Debug("shutdown error", "error", err) } exitCode = 1 + break loop case event := <-fw.Events: log.Debug("event received:", "event", event)@@ -291,6 +306,7 @@ serverChan <- false log.Debug("waiting for server shutdown") <-serverErr log.Debug("server shutdown completed") + continue case err = <-serverErr: if err != nil && err != context.Canceled {@@ -301,18 +317,24 @@ log.Debug("server exit error") } else { log.Debug("server other error") } + break } log.Debug("no error or server context cancelled") + continue } log.Debug("waiting on server") exitCode = 0 + break } log.Debug("waiting for wg before shutting down") + eventsource.Close() + cancel() wg.Wait() + os.Exit(exitCode) }