grim/convey

Port from logrus to log/slog
default tip
4 months ago, Elliott Sales de Andrade
c588f9b3f559
Parents 2dc09584dc67
Children
Port from logrus to log/slog

This doesn't really take much advantage of structured logging beyond what is already done (`id` and `idColor`), and consequently the log handler does not try to do any handling of anything more than that (i.e., grouping, or arbitrary attributes beyond those defined).

One should maybe have a `Context` available to pass in, but there isn't one, and anyway, the log handler doesn't use it, so I've passed in a `TODO` instead.

Everything else is just normal import/rename changes.

Testing Done:
Ran `go run . run`

Reviewed at https://reviews.imfreedom.org/r/2871/
--- a/config/config.go Sun Dec 10 05:23:34 2023 -0600
+++ b/config/config.go Mon Dec 11 23:01:51 2023 -0600
@@ -19,8 +19,7 @@
import (
"fmt"
-
- log "github.com/sirupsen/logrus"
+ "log/slog"
"keep.imfreedom.org/grim/convey/runtime"
)
@@ -41,7 +40,7 @@
}
if err := task.Deprecated(); err != nil {
- log.Warnf("warning: task %s: %s", name, err.Error())
+ slog.Warn(fmt.Sprintf("warning: task %s: %s", name, err.Error()))
}
}
--- a/config/loader.go Sun Dec 10 05:23:34 2023 -0600
+++ b/config/loader.go Mon Dec 11 23:01:51 2023 -0600
@@ -17,10 +17,9 @@
package config
import (
+ "log/slog"
"os"
- log "github.com/sirupsen/logrus"
-
"gopkg.in/yaml.v2"
)
@@ -41,7 +40,7 @@
// If the user selected the default and it didn't exist, attempt the
// default with a .yaml extension.
if os.IsNotExist(err) && filename == "convey.yml" {
- log.Infof("info: configuration file convey.yml not found, attempting convey.yaml instead.")
+ slog.Info("info: configuration file convey.yml not found, attempting convey.yaml instead.")
filename = "convey.yaml"
_, err = os.Stat(filename)
if err != nil {
--- a/docker/build.go Sun Dec 10 05:23:34 2023 -0600
+++ b/docker/build.go Mon Dec 11 23:01:51 2023 -0600
@@ -2,8 +2,7 @@
import (
"fmt"
-
- log "github.com/sirupsen/logrus"
+ "log/slog"
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/podman"
@@ -23,7 +22,7 @@
realBuild *podman.Build
}
-func (b *Build) Execute(name string, logger *log.Entry, stageEnv environment.Environment, rt *runtime.Runtime) error {
+func (b *Build) Execute(name string, logger *slog.Logger, stageEnv environment.Environment, rt *runtime.Runtime) error {
return b.realBuild.Execute(name, logger, stageEnv, rt)
}
--- a/docker/environment.go Sun Dec 10 05:23:34 2023 -0600
+++ b/docker/environment.go Mon Dec 11 23:01:51 2023 -0600
@@ -2,8 +2,7 @@
import (
"fmt"
-
- log "github.com/sirupsen/logrus"
+ "log/slog"
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/runtime"
@@ -22,7 +21,7 @@
}
// Execute runs the task.
-func (e *Environment) Execute(name string, logger *log.Entry, env environment.Environment, rt *runtime.Runtime) error {
+func (e *Environment) Execute(name string, logger *slog.Logger, env environment.Environment, rt *runtime.Runtime) error {
return nil
}
--- a/docker/export.go Sun Dec 10 05:23:34 2023 -0600
+++ b/docker/export.go Mon Dec 11 23:01:51 2023 -0600
@@ -2,8 +2,7 @@
import (
"fmt"
-
- log "github.com/sirupsen/logrus"
+ "log/slog"
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/runtime"
@@ -32,7 +31,7 @@
}
// Execute runs the task.
-func (e *Export) Execute(name string, logger *log.Entry, env environment.Environment, rt *runtime.Runtime) error {
+func (e *Export) Execute(name string, logger *slog.Logger, env environment.Environment, rt *runtime.Runtime) error {
return e.realExport.Execute(name, logger, env, rt)
}
--- a/docker/import.go Sun Dec 10 05:23:34 2023 -0600
+++ b/docker/import.go Mon Dec 11 23:01:51 2023 -0600
@@ -2,8 +2,7 @@
import (
"fmt"
-
- log "github.com/sirupsen/logrus"
+ "log/slog"
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/runtime"
@@ -32,7 +31,7 @@
}
// Execute runs the task.
-func (i *Import) Execute(name string, logger *log.Entry, env environment.Environment, rt *runtime.Runtime) error {
+func (i *Import) Execute(name string, logger *slog.Logger, env environment.Environment, rt *runtime.Runtime) error {
return i.realImport.Execute(name, logger, env, rt)
}
--- a/docker/login.go Sun Dec 10 05:23:34 2023 -0600
+++ b/docker/login.go Mon Dec 11 23:01:51 2023 -0600
@@ -2,8 +2,7 @@
import (
"fmt"
-
- log "github.com/sirupsen/logrus"
+ "log/slog"
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/podman"
@@ -18,7 +17,7 @@
realLogin *podman.Login
}
-func (l *Login) Execute(name string, logger *log.Entry, stageEnv environment.Environment, rt *runtime.Runtime) error {
+func (l *Login) Execute(name string, logger *slog.Logger, stageEnv environment.Environment, rt *runtime.Runtime) error {
return l.realLogin.Execute(name, logger, stageEnv, rt)
}
--- a/docker/logout.go Sun Dec 10 05:23:34 2023 -0600
+++ b/docker/logout.go Mon Dec 11 23:01:51 2023 -0600
@@ -2,8 +2,7 @@
import (
"fmt"
-
- log "github.com/sirupsen/logrus"
+ "log/slog"
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/podman"
@@ -16,7 +15,7 @@
realLogout *podman.Logout
}
-func (l *Logout) Execute(name string, logger *log.Entry, stageEnv environment.Environment, rt *runtime.Runtime) error {
+func (l *Logout) Execute(name string, logger *slog.Logger, stageEnv environment.Environment, rt *runtime.Runtime) error {
return l.realLogout.Execute(name, logger, stageEnv, rt)
}
--- a/docker/pull.go Sun Dec 10 05:23:34 2023 -0600
+++ b/docker/pull.go Mon Dec 11 23:01:51 2023 -0600
@@ -2,8 +2,7 @@
import (
"fmt"
-
- log "github.com/sirupsen/logrus"
+ "log/slog"
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/podman"
@@ -18,7 +17,7 @@
realPull *podman.Pull
}
-func (p *Pull) Execute(name string, logger *log.Entry, stageEnv environment.Environment, rt *runtime.Runtime) error {
+func (p *Pull) Execute(name string, logger *slog.Logger, stageEnv environment.Environment, rt *runtime.Runtime) error {
return p.realPull.Execute(name, logger, stageEnv, rt)
}
--- a/docker/push.go Sun Dec 10 05:23:34 2023 -0600
+++ b/docker/push.go Mon Dec 11 23:01:51 2023 -0600
@@ -2,8 +2,7 @@
import (
"fmt"
-
- log "github.com/sirupsen/logrus"
+ "log/slog"
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/podman"
@@ -18,7 +17,7 @@
realPush *podman.Push
}
-func (p *Push) Execute(name string, logger *log.Entry, stageEnv environment.Environment, rt *runtime.Runtime) error {
+func (p *Push) Execute(name string, logger *slog.Logger, stageEnv environment.Environment, rt *runtime.Runtime) error {
return p.realPush.Execute(name, logger, stageEnv, rt)
}
--- a/docker/remove.go Sun Dec 10 05:23:34 2023 -0600
+++ b/docker/remove.go Mon Dec 11 23:01:51 2023 -0600
@@ -2,8 +2,7 @@
import (
"fmt"
-
- log "github.com/sirupsen/logrus"
+ "log/slog"
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/podman"
@@ -19,7 +18,7 @@
realRemove *podman.Remove
}
-func (r *Remove) Execute(name string, logger *log.Entry, stageEnv environment.Environment, rt *runtime.Runtime) error {
+func (r *Remove) Execute(name string, logger *slog.Logger, stageEnv environment.Environment, rt *runtime.Runtime) error {
return r.realRemove.Execute(name, logger, stageEnv, rt)
}
--- a/docker/run.go Sun Dec 10 05:23:34 2023 -0600
+++ b/docker/run.go Mon Dec 11 23:01:51 2023 -0600
@@ -2,8 +2,7 @@
import (
"fmt"
-
- log "github.com/sirupsen/logrus"
+ "log/slog"
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/podman"
@@ -62,7 +61,7 @@
}
// Execute runs the task.
-func (r *Run) Execute(name string, logger *log.Entry, env environment.Environment, rt *runtime.Runtime) error {
+func (r *Run) Execute(name string, logger *slog.Logger, env environment.Environment, rt *runtime.Runtime) error {
return r.realRun.Execute(name, logger, env, rt)
}
--- a/docker/tag.go Sun Dec 10 05:23:34 2023 -0600
+++ b/docker/tag.go Mon Dec 11 23:01:51 2023 -0600
@@ -2,8 +2,7 @@
import (
"fmt"
-
- log "github.com/sirupsen/logrus"
+ "log/slog"
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/podman"
@@ -39,7 +38,7 @@
}
// Execute runs the task.
-func (t *Tag) Execute(name string, logger *log.Entry, env environment.Environment, rt *runtime.Runtime) error {
+func (t *Tag) Execute(name string, logger *slog.Logger, env environment.Environment, rt *runtime.Runtime) error {
return t.realTag.Execute(name, logger, env, rt)
}
--- a/environment/expand.go Sun Dec 10 05:23:34 2023 -0600
+++ b/environment/expand.go Mon Dec 11 23:01:51 2023 -0600
@@ -1,9 +1,9 @@
package environment
import (
+ "fmt"
+ "log/slog"
"os"
-
- log "github.com/sirupsen/logrus"
)
func (e Environment) expandMapper(name string) string {
@@ -40,7 +40,7 @@
last = next
}
- log.Warnf("failed to fully expand %q after %d recursions", key, tries)
+ slog.Warn(fmt.Sprintf("failed to fully expand %q after %d recursions", key, tries))
return ""
}
--- a/exec/collector.go Sun Dec 10 05:23:34 2023 -0600
+++ b/exec/collector.go Mon Dec 11 23:01:51 2023 -0600
@@ -18,17 +18,17 @@
import (
"bufio"
+ "context"
+ "log/slog"
"sync"
-
- log "github.com/sirupsen/logrus"
)
type collector func(s *bufio.Scanner)
-func newLogCollector(adapter *log.Entry, level log.Level) collector {
+func newLogCollector(adapter *slog.Logger, level slog.Level) collector {
return func(s *bufio.Scanner) {
for s.Scan() {
- adapter.Log(level, s.Text())
+ adapter.Log(context.TODO(), level, s.Text())
}
}
}
--- a/exec/exec.go Sun Dec 10 05:23:34 2023 -0600
+++ b/exec/exec.go Mon Dec 11 23:01:51 2023 -0600
@@ -21,12 +21,11 @@
"bufio"
"fmt"
"io"
+ "log/slog"
"os/exec"
"sync"
"time"
- log "github.com/sirupsen/logrus"
-
"keep.imfreedom.org/grim/convey/logging"
)
@@ -35,8 +34,8 @@
func Run(name string, cmdv []string, timeout time.Duration) error {
var (
logger = logging.NewAdapter(name)
- outCollector = newLogCollector(logger, log.InfoLevel)
- errCollector = newLogCollector(logger, log.ErrorLevel)
+ outCollector = newLogCollector(logger, slog.LevelInfo)
+ errCollector = newLogCollector(logger, slog.LevelError)
)
return run(name, cmdv, nil, timeout, &sync.WaitGroup{}, outCollector, errCollector)
@@ -47,8 +46,8 @@
func RunWithStdin(name string, cmdv []string, stdin io.Reader, timeout time.Duration) error {
var (
logger = logging.NewAdapter(name)
- outCollector = newLogCollector(logger, log.InfoLevel)
- errCollector = newLogCollector(logger, log.ErrorLevel)
+ outCollector = newLogCollector(logger, slog.LevelInfo)
+ errCollector = newLogCollector(logger, slog.LevelError)
)
return run(name, cmdv, stdin, timeout, &sync.WaitGroup{}, outCollector, errCollector)
@@ -72,7 +71,7 @@
func run(name string, cmdv []string, stdin io.Reader, timeout time.Duration, wg *sync.WaitGroup, outHandler, errHandler collector) error {
logger := logging.NewAdapter(name)
- logger.Debugf("running command \"%v\"", cmdv)
+ logger.Debug(fmt.Sprintf("running command \"%v\"", cmdv))
cmd := exec.Command(cmdv[0], cmdv[1:]...) // nolint: gas
@@ -124,7 +123,7 @@
}
// log that the process timed out
- logger.Errorf("command %v timed out after %v", cmdv, timeout)
+ logger.Error(fmt.Sprintf("command %v timed out after %v", cmdv, timeout))
})
}
--- a/fs/directory.go Sun Dec 10 05:23:34 2023 -0600
+++ b/fs/directory.go Mon Dec 11 23:01:51 2023 -0600
@@ -20,11 +20,11 @@
package fs
import (
+ "fmt"
+ "log/slog"
"os"
"path/filepath"
"strings"
-
- log "github.com/sirupsen/logrus"
)
type Directory struct {
@@ -57,12 +57,12 @@
realDst := filepath.Join(d.path, dst)
if file.IsDir() {
- log.Debugf("importing directory %q to %q", src, realDst)
+ slog.Debug(fmt.Sprintf("importing directory %q to %q", src, realDst))
return copyDir(src, realDst, file.Mode())
}
- log.Debugf("importing file %q to %q", src, realDst)
+ slog.Debug(fmt.Sprintf("importing file %q to %q", src, realDst))
return copyFile(src, realDst, file.Mode())
}
@@ -76,12 +76,12 @@
}
if file.IsDir() {
- log.Debugf("exporting directory %q to %q", realSrc, dst)
+ slog.Debug(fmt.Sprintf("exporting directory %q to %q", realSrc, dst))
return copyDir(realSrc, dst, file.Mode())
}
- log.Debugf("exporting file %q to %q", realSrc, dst)
+ slog.Debug(fmt.Sprintf("exporting file %q to %q", realSrc, dst))
return copyFile(realSrc, dst, file.Mode())
}
--- a/logging/adapter.go Sun Dec 10 05:23:34 2023 -0600
+++ b/logging/adapter.go Mon Dec 11 23:01:51 2023 -0600
@@ -17,16 +17,16 @@
package logging
import (
- log "github.com/sirupsen/logrus"
+ "log/slog"
"keep.imfreedom.org/grim/convey/color"
)
// NewAdapter creates a new logger with attributes for the identifier
-// as well has a color for it.
-func NewAdapter(identifier string) *log.Entry {
- return log.WithFields(log.Fields{
- "id": identifier,
- "idColor": color.Ansi(identifier),
- })
+// as well as a color for it.
+func NewAdapter(identifier string) *slog.Logger {
+ return slog.With(
+ "id", identifier,
+ "idColor", color.Ansi(identifier),
+ )
}
--- a/logging/formatter.go Sun Dec 10 05:23:34 2023 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +0,0 @@
-// Convey
-// Copyright 2016-2018 Gary Kramlich <grim@reaperworld.com>
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-package logging
-
-import (
- "bytes"
- "fmt"
- "os"
- "time"
-
- "github.com/mgutz/ansi"
- log "github.com/sirupsen/logrus"
-)
-
-var (
- baseTime time.Time = time.Now()
-
- levelColors map[log.Level]string = map[log.Level]string{
- log.PanicLevel: ansi.ColorCode("red+h"),
- log.FatalLevel: ansi.ColorCode("red+b"),
- log.ErrorLevel: ansi.ColorCode("red"),
- log.WarnLevel: ansi.ColorCode("yellow"),
- log.InfoLevel: ansi.ColorCode("green"),
- log.DebugLevel: ansi.ColorCode("cyan"),
- log.TraceLevel: ansi.ColorCode("white+h"),
- }
-)
-
-type Formatter struct {
- disableColors bool
-}
-
-func miniTimestamp() int {
- return int(time.Since(baseTime) / time.Second)
-}
-
-func NewFormatter(color bool) log.Formatter {
- disableColors := false
-
- if color {
- switch os.Getenv("TERM") {
- case "win":
- fallthrough
- case "dumb":
- disableColors = true
- }
- } else {
- disableColors = true
- }
-
- return &Formatter{
- disableColors: disableColors,
- }
-}
-
-func (f *Formatter) Format(entry *log.Entry) ([]byte, error) {
- var b *bytes.Buffer
-
- if entry.Buffer != nil {
- b = entry.Buffer
- } else {
- b = &bytes.Buffer{}
- }
-
- fmt.Fprintf(b, "[%04d] ", miniTimestamp())
-
- id := entry.Data["id"]
- if id != nil {
- idColor := entry.Data["idColor"]
-
- if f.disableColors && idColor != nil {
- fmt.Fprintf(b, "%s: ", id)
- } else {
- fmt.Fprintf(b, "%s%s%s: ", idColor, id, ansi.Reset)
- }
- }
-
- if entry.Message != "" {
- if f.disableColors {
- fmt.Fprintf(b, "%s", entry.Message)
- } else {
- fmt.Fprintf(b, "%s%s%s", levelColors[entry.Level], entry.Message, ansi.Reset)
- }
- }
-
- b.WriteByte('\n')
-
- return b.Bytes(), nil
-}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/logging/handler.go Mon Dec 11 23:01:51 2023 -0600
@@ -0,0 +1,149 @@
+// Convey
+// Copyright 2016-2018 Gary Kramlich <grim@reaperworld.com>
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+package logging
+
+import (
+ "bytes"
+ "context"
+ "fmt"
+ "log/slog"
+ "os"
+ "sync"
+ "time"
+
+ "github.com/mgutz/ansi"
+)
+
+var (
+ baseTime time.Time = time.Now()
+
+ levelColors map[slog.Level]string = map[slog.Level]string{
+ slog.LevelError: ansi.ColorCode("red"),
+ slog.LevelWarn: ansi.ColorCode("yellow"),
+ slog.LevelInfo: ansi.ColorCode("green"),
+ slog.LevelDebug: ansi.ColorCode("cyan"),
+ }
+)
+
+type Handler struct {
+ level slog.Level
+ disableColors bool
+ mtx *sync.Mutex
+ recordId string
+ recordColor string
+ ignoreRemainingAttrs bool
+}
+
+func NewHandler(color bool, level slog.Level) slog.Handler {
+ disableColors := false
+
+ if color {
+ switch os.Getenv("TERM") {
+ case "win", "dumb":
+ disableColors = true
+ }
+ } else {
+ disableColors = true
+ }
+
+ return &Handler{
+ disableColors: disableColors,
+ level: level,
+ mtx: &sync.Mutex{},
+ }
+}
+
+func (h *Handler) Enabled(ctx context.Context, level slog.Level) bool {
+ return level >= h.level
+}
+
+func (h *Handler) Handle(ctx context.Context, record slog.Record) error {
+ b := &bytes.Buffer{}
+
+ var miniTimestamp int
+ if record.Time.IsZero() {
+ miniTimestamp = int(time.Since(baseTime) / time.Second)
+ } else {
+ miniTimestamp = int(record.Time.Sub(baseTime) / time.Second)
+ }
+ fmt.Fprintf(b, "[%04d] ", miniTimestamp)
+
+ // Find some attributes from handler context or the record.
+ id := h.recordId
+ idColor := h.recordColor
+ if !h.ignoreRemainingAttrs {
+ record.Attrs(func(a slog.Attr) bool {
+ switch a.Key {
+ case "id":
+ id = a.Value.String()
+ case "idColor":
+ idColor = a.Value.String()
+ }
+ return true
+ })
+ }
+ if id != "" {
+ if h.disableColors && idColor != "" {
+ fmt.Fprintf(b, "%s: ", id)
+ } else {
+ fmt.Fprintf(b, "%s%s%s: ", idColor, id, ansi.Reset)
+ }
+ }
+
+ if record.Message != "" {
+ if h.disableColors {
+ fmt.Fprintf(b, "%s", record.Message)
+ } else {
+ fmt.Fprintf(b, "%s%s%s", levelColors[record.Level], record.Message, ansi.Reset)
+ }
+ }
+
+ b.WriteByte('\n')
+
+ h.mtx.Lock()
+ defer h.mtx.Unlock()
+
+ _, err := os.Stdout.Write(b.Bytes())
+ return err
+}
+
+func (h *Handler) WithAttrs(attrs []slog.Attr) slog.Handler {
+ if len(attrs) == 0 {
+ return h
+ }
+ h2 := *h
+ // We only care about a few attributes for now.
+ for _, a := range attrs {
+ switch a.Key {
+ case "id":
+ h2.recordId = a.Value.String()
+ case "idColor":
+ h2.recordColor = a.Value.String()
+ }
+ }
+ return &h2
+}
+
+func (h *Handler) WithGroup(name string) slog.Handler {
+ if name == "" {
+ return h
+ }
+ h2 := *h
+ // Once a group is added, the attributes become group.attr, so we want to ignore the rest.
+ h2.ignoreRemainingAttrs = true
+ return &h2
+}
--- a/logging/logging.go Sun Dec 10 05:23:34 2023 -0600
+++ b/logging/logging.go Mon Dec 11 23:01:51 2023 -0600
@@ -18,20 +18,18 @@
package logging
import (
- "os"
-
- log "github.com/sirupsen/logrus"
+ "log/slog"
)
// Setup sets up the logging system based on the input parameters
func Setup(color, verbose bool) {
- log.SetOutput(os.Stdout)
-
+ var level slog.Level
if verbose {
- log.SetLevel(log.DebugLevel)
+ level = slog.LevelDebug
} else {
- log.SetLevel(log.InfoLevel)
+ level = slog.LevelInfo
}
- log.SetFormatter(NewFormatter(color))
+ handler := NewHandler(color, level)
+ slog.SetDefault(slog.New(handler))
}
--- a/podman/build.go Sun Dec 10 05:23:34 2023 -0600
+++ b/podman/build.go Mon Dec 11 23:01:51 2023 -0600
@@ -1,11 +1,11 @@
package podman
import (
+ "fmt"
+ "log/slog"
"path/filepath"
"strings"
- log "github.com/sirupsen/logrus"
-
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/exec"
"keep.imfreedom.org/grim/convey/runtime"
@@ -20,7 +20,7 @@
Target string `yaml:"target"`
}
-func (b *Build) Execute(name string, logger *log.Entry, stageEnv environment.Environment, rt *runtime.Runtime) error {
+func (b *Build) Execute(name string, logger *slog.Logger, stageEnv environment.Environment, rt *runtime.Runtime) error {
env := stageEnv.Copy().Merge(rt.Environment)
ws, err := rt.Workspace()
@@ -32,8 +32,8 @@
if !strings.HasSuffix(context, string(filepath.Separator)) {
context += string(filepath.Separator)
}
- log.Infof("resolved context: %q", context)
- log.Infof("wspath: %q", ws.Path())
+ slog.Info(fmt.Sprintf("resolved context: %q", context))
+ slog.Info(fmt.Sprintf("wspath: %q", ws.Path()))
if !strings.HasPrefix(context, ws.Path()) {
return ErrContextOutsideOfWorkspace
}
--- a/podman/login.go Sun Dec 10 05:23:34 2023 -0600
+++ b/podman/login.go Mon Dec 11 23:01:51 2023 -0600
@@ -1,10 +1,9 @@
package podman
import (
+ "log/slog"
"strings"
- log "github.com/sirupsen/logrus"
-
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/exec"
"keep.imfreedom.org/grim/convey/runtime"
@@ -16,7 +15,7 @@
Password string `yaml:"password"`
}
-func (l *Login) Execute(name string, logger *log.Entry, stageEnv environment.Environment, rt *runtime.Runtime) error {
+func (l *Login) Execute(name string, logger *slog.Logger, stageEnv environment.Environment, rt *runtime.Runtime) error {
env := stageEnv.Copy().Merge(rt.Environment)
registry := env.Expand(l.Registry)
--- a/podman/logout.go Sun Dec 10 05:23:34 2023 -0600
+++ b/podman/logout.go Mon Dec 11 23:01:51 2023 -0600
@@ -1,7 +1,7 @@
package podman
import (
- log "github.com/sirupsen/logrus"
+ "log/slog"
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/exec"
@@ -12,7 +12,7 @@
Registry string `yaml:"registry"`
}
-func (l *Logout) Execute(name string, logger *log.Entry, stageEnv environment.Environment, rt *runtime.Runtime) error {
+func (l *Logout) Execute(name string, logger *slog.Logger, stageEnv environment.Environment, rt *runtime.Runtime) error {
env := stageEnv.Copy().Merge(rt.Environment)
registry := env.Expand(l.Registry)
--- a/podman/pull.go Sun Dec 10 05:23:34 2023 -0600
+++ b/podman/pull.go Mon Dec 11 23:01:51 2023 -0600
@@ -1,7 +1,7 @@
package podman
import (
- log "github.com/sirupsen/logrus"
+ "log/slog"
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/exec"
@@ -13,7 +13,7 @@
Tags yaml.StringOrSlice `yaml:"tags"`
}
-func (p *Pull) Execute(name string, logger *log.Entry, stageEnv environment.Environment, rt *runtime.Runtime) error {
+func (p *Pull) Execute(name string, logger *slog.Logger, stageEnv environment.Environment, rt *runtime.Runtime) error {
env := stageEnv.Copy().Merge(rt.Environment)
tags := env.Expandv(p.Tags)
--- a/podman/push.go Sun Dec 10 05:23:34 2023 -0600
+++ b/podman/push.go Mon Dec 11 23:01:51 2023 -0600
@@ -1,7 +1,7 @@
package podman
import (
- log "github.com/sirupsen/logrus"
+ "log/slog"
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/exec"
@@ -13,7 +13,7 @@
Tags yaml.StringOrSlice `yaml:"tags"`
}
-func (p *Push) Execute(name string, logger *log.Entry, stageEnv environment.Environment, rt *runtime.Runtime) error {
+func (p *Push) Execute(name string, logger *slog.Logger, stageEnv environment.Environment, rt *runtime.Runtime) error {
env := stageEnv.Copy().Merge(rt.Environment)
tags := env.Expandv(p.Tags)
--- a/podman/remove.go Sun Dec 10 05:23:34 2023 -0600
+++ b/podman/remove.go Mon Dec 11 23:01:51 2023 -0600
@@ -2,10 +2,9 @@
import (
"fmt"
+ "log/slog"
"strings"
- log "github.com/sirupsen/logrus"
-
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/exec"
"keep.imfreedom.org/grim/convey/runtime"
@@ -17,7 +16,7 @@
Quiet bool `yaml:"quiet"`
}
-func (r *Remove) Execute(name string, logger *log.Entry, stageEnv environment.Environment, rt *runtime.Runtime) error {
+func (r *Remove) Execute(name string, logger *slog.Logger, stageEnv environment.Environment, rt *runtime.Runtime) error {
env := stageEnv.Copy().Merge(rt.Environment)
tags := env.Expandv(r.Tags)
--- a/podman/run.go Sun Dec 10 05:23:34 2023 -0600
+++ b/podman/run.go Mon Dec 11 23:01:51 2023 -0600
@@ -1,13 +1,13 @@
package podman
import (
+ "log/slog"
"os"
"path/filepath"
"strings"
"github.com/kballard/go-shellquote"
"github.com/opencontainers/selinux/go-selinux"
- log "github.com/sirupsen/logrus"
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/exec"
@@ -54,7 +54,7 @@
return fp.Name(), nil
}
-func (r *Run) Execute(name string, logger *log.Entry, stageEnv environment.Environment, rt *runtime.Runtime) error {
+func (r *Run) Execute(name string, logger *slog.Logger, stageEnv environment.Environment, rt *runtime.Runtime) error {
// Create a new environment based on the stage's environment. Then merge
// the task's environment overriding anything from the stage. Finally merge
// the runtime environment which holds the environment from the command line.
--- a/podman/tag.go Sun Dec 10 05:23:34 2023 -0600
+++ b/podman/tag.go Mon Dec 11 23:01:51 2023 -0600
@@ -1,7 +1,7 @@
package podman
import (
- log "github.com/sirupsen/logrus"
+ "log/slog"
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/exec"
@@ -14,7 +14,7 @@
Targets yaml.StringOrSlice `yaml:"targets"`
}
-func (t *Tag) Execute(name string, logger *log.Entry, stageEnv environment.Environment, rt *runtime.Runtime) error {
+func (t *Tag) Execute(name string, logger *slog.Logger, stageEnv environment.Environment, rt *runtime.Runtime) error {
env := stageEnv.Copy().Merge(rt.Environment)
generator := exec.NewGenerator(
--- a/runner/cmd.go Sun Dec 10 05:23:34 2023 -0600
+++ b/runner/cmd.go Mon Dec 11 23:01:51 2023 -0600
@@ -19,14 +19,13 @@
import (
"context"
"fmt"
+ "log/slog"
"os"
"os/signal"
"path/filepath"
"syscall"
"time"
- log "github.com/sirupsen/logrus"
-
"keep.imfreedom.org/grim/convey/config"
"keep.imfreedom.org/grim/convey/globals"
"keep.imfreedom.org/grim/convey/logging"
@@ -105,7 +104,7 @@
case err := <-errChan:
return err
case s := <-signalChan:
- log.Infof("caught signal %s, exiting...", s)
+ slog.Info(fmt.Sprintf("caught signal %s, exiting...", s))
cancel()
break
}
--- a/runtime/count_task.go Sun Dec 10 05:23:34 2023 -0600
+++ b/runtime/count_task.go Mon Dec 11 23:01:51 2023 -0600
@@ -17,7 +17,7 @@
package runtime
import (
- log "github.com/sirupsen/logrus"
+ "log/slog"
"keep.imfreedom.org/grim/convey/environment"
)
@@ -28,7 +28,7 @@
}
// Execute runs the count task.
-func (c *Count) Execute(name string, logger *log.Entry, env environment.Environment, rt *Runtime) error {
+func (c *Count) Execute(name string, logger *slog.Logger, env environment.Environment, rt *Runtime) error {
c.Count++
return nil
--- a/runtime/fail.go Sun Dec 10 05:23:34 2023 -0600
+++ b/runtime/fail.go Mon Dec 11 23:01:51 2023 -0600
@@ -18,8 +18,7 @@
import (
"fmt"
-
- log "github.com/sirupsen/logrus"
+ "log/slog"
"keep.imfreedom.org/grim/convey/environment"
)
@@ -28,7 +27,7 @@
type Fail struct{}
// Execute runs the fail task.
-func (f *Fail) Execute(name string, logger *log.Entry, env environment.Environment, rt *Runtime) error {
+func (f *Fail) Execute(name string, logger *slog.Logger, env environment.Environment, rt *Runtime) error {
return fmt.Errorf("convey/fail task always fails")
}
--- a/runtime/plans.go Sun Dec 10 05:23:34 2023 -0600
+++ b/runtime/plans.go Mon Dec 11 23:01:51 2023 -0600
@@ -20,10 +20,9 @@
import (
"errors"
"fmt"
+ "log/slog"
"time"
- log "github.com/sirupsen/logrus"
-
"keep.imfreedom.org/grim/convey/logging"
"keep.imfreedom.org/grim/convey/yaml"
)
@@ -38,7 +37,7 @@
Environment yaml.StringOrSlice `yaml:"environment"`
Stages []Stage `yaml:"stages"`
- logger *log.Entry
+ logger *slog.Logger
}
// Execute runs the plan.
@@ -73,7 +72,7 @@
elapsed := time.Since(start)
rt.Timeout -= elapsed
- p.logger.Debugf("remaining plantime: %s", rt.Timeout)
+ p.logger.Debug(fmt.Sprintf("remaining plantime: %s", rt.Timeout))
if err != nil {
stageLogger.Error("stage failed")
@@ -83,7 +82,7 @@
continue
}
- stageLogger.Infof("stage finished [%s]", elapsed.Round(10*time.Millisecond))
+ stageLogger.Info(fmt.Sprintf("stage finished [%s]", elapsed.Round(10*time.Millisecond)))
}
}
--- a/runtime/runtime.go Sun Dec 10 05:23:34 2023 -0600
+++ b/runtime/runtime.go Mon Dec 11 23:01:51 2023 -0600
@@ -17,11 +17,11 @@
package runtime
import (
+ "fmt"
+ "log/slog"
"os"
"time"
- log "github.com/sirupsen/logrus"
-
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/fs"
)
@@ -81,7 +81,7 @@
rt.workspace = dir
- log.Debugf("created workspace %q", path)
+ slog.Debug(fmt.Sprintf("created workspace %q", path))
}
return rt.workspace, nil
@@ -92,16 +92,16 @@
if !rt.KeepWorkspace {
err := rt.workspace.Destroy()
if err != nil {
- log.Errorf(
+ slog.Error(fmt.Sprintf(
"failed to remove workspace %q: %s",
rt.workspace.Path(),
err,
- )
+ ))
} else {
- log.Debugf("removed workspace %q", rt.workspace.Path())
+ slog.Debug(fmt.Sprintf("removed workspace %q", rt.workspace.Path()))
}
} else {
- log.Infof("keeping workspace %q as requested", rt.workspace.Path())
+ slog.Info(fmt.Sprintf("keeping workspace %q as requested", rt.workspace.Path()))
}
}
}
--- a/runtime/stages.go Sun Dec 10 05:23:34 2023 -0600
+++ b/runtime/stages.go Mon Dec 11 23:01:51 2023 -0600
@@ -19,10 +19,9 @@
import (
"fmt"
+ "log/slog"
"sync"
- log "github.com/sirupsen/logrus"
-
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/logging"
"keep.imfreedom.org/grim/convey/yaml"
@@ -70,7 +69,7 @@
}
// Execute runs the stage.
-func (s *Stage) Execute(path string, logger *log.Entry, env environment.Environment, rt *Runtime) error {
+func (s *Stage) Execute(path string, logger *slog.Logger, env environment.Environment, rt *Runtime) error {
stageEnv := env.Copy().Merge(env).MergeSlice(s.Environment)
if s.Concurrent && !rt.ForceSequential {
@@ -138,7 +137,7 @@
err := task.Execute(absTaskName, taskLogger, stageEnv, rt)
if err != nil {
- taskLogger.Errorf("failed, %s", err)
+ taskLogger.Error(fmt.Sprintf("failed, %s", err))
return err
}
--- a/runtime/task.go Sun Dec 10 05:23:34 2023 -0600
+++ b/runtime/task.go Mon Dec 11 23:01:51 2023 -0600
@@ -16,14 +16,14 @@
package runtime
import (
- log "github.com/sirupsen/logrus"
+ "log/slog"
"keep.imfreedom.org/grim/convey/environment"
)
// Task is an interface for defining a task that can be run.
type Task interface {
- Execute(name string, logger *log.Entry, env environment.Environment, rt *Runtime) error
+ Execute(name string, logger *slog.Logger, env environment.Environment, rt *Runtime) error
New() Task
Valid() error
Deprecated() error
--- a/script/shell.go Sun Dec 10 05:23:34 2023 -0600
+++ b/script/shell.go Mon Dec 11 23:01:51 2023 -0600
@@ -1,13 +1,12 @@
package script
import (
+ "log/slog"
"os"
"path/filepath"
gort "runtime"
"strings"
- log "github.com/sirupsen/logrus"
-
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/exec"
"keep.imfreedom.org/grim/convey/runtime"
@@ -21,7 +20,7 @@
Shell string `yaml:"shell"`
}
-func (s *Shell) Execute(name string, logger *log.Entry, stageEnv environment.Environment, rt *runtime.Runtime) error {
+func (s *Shell) Execute(name string, logger *slog.Logger, stageEnv environment.Environment, rt *runtime.Runtime) error {
// Create a new environment based on the stage's environment. Then merge
// the task's environment overriding anything from the stage. Finally merge
// the runtime environment which holds the environment from the command line.
--- a/tasks/clean.go Sun Dec 10 05:23:34 2023 -0600
+++ b/tasks/clean.go Mon Dec 11 23:01:51 2023 -0600
@@ -18,12 +18,12 @@
import (
"fmt"
+ "log/slog"
"os"
"path/filepath"
"strings"
"github.com/mattn/go-zglob"
- log "github.com/sirupsen/logrus"
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/runtime"
@@ -54,7 +54,7 @@
}
// Execute runs the clean task.
-func (c *Clean) Execute(name string, logger *log.Entry, env environment.Environment, rt *runtime.Runtime) error {
+func (c *Clean) Execute(name string, logger *slog.Logger, env environment.Environment, rt *runtime.Runtime) error {
fullEnv := environment.New()
fullEnv.Merge(env)
fullEnv.Merge(rt.Environment)
@@ -82,7 +82,7 @@
return err
}
- logger.Debugf("removing \"%v\", expanded from \"%v\"", sanitized, pattern)
+ logger.Debug(fmt.Sprintf("removing \"%v\", expanded from \"%v\"", sanitized, pattern))
if err := os.RemoveAll(sanitized); err != nil {
return err
--- a/tasks/export.go Sun Dec 10 05:23:34 2023 -0600
+++ b/tasks/export.go Mon Dec 11 23:01:51 2023 -0600
@@ -17,11 +17,10 @@
package tasks
import (
+ "log/slog"
"path/filepath"
"strings"
- log "github.com/sirupsen/logrus"
-
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/fs"
"keep.imfreedom.org/grim/convey/runtime"
@@ -47,7 +46,7 @@
}
// Execute runs the task.
-func (e *Export) Execute(name string, logger *log.Entry, env environment.Environment, rt *runtime.Runtime) error {
+func (e *Export) Execute(name string, logger *slog.Logger, env environment.Environment, rt *runtime.Runtime) error {
fullEnv := env.Copy().Merge(rt.Environment)
workspace, err := rt.Workspace()
--- a/tasks/import.go Sun Dec 10 05:23:34 2023 -0600
+++ b/tasks/import.go Mon Dec 11 23:01:51 2023 -0600
@@ -18,10 +18,9 @@
import (
"fmt"
+ "log/slog"
"path/filepath"
- log "github.com/sirupsen/logrus"
-
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/fs"
"keep.imfreedom.org/grim/convey/runtime"
@@ -48,7 +47,7 @@
}
// Execute runs the task.
-func (i *Import) Execute(name string, logger *log.Entry, env environment.Environment, rt *runtime.Runtime) error {
+func (i *Import) Execute(name string, logger *slog.Logger, env environment.Environment, rt *runtime.Runtime) error {
fullEnv := env.Copy().Merge(rt.Environment)
for _, pattern := range i.Files {
--- a/tasks/noop.go Sun Dec 10 05:23:34 2023 -0600
+++ b/tasks/noop.go Mon Dec 11 23:01:51 2023 -0600
@@ -17,7 +17,7 @@
package tasks
import (
- log "github.com/sirupsen/logrus"
+ "log/slog"
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/runtime"
@@ -27,7 +27,7 @@
type Noop struct{}
// Execute runs the noop task.
-func (n *Noop) Execute(name string, logger *log.Entry, env environment.Environment, rt *runtime.Runtime) error {
+func (n *Noop) Execute(name string, logger *slog.Logger, env environment.Environment, rt *runtime.Runtime) error {
return nil
}