Skip to content

Commit 2e3b32c

Browse files
committed
update ensure-oplog to cobra
1 parent 3dd80f5 commit 2e3b32c

File tree

1 file changed

+59
-37
lines changed

1 file changed

+59
-37
lines changed

e2e-tests/cmd/ensure-oplog/main.go

Lines changed: 59 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ import (
99
"strings"
1010
"time"
1111

12-
"github.com/alecthomas/kingpin"
12+
"github.com/spf13/cobra"
13+
"github.com/spf13/viper"
1314
"go.mongodb.org/mongo-driver/bson"
1415
"go.mongodb.org/mongo-driver/bson/primitive"
1516
"go.mongodb.org/mongo-driver/mongo"
@@ -29,43 +30,64 @@ import (
2930

3031
var logger = stdlog.New(os.Stdout, "", stdlog.Ltime)
3132

32-
func main() {
33-
ctx := context.Background()
34-
35-
app := kingpin.New("ensure-oplog", "ensure oplog chunks")
36-
cmd := app.Command("run", "").Default().Hidden()
37-
uri := cmd.Flag("mongodb-uri", "mongodb URI").Envar("PBM_MONGODB_URI").String()
38-
fromS := cmd.Flag("from", "first op time").String()
39-
tillS := cmd.Flag("till", "last op time").String()
40-
_, err := app.DefaultEnvars().Parse(os.Args[1:])
41-
if err != nil {
42-
stdlog.Fatal(err)
43-
}
44-
45-
fromTS, err := parseTS(*fromS)
46-
if err != nil {
47-
stdlog.Fatalf("parse from time: %s", err.Error())
48-
}
49-
tillTS, err := parseTS(*tillS)
50-
if err != nil {
51-
stdlog.Fatalf("parse till time: %s", err.Error())
52-
}
53-
54-
t, err := connTopo(ctx, *uri)
55-
if err != nil {
56-
stdlog.Fatalf("getTopo: %s", err.Error())
57-
}
58-
59-
switch t {
60-
case topoMongos:
61-
err = ensureClusterOplog(ctx, *uri, fromTS, tillTS)
62-
case topoReplset:
63-
err = ensureReplsetOplog(ctx, *uri, fromTS, tillTS)
64-
default:
65-
err = errors.New("unsupported connection")
66-
}
33+
type rootOpts struct {
34+
mURL string
35+
fromS string
36+
tillS string
37+
}
6738

68-
if err != nil {
39+
func main() {
40+
rootOptions := rootOpts{}
41+
rootCmd := &cobra.Command{
42+
Use: "ensure-oplog",
43+
Short: "ensure oplog chunks",
44+
SilenceUsage: true,
45+
RunE: func(cmd *cobra.Command, args []string) error {
46+
ctx := context.Background()
47+
48+
if rootOptions.mURL == "" {
49+
rootOptions.mURL = viper.GetString("mongodb-uri")
50+
}
51+
52+
fromTS, err := parseTS(rootOptions.fromS)
53+
if err != nil {
54+
return errors.Wrap(err, "parse from time")
55+
}
56+
tillTS, err := parseTS(rootOptions.tillS)
57+
if err != nil {
58+
return errors.Wrap(err, "parse till time")
59+
}
60+
61+
t, err := connTopo(ctx, rootOptions.mURL)
62+
if err != nil {
63+
return errors.Wrap(err, "getTopo")
64+
}
65+
66+
switch t {
67+
case topoMongos:
68+
err = ensureClusterOplog(ctx, rootOptions.mURL, fromTS, tillTS)
69+
case topoReplset:
70+
err = ensureReplsetOplog(ctx, rootOptions.mURL, fromTS, tillTS)
71+
default:
72+
err = errors.New("unsupported connection")
73+
}
74+
75+
if err != nil {
76+
return err
77+
}
78+
79+
return nil
80+
},
81+
}
82+
83+
rootCmd.PersistentFlags().StringVar(&rootOptions.mURL, "mongodb-uri", "", "MongoDB connection string")
84+
_ = viper.BindPFlag("mongodb-uri", rootCmd.PersistentFlags().Lookup("mongodb-uri"))
85+
_ = viper.BindEnv("mongodb-uri", "PBM_MONGODB_URI")
86+
87+
rootCmd.Flags().StringVar(&rootOptions.fromS, "from", "", "first op time")
88+
rootCmd.Flags().StringVar(&rootOptions.tillS, "till", "", "last op time")
89+
90+
if err := rootCmd.Execute(); err != nil {
6991
stdlog.Fatal(err)
7092
}
7193
}

0 commit comments

Comments
 (0)