grim/convey

Port from logrus to log/slog
default tip
4 months ago, Elliott Sales de Andrade
c588f9b3f559
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/
// 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 main
import (
"fmt"
"os"
"runtime/debug"
"github.com/alecthomas/kong"
"keep.imfreedom.org/grim/convey/consts"
"keep.imfreedom.org/grim/convey/globals"
"keep.imfreedom.org/grim/convey/runner"
)
type VersionCmd struct{}
func (c *VersionCmd) Run(g *globals.Globals) error {
fmt.Printf("convey %s\n", consts.Version)
if g.Verbose {
fmt.Printf("additional information...\n")
}
return nil
}
var cli struct {
globals.Globals
Run runner.RunnerCmd `kong:"cmd,help='Run plans'"`
Version VersionCmd `kong:"cmd,help='Show the version and exit'"`
}
func gomain() int {
ctx := kong.Parse(
&cli,
kong.Name("convey"),
kong.Description("Convey is a container pipeline runner."),
kong.UsageOnError(),
kong.ConfigureHelp(kong.HelpOptions{
Compact: true,
Summary: true,
}),
)
err := ctx.Run(&cli.Globals)
if err != nil {
fmt.Fprintf(os.Stderr, "error: %s\n", err)
return 1
}
return 0
}
func main() {
exitCode := 0
defer func() {
if r := recover(); r != nil {
fmt.Printf("panic: %s\n%s", r, debug.Stack())
}
os.Exit(exitCode)
}()
exitCode = gomain()
}