grim/hgkeeper

Use Go 1.22 and update dependencies
default tip
2 months ago, aklitzing
f33f223bc8fe
Use Go 1.22 and update dependencies

Reviewed at https://reviews.imfreedom.org/r/2949/
package main
import (
"os"
"github.com/alecthomas/kong"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"keep.imfreedom.org/grim/hgkeeper/authorized_keys"
"keep.imfreedom.org/grim/hgkeeper/globals"
"keep.imfreedom.org/grim/hgkeeper/hg"
"keep.imfreedom.org/grim/hgkeeper/once"
"keep.imfreedom.org/grim/hgkeeper/serve"
"keep.imfreedom.org/grim/hgkeeper/setup"
"keep.imfreedom.org/grim/hgkeeper/version"
)
type commands struct {
globals.Globals
AuthorizedKeys authorized_keys.Command `kong:"cmd,help='output an sshd authorized keys file'"`
Once once.Command `kong:"cmd,help='run hgkeeper for one transaction. This is used when integrating with a system ssh server'"`
Serve serve.Command `kong:"cmd,help='run the ssh server'"`
Setup setup.Command `kong:"cmd,help='inital setup for the server'"`
Version version.Command `kong:"cmd,help='display the version and exit'"`
}
func initLogging() {
levelEncoder := zapcore.CapitalColorLevelEncoder
switch os.Getenv("TERM") {
case "win":
fallthrough
case "dumb":
levelEncoder = zapcore.CapitalLevelEncoder
}
logger, _ := zap.Config{
Encoding: "console",
Level: zap.NewAtomicLevelAt(zapcore.DebugLevel),
OutputPaths: []string{"stdout"},
ErrorOutputPaths: []string{"stderr"},
EncoderConfig: zapcore.EncoderConfig{
MessageKey: "message",
LevelKey: "level",
EncodeLevel: levelEncoder,
TimeKey: "time",
EncodeTime: zapcore.ISO8601TimeEncoder,
},
}.Build()
defer logger.Sync()
zap.ReplaceGlobals(logger)
}
func main() {
cmd := commands{}
ctx := kong.Parse(&cmd)
if ctx.Command() == "serve" {
initLogging()
}
if err := hg.SetExe(cmd.Globals.HgExecutable); err != nil {
ctx.FatalIfErrorf(err)
}
if err := ctx.Run(&cmd.Globals); err != nil {
ctx.FatalIfErrorf(err)
}
}