Commit 22a3dae
cmd/generate/generate.go
@@ -1,9 +1,9 @@
package generate
import (
+ "log/slog"
"os"
- "github.com/rs/zerolog/log"
"github.com/spf13/cobra"
)
@@ -15,7 +15,8 @@ var Cmd = &cobra.Command{
if len(args) == 0 {
err := cmd.Help()
if err != nil {
- log.Fatal().Msg("Failed to display help")
+ slog.Error("Failed to display help")
+ os.Exit(1)
}
os.Exit(0)
}
cmd/get/get.go
@@ -1,10 +1,9 @@
package get
import (
+ "log/slog"
"os"
- "github.com/rs/zerolog/log"
-
"github.com/spf13/cobra"
)
@@ -16,7 +15,8 @@ var Cmd = &cobra.Command{
if len(args) == 0 {
err := cmd.Help()
if err != nil {
- log.Fatal().Msg("Failed to display help")
+ slog.Error("Failed to display help")
+ os.Exit(1)
}
os.Exit(0)
}
cmd/root.go
@@ -1,12 +1,13 @@
package cmd
import (
+ "log/slog"
"os"
"github.com/kahnwong/swissknife/cmd/generate"
"github.com/kahnwong/swissknife/cmd/get"
"github.com/rs/zerolog"
- "github.com/rs/zerolog/log"
+ slogzerolog "github.com/samber/slog-zerolog"
"github.com/spf13/cobra"
)
@@ -29,7 +30,9 @@ func Execute() {
}
func init() {
- log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})
+ output := zerolog.ConsoleWriter{Out: os.Stderr}
+ logger := zerolog.New(output).With().Timestamp().Logger()
+ slog.SetDefault(slog.New(slogzerolog.Option{Logger: &logger}.NewZerologHandler()))
rootCmd.AddCommand(get.Cmd)
rootCmd.AddCommand(generate.Cmd)
internal/get/ip.go
@@ -8,7 +8,6 @@ import (
"github.com/carlmjohnson/requests"
"github.com/kahnwong/swissknife/configs/color"
- "github.com/rs/zerolog/log"
)
type PublicIPResponse struct {
@@ -72,12 +71,11 @@ func getLocalIP() (string, error) {
return "", fmt.Errorf("error on net.Dial: %w", err)
}
defer func(conn net.Conn) {
- err = conn.Close()
- if err != nil {
- log.Error().Err(err).Msg("error closing connection")
+ if cErr := conn.Close(); cErr != nil {
+ // This overwrites the return "err" with a wrapped error
+ err = fmt.Errorf("error closing connection: %w", cErr)
}
}(conn)
-
localAddr := conn.LocalAddr().(*net.UDPAddr)
// sanitize
go.mod
@@ -17,6 +17,7 @@ require (
github.com/libp2p/go-netroute v0.4.0
github.com/projectdiscovery/wappalyzergo v0.2.78
github.com/rs/zerolog v1.35.1
+ github.com/samber/slog-zerolog v1.0.0
github.com/sethvargo/go-diceware v0.5.0
github.com/sethvargo/go-password v0.3.1
github.com/shirou/gopsutil/v4 v4.26.3
@@ -51,11 +52,13 @@ require (
github.com/muesli/cancelreader v0.2.2 // indirect
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
github.com/rivo/uniseg v0.4.7 // indirect
+ github.com/samber/lo v1.38.1 // indirect
github.com/spf13/pflag v1.0.9 // indirect
github.com/tklauser/go-sysconf v0.3.16 // indirect
github.com/tklauser/numcpus v0.11.0 // indirect
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
github.com/yusufpapurcu/wmi v1.2.4 // indirect
+ golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect
golang.org/x/net v0.52.0 // indirect
golang.org/x/sync v0.20.0 // indirect
golang.org/x/sys v0.43.0 // indirect
go.sum
@@ -2,16 +2,12 @@ charm.land/bubbles/v2 v2.1.0 h1:YSnNh5cPYlYjPxRrzs5VEn3vwhtEn3jVGRBT3M7/I0g=
charm.land/bubbles/v2 v2.1.0/go.mod h1:l97h4hym2hvWBVfmJDtrEHHCtkIKeTEb3TTJ4ZOB3wY=
charm.land/bubbletea/v2 v2.0.6 h1:UHN/91OyuhaOFGSrBXQ/hMZD8IO1Uc4BvHlgHXL2WJo=
charm.land/bubbletea/v2 v2.0.6/go.mod h1:MH/D8ZLlN3op37vQvijKuU29g3rqTp+aQapURFonF9g=
-charm.land/lipgloss/v2 v2.0.2 h1:xFolbF8JdpNkM2cEPTfXEcW1p6NRzOWTSamRfYEw8cs=
-charm.land/lipgloss/v2 v2.0.2/go.mod h1:KjPle2Qd3YmvP1KL5OMHiHysGcNwq6u83MUjYkFvEkM=
charm.land/lipgloss/v2 v2.0.3 h1:yM2zJ4Cf5Y51b7RHIwioil4ApI/aypFXXVHSwlM6RzU=
charm.land/lipgloss/v2 v2.0.3/go.mod h1:7myLU9iG/3xluAWzpY/fSxYYHCgoKTie7laxk6ATwXA=
-github.com/anatol/smart.go v0.0.0-20260419142952-c2af97cbb53f h1:3z5Dn22OIlZS4qO8pm1K1/sYmUfaFVdARQFCD29h/Es=
-github.com/anatol/smart.go v0.0.0-20260419142952-c2af97cbb53f/go.mod h1:ukYit5s/IEmWOGZokOlZs6bIvV5xD4bly0SFawzj7+8=
github.com/anatol/smart.go v0.0.0-20260427185427-04c4679efd4e h1:bpQpdTe8DkhjYimnPoH+T1XkjXtLwyNtENPjoh9oNcI=
github.com/anatol/smart.go v0.0.0-20260427185427-04c4679efd4e/go.mod h1:PrHdljtLe/VXVRH+zAJOcPjHkOHjF8/T2Arblruu/ac=
-github.com/anatol/vmtest v0.0.0-20250627153117-302402d269a6 h1:zdaWj/ncXyzpPH3YqACvJXMrJxkkILrnWbjHojHBctc=
-github.com/anatol/vmtest v0.0.0-20250627153117-302402d269a6/go.mod h1:m5pN88x7ZnEDGXZldwg7RCX+EikR9qz/iSI2GzXq++Y=
+github.com/anatol/vmtest v0.0.0-20260313235012-c2b0479898b4 h1:E9KSKETdT7YYxgOAWMRshWLoMF40nV53ZFTPskPXUTI=
+github.com/anatol/vmtest v0.0.0-20260313235012-c2b0479898b4/go.mod h1:LQKSHEViwHPr4yRxK/6U+WpYY8ytg1uvVrjt/+PYgfI=
github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=
github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
github.com/aymanbagabas/go-udiff v0.4.1 h1:OEIrQ8maEeDBXQDoGCbbTTXYJMYRCRO1fnodZ12Gv5o=
@@ -87,8 +83,6 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU=
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
-github.com/projectdiscovery/wappalyzergo v0.2.72 h1:/vBIZwCJP3yj/LQstB8VZLX6Dl2BQfmDNKYXf0a2Bvo=
-github.com/projectdiscovery/wappalyzergo v0.2.72/go.mod h1:Oc+U2RPJObmpi6LW5lTMEDiKagcKZNkEfZfwrVMURa0=
github.com/projectdiscovery/wappalyzergo v0.2.78 h1:kqfZLl1WocCheTDxLuuuB00FdCX+1QojhGnMwc+TgZQ=
github.com/projectdiscovery/wappalyzergo v0.2.78/go.mod h1:hRsnKNleH693FFJsBOD5NMUDbxw/Q94f0Oq2OV04Q6M=
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
@@ -96,6 +90,10 @@ github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUc
github.com/rs/zerolog v1.35.1 h1:m7xQeoiLIiV0BCEY4Hs+j2NG4Gp2o2KPKmhnnLiazKI=
github.com/rs/zerolog v1.35.1/go.mod h1:EjML9kdfa/RMA7h/6z6pYmq1ykOuA8/mjWaEvGI+jcw=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/samber/lo v1.38.1 h1:j2XEAqXKb09Am4ebOg31SpvzUTTs6EN3VfgeLUhPdXM=
+github.com/samber/lo v1.38.1/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA=
+github.com/samber/slog-zerolog v1.0.0 h1:YpRy0xux1uJr0Ng3wrEjv9nyvb4RAoNqkS611UjzeG8=
+github.com/samber/slog-zerolog v1.0.0/go.mod h1:N2/g/mNGRY1zqsydIYE0uKipSSFsPDjytoVkRnZ0Jp0=
github.com/sethvargo/go-diceware v0.5.0 h1:exrQ7GpaBo00GqRVM1N8ChXSsi3oS7tjQiIehsD+yR0=
github.com/sethvargo/go-diceware v0.5.0/go.mod h1:Lg1SyPS7yQO6BBgTN5r4f2MUDkqGfLWsOjHPY0kA8iw=
github.com/sethvargo/go-password v0.3.1 h1:WqrLTjo7X6AcVYfC6R7GtSyuUQR9hGyAj/f1PYQZCJU=