From a2b59be856549286efbb25c2570712792cf00c5b Mon Sep 17 00:00:00 2001
From: acud <12988138+acud@users.noreply.github.com>
Date: Fri, 26 Jul 2024 15:34:00 -0600
Subject: [PATCH 1/2] chore: get rid of urfave
---
cmd/merge-nodes/main.go | 74 +++++++++++++++++++----------------------
go.mod | 4 ---
go.sum | 6 ----
3 files changed, 35 insertions(+), 49 deletions(-)
diff --git a/cmd/merge-nodes/main.go b/cmd/merge-nodes/main.go
index c2623284ee1..4d112242325 100644
--- a/cmd/merge-nodes/main.go
+++ b/cmd/merge-nodes/main.go
@@ -1,10 +1,10 @@
package main
import (
- "fmt"
+ "log"
"os"
- "github.com/urfave/cli/v2"
+ "github.com/spf13/cobra"
"go.uber.org/zap"
"github.com/spacemeshos/go-spacemesh/cmd/merge-nodes/internal"
@@ -12,46 +12,42 @@ import (
var version string
+func init() {
+ rootCmd.Flags().StringP("from", "f", "", "The `data` folder to read identities from and merge into `to`")
+ rootCmd.MarkFlagRequired("from")
+ rootCmd.Flags().StringP("to", "t", "", "The `data` folder to write the merged node to. Can be an existing remote node or empty.")
+ rootCmd.MarkFlagRequired("to")
+}
+
func main() {
- cfg := zap.NewProductionConfig()
- cfg.Encoding = "console"
- dbLog, err := cfg.Build()
+ err := rootCmd.Execute()
if err != nil {
- fmt.Println("create logger:", err)
os.Exit(1)
}
- defer dbLog.Sync()
-
- app := &cli.App{
- Name: "Spacemesh Node Merger",
- Usage: "Merge identities of two Spacemesh nodes into one.\n" +
- "The `from` node will be merged into the `to` node, leaving the `from` node untouched.\n" +
- "The `to` node can be an existing node or an empty folder.\n" +
- "Be sure to backup the `to` node before running this command.\n" +
- "NOTE: both `from` and `to` nodes must be upgraded to the latest version before running this command.\n" +
- "NOTE: after upgrading and starting the nodes at least once, convert them to remote nodes before merging.",
- Version: version,
- Flags: []cli.Flag{
- &cli.StringFlag{
- Name: "from",
- Aliases: []string{"f"},
- Usage: "The `data` folder to read identities from and merge into `to`",
- Required: true,
- },
- &cli.StringFlag{
- Name: "to",
- Aliases: []string{"t"},
- Usage: "The `data` folder to write the merged node to. Can be an existing remote node or empty.",
- Required: true,
- },
- },
- Action: func(ctx *cli.Context) error {
- return internal.MergeDBs(ctx.Context, dbLog, ctx.String("from"), ctx.String("to"))
- },
- }
+}
- if err := app.Run(os.Args); err != nil {
- dbLog.Sugar().Warnln("app run:", err)
- os.Exit(1)
- }
+var rootCmd = &cobra.Command{
+ Use: "merge-nodes -f
-t ",
+ Short: "Spacemesh Node Merger",
+ Long: `Merge identities of two Spacemesh nodes into one.
+ The 'from' node will be merged into the 'to' node, leaving the 'from' node untouched.
+ The 'to' node can be an existing node or an empty folder.
+ Be sure to backup the 'to' node before running this command.
+ NOTE: both 'from' and 'to' nodes must be upgraded to the latest version before running this command.
+ NOTE: after upgrading and starting the nodes at least once, convert them to remote nodes before merging.`,
+ Version: version,
+ RunE: func(cmd *cobra.Command, _ []string) error {
+ cfg := zap.NewProductionConfig()
+ cfg.Encoding = "console"
+ dbLog, err := cfg.Build()
+ if err != nil {
+ log.Fatalf("create logger:", err)
+ }
+ defer dbLog.Sync()
+
+ f := cmd.Flag("from").Value.String()
+ t := cmd.Flag("to").Value.String()
+
+ return internal.MergeDBs(cmd.Context(), dbLog, f, t)
+ },
}
diff --git a/go.mod b/go.mod
index 39d0a92ab42..bbc62b44999 100644
--- a/go.mod
+++ b/go.mod
@@ -52,7 +52,6 @@ require (
github.com/spf13/viper v1.19.0
github.com/stretchr/testify v1.9.0
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7
- github.com/urfave/cli/v2 v2.27.3
github.com/zeebo/blake3 v0.2.3
go.uber.org/mock v0.4.0
go.uber.org/zap v1.27.0
@@ -85,7 +84,6 @@ require (
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/containerd/cgroups v1.1.0 // indirect
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
- github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect
@@ -202,7 +200,6 @@ require (
github.com/quic-go/webtransport-go v0.8.0 // indirect
github.com/raulk/go-watchdog v1.3.0 // indirect
github.com/robfig/cron/v3 v3.0.1 // indirect
- github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/sagikazarmark/locafero v0.4.0 // indirect
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
github.com/sourcegraph/conc v0.3.0 // indirect
@@ -211,7 +208,6 @@ require (
github.com/spf13/cast v1.6.0 // indirect
github.com/subosito/gotenv v1.6.0 // indirect
github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 // indirect
- github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect
go.opencensus.io v0.24.0 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
diff --git a/go.sum b/go.sum
index 7d6c6fc0bda..d4befa1c15d 100644
--- a/go.sum
+++ b/go.sum
@@ -76,7 +76,6 @@ github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk=
github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis=
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
-github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4=
github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -555,7 +554,6 @@ github.com/rs/cors v1.11.0 h1:0B9GE/r9Bc2UxRMMtymBkHTenPkHDv0CW4Y98GBY+po=
github.com/rs/cors v1.11.0/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU=
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
-github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46/go.mod h1:uAQ5PCi+MFsC7HjREoAz1BU+Mq60+05gifQSsHSDG/8=
github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ=
@@ -660,8 +658,6 @@ github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cb
github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE=
github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
github.com/urfave/cli v1.22.10/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
-github.com/urfave/cli/v2 v2.27.3 h1:/POWahRmdh7uztQ3CYnaDddk0Rm90PyOgIxgW2rr41M=
-github.com/urfave/cli/v2 v2.27.3/go.mod h1:m4QzxcD2qpra4z7WhzEGn74WZLViBnMpb1ToCAKdGRQ=
github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU=
github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM=
github.com/warpfork/go-wish v0.0.0-20220906213052-39a1cc7a02d0 h1:GDDkbFiaK8jsSDJfjId/PEGEShv6ugrt4kYsC5UIDaQ=
@@ -669,8 +665,6 @@ github.com/warpfork/go-wish v0.0.0-20220906213052-39a1cc7a02d0/go.mod h1:x6AKhvS
github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 h1:EKhdznlJHPMoKr0XTrX+IlJs1LH3lyx2nfr1dOlZ79k=
github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1/go.mod h1:8UvriyWtv5Q5EOgjHaSseUEdkQfvwFv1I/In/O2M9gc=
github.com/willf/bitset v1.1.9/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4=
-github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4=
-github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
From e98838b5f9f862e9094a79f28394a8cef84a80fe Mon Sep 17 00:00:00 2001
From: acud <12988138+acud@users.noreply.github.com>
Date: Fri, 26 Jul 2024 17:25:55 -0600
Subject: [PATCH 2/2] chore: lint
---
cmd/merge-nodes/main.go | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/cmd/merge-nodes/main.go b/cmd/merge-nodes/main.go
index 4d112242325..0e3f0a90c65 100644
--- a/cmd/merge-nodes/main.go
+++ b/cmd/merge-nodes/main.go
@@ -13,9 +13,11 @@ import (
var version string
func init() {
- rootCmd.Flags().StringP("from", "f", "", "The `data` folder to read identities from and merge into `to`")
+ rootCmd.Flags().StringP("from", "f", "",
+ "The `data` folder to read identities from and merge into `to`")
rootCmd.MarkFlagRequired("from")
- rootCmd.Flags().StringP("to", "t", "", "The `data` folder to write the merged node to. Can be an existing remote node or empty.")
+ rootCmd.Flags().StringP("to", "t", "",
+ "The `data` folder to write the merged node to. Can be an existing remote node or empty.")
rootCmd.MarkFlagRequired("to")
}
@@ -41,7 +43,7 @@ var rootCmd = &cobra.Command{
cfg.Encoding = "console"
dbLog, err := cfg.Build()
if err != nil {
- log.Fatalf("create logger:", err)
+ log.Fatalf("create logger: %v", err)
}
defer dbLog.Sync()