Detailed changes
@@ -1,9 +1,9 @@
package main
import (
- "log"
"runtime/debug"
+ "github.com/charmbracelet/log"
"github.com/spf13/cobra"
)
@@ -49,6 +49,6 @@ func init() {
func main() {
if err := rootCmd.Execute(); err != nil {
- log.Fatalln(err)
+ log.Fatal(err)
}
}
@@ -2,12 +2,14 @@ package main
import (
"context"
- "log"
+ "fmt"
"os"
"os/signal"
"syscall"
"time"
+ "github.com/charmbracelet/log"
+
"github.com/charmbracelet/soft-serve/server"
"github.com/charmbracelet/soft-serve/server/config"
"github.com/spf13/cobra"
@@ -23,7 +25,7 @@ var (
cfg := config.DefaultConfig()
s := server.NewServer(cfg)
- log.Printf("Starting SSH server on %s:%d", cfg.BindAddr, cfg.Port)
+ log.Print("Starting SSH server", "addr", fmt.Sprintf("%s:%d", cfg.BindAddr, cfg.Port))
done := make(chan os.Signal, 1)
lch := make(chan error, 1)
@@ -36,7 +38,7 @@ var (
signal.Notify(done, os.Interrupt, syscall.SIGINT, syscall.SIGTERM)
<-done
- log.Printf("Stopping SSH server on %s:%d", cfg.BindAddr, cfg.Port)
+ log.Print("Stopping SSH server", "addr", fmt.Sprintf("%s:%d", cfg.BindAddr, cfg.Port))
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
if err := s.Shutdown(ctx); err != nil {
@@ -1,9 +1,10 @@
package config
import (
- "log"
"strings"
+ "github.com/charmbracelet/log"
+
gm "github.com/charmbracelet/wish/git"
"github.com/gliderlabs/ssh"
gossh "golang.org/x/crypto/ssh"
@@ -14,19 +15,19 @@ func (cfg *Config) Push(repo string, pk ssh.PublicKey) {
go func() {
err := cfg.Reload()
if err != nil {
- log.Printf("error reloading after push: %s", err)
+ log.Error("error reloading after push", "err", err)
}
if cfg.Cfg.Callbacks != nil {
cfg.Cfg.Callbacks.Push(repo)
}
r, err := cfg.Source.GetRepo(repo)
if err != nil {
- log.Printf("error getting repo after push: %s", err)
+ log.Error("error getting repo after push", "err", err)
return
}
err = r.UpdateServerInfo()
if err != nil {
- log.Printf("error updating server info after push: %s", err)
+ log.Error("error updating server info after push", "err", err)
}
}()
}
@@ -88,7 +89,7 @@ func (cfg *Config) accessForKey(repo string, pk ssh.PublicKey) gm.AccessLevel {
for _, k := range user.PublicKeys {
apk, _, _, _, err := ssh.ParseAuthorizedKey([]byte(strings.TrimSpace(k)))
if err != nil {
- log.Printf("error: malformed authorized key: '%s'", k)
+ log.Error("malformed authorized key", "key", k)
return gm.NoAccess
}
if ssh.KeysEqual(pk, apk) {
@@ -5,13 +5,14 @@ import (
"encoding/json"
"errors"
"io/fs"
- "log"
"path/filepath"
"strings"
"sync"
"text/template"
"time"
+ "github.com/charmbracelet/log"
+
"golang.org/x/crypto/ssh"
"gopkg.in/yaml.v3"
@@ -192,7 +193,7 @@ func (cfg *Config) Reload() error {
}
if err := cfg.readConfig(repo, &rc); err != nil {
if !errors.Is(err, ErrNoConfig) {
- log.Printf("error reading config: %v", err)
+ log.Error("error reading config", "err", err)
}
continue
}
@@ -208,7 +209,7 @@ func (cfg *Config) Reload() error {
repo := r.Repo()
err = r.UpdateServerInfo()
if err != nil {
- log.Printf("error updating server info for %s: %s", repo, err)
+ log.Error("error updating server info", "repo", repo, "err", err)
}
pat := "README*"
rp := ""
@@ -2,11 +2,12 @@ package config
import (
"errors"
- "log"
"os"
"path/filepath"
"sync"
+ "github.com/charmbracelet/log"
+
"github.com/charmbracelet/soft-serve/git"
"github.com/gobwas/glob"
"github.com/golang/groupcache/lru"
@@ -239,7 +240,7 @@ func (rs *RepoSource) LoadRepo(name string) error {
rp := filepath.Join(rs.Path, name)
r, err := rs.open(rp)
if err != nil {
- log.Printf("error opening repository %q: %s", rp, err)
+ log.Error("error opening repository", "path", rp, "err", err)
return err
}
rs.repos[name] = r
@@ -254,7 +255,7 @@ func (rs *RepoSource) LoadRepos() error {
}
for _, de := range rd {
if !de.IsDir() {
- log.Printf("warning: %q is not a directory", filepath.Join(rs.Path, de.Name()))
+ log.Warn("not a directory", "path", filepath.Join(rs.Path, de.Name()))
continue
}
err = rs.LoadRepo(de.Name())
@@ -11,13 +11,14 @@ import (
"context"
"flag"
"fmt"
- "log"
"net"
"os"
"os/signal"
"syscall"
"time"
+ "github.com/charmbracelet/log"
+
"github.com/charmbracelet/soft-serve/server"
"github.com/charmbracelet/soft-serve/server/config"
)
@@ -34,14 +35,14 @@ func main() {
// To listen on port 22 we need root privileges
ls, err := net.Listen("tcp", addr)
if err != nil {
- log.Fatalf("Can't listen: %s", err)
+ log.Fatal("Can't listen", "err", err)
}
// We don't need root privileges any more
if err := syscall.Setgid(*gid); err != nil {
- log.Fatalf("Setgid error: %s", err)
+ log.Fatal("Setgid error", "err", err)
}
if err := syscall.Setuid(*uid); err != nil {
- log.Fatalf("Setuid error: %s", err)
+ log.Fatal("Setuid error", "err", err)
}
cfg := config.DefaultConfig()
cfg.Port = *port
@@ -50,19 +51,19 @@ func main() {
done := make(chan os.Signal, 1)
signal.Notify(done, os.Interrupt, syscall.SIGINT, syscall.SIGTERM)
- log.Printf("Starting SSH server on %s:%d", cfg.BindAddr, cfg.Port)
+ log.Print("Starting SSH server", "addr", fmt.Sprintf("%s:%d", cfg.BindAddr, cfg.Port))
go func() {
if err := s.Serve(ls); err != nil {
- log.Fatalln(err)
+ log.Fatal(err)
}
}()
<-done
- log.Printf("Stopping SSH server on %s:%d", cfg.BindAddr, cfg.Port)
+ log.Print("Stopping SSH server", fmt.Sprintf("%s:%d", cfg.BindAddr, cfg.Port))
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer func() { cancel() }()
if err := s.Shutdown(ctx); err != nil {
- log.Fatalln(err)
+ log.Fatal(err)
}
}
@@ -1,10 +1,11 @@
package config
import (
- "log"
+ glog "log"
"path/filepath"
"github.com/caarlos0/env/v6"
+ "github.com/charmbracelet/log"
)
// Callbacks provides an interface that can be used to run callbacks on different events.
@@ -23,15 +24,15 @@ type Config struct {
RepoPath string `env:"SOFT_SERVE_REPO_PATH" envDefault:".repos"`
InitialAdminKeys []string `env:"SOFT_SERVE_INITIAL_ADMIN_KEY" envSeparator:"\n"`
Callbacks Callbacks
- ErrorLog *log.Logger
+ ErrorLog *glog.Logger
}
// DefaultConfig returns a Config with the values populated with the defaults
// or specified environment variables.
func DefaultConfig() *Config {
- cfg := &Config{ErrorLog: log.Default()}
+ cfg := &Config{ErrorLog: log.StandardLog(log.StandardLogOption{ForceLevel: log.ErrorLevel})}
if err := env.Parse(cfg); err != nil {
- log.Fatalln(err)
+ log.Fatal(err)
}
if cfg.KeyPath == "" {
// NB: cross-platform-compatible path
@@ -47,7 +48,7 @@ func (c *Config) WithCallbacks(callbacks Callbacks) *Config {
}
// WithErrorLogger sets the error logger for the configuration.
-func (c *Config) WithErrorLogger(logger *log.Logger) *Config {
+func (c *Config) WithErrorLogger(logger *glog.Logger) *Config {
c.ErrorLog = logger
return c
}
@@ -3,11 +3,12 @@ package server
import (
"context"
"fmt"
- "log"
"net"
"path/filepath"
"strings"
+ "github.com/charmbracelet/log"
+
appCfg "github.com/charmbracelet/soft-serve/config"
"github.com/charmbracelet/soft-serve/server/config"
"github.com/charmbracelet/wish"
@@ -63,7 +64,7 @@ func NewServer(cfg *config.Config) *Server {
sh(s)
}
},
- lm.Middleware(),
+ lm.MiddlewareWithLogger(log.StandardLog(log.StandardLogOption{ForceLevel: log.DebugLevel})),
),
}
s, err := wish.NewServer(
@@ -74,7 +75,7 @@ func NewServer(cfg *config.Config) *Server {
wish.WithMiddleware(mw...),
)
if err != nil {
- log.Fatalln(err)
+ log.Fatal(err)
}
return &Server{
SSHServer: s,