forked from czarcas7ic/cosmprund
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathroot.go
More file actions
118 lines (99 loc) · 3.85 KB
/
root.go
File metadata and controls
118 lines (99 loc) · 3.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package cmd
import (
"os"
"github.com/cometbft/cometbft/libs/log"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
var (
dataDir string
backend string
app string
cosmosSdk bool
tendermint bool
blocks uint64
versions uint64
debug bool
disableFastNode bool
appName = "cosmprund"
logger log.Logger
)
// NewRootCmd returns the root command for relayer.
func NewRootCmd() *cobra.Command {
// RootCmd represents the base command when called without any subcommands
var rootCmd = &cobra.Command{
Use: appName,
Short: "cosmprund is meant to prune data base history from a cosmos application, avoiding needing to state sync every couple amount of weeks",
}
rootCmd.PersistentPreRunE = func(cmd *cobra.Command, _ []string) error {
// reads `homeDir/config.yaml` into `var config *Config` before each command
// if err := initConfig(rootCmd); err != nil {
// return err
// }
logger = log.NewTMLogger(log.NewSyncWriter(os.Stdout))
// Set log level based on debug flag
if debug {
// Show all logs including Debug level
logger = log.NewFilter(logger, log.AllowDebug())
} else {
// Only show Info level and above (hides Debug logs like loadVersion commitID)
logger = log.NewFilter(logger, log.AllowInfo())
}
return nil
}
// --blocks flag
rootCmd.PersistentFlags().Uint64VarP(&blocks, "blocks", "b", 10, "set the amount of blocks to keep (default=10)")
if err := viper.BindPFlag("blocks", rootCmd.PersistentFlags().Lookup("blocks")); err != nil {
panic(err)
}
// --versions flag
rootCmd.PersistentFlags().Uint64VarP(&versions, "versions", "v", 10, "set the amount of versions to keep in the application store (default=10)")
if err := viper.BindPFlag("versions", rootCmd.PersistentFlags().Lookup("versions")); err != nil {
panic(err)
}
// --backend flag
rootCmd.PersistentFlags().StringVar(&backend, "backend", "goleveldb", "set the type of db being used(default=goleveldb)") //todo add list of dbs to comment
if err := viper.BindPFlag("backend", rootCmd.PersistentFlags().Lookup("backend")); err != nil {
panic(err)
}
// --app flag
rootCmd.PersistentFlags().StringVar(&app, "app", "osmosis", "set the app you are pruning (supported apps: osmosis)")
if err := viper.BindPFlag("app", rootCmd.PersistentFlags().Lookup("app")); err != nil {
panic(err)
}
// --cosmos-sdk flag
rootCmd.PersistentFlags().BoolVar(&cosmosSdk, "cosmos-sdk", true, "set to false if using only with tendermint (default true)")
if err := viper.BindPFlag("cosmos-sdk", rootCmd.PersistentFlags().Lookup("cosmos-sdk")); err != nil {
panic(err)
}
// --tendermint flag
rootCmd.PersistentFlags().BoolVar(&tendermint, "tendermint", true, "set to false you dont want to prune tendermint data(default true)")
if err := viper.BindPFlag("tendermint", rootCmd.PersistentFlags().Lookup("tendermint")); err != nil {
panic(err)
}
// --debug flag
rootCmd.PersistentFlags().BoolVar(&debug, "debug", false, "enable debug logging (shows debug logs)")
if err := viper.BindPFlag("debug", rootCmd.PersistentFlags().Lookup("debug")); err != nil {
panic(err)
}
// --disable-fast-node flag
rootCmd.PersistentFlags().BoolVar(&disableFastNode, "disable-fast-node", true, "disable IAVL fast node for faster pruning (default: false, fast node enabled)")
if err := viper.BindPFlag("disable-fast-node", rootCmd.PersistentFlags().Lookup("disable-fast-node")); err != nil {
panic(err)
}
rootCmd.AddCommand(
pruneCmd(),
)
return rootCmd
}
// Execute adds all child commands to the root command and sets flags appropriately.
// This is called by main.main(). It only needs to happen once to the rootCmd.
func Execute() {
cobra.EnableCommandSorting = false
rootCmd := NewRootCmd()
rootCmd.SilenceUsage = true
rootCmd.CompletionOptions.DisableDefaultCmd = true
if err := rootCmd.Execute(); err != nil {
os.Exit(1)
}
}