diff --git a/cmd/root.go b/cmd/root.go index 9b10a29..33e54e8 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -21,11 +21,11 @@ import ( "os" "strings" - "github.com/vulcanize/ipld-eth-state-snapshot/pkg/snapshot" - log "github.com/sirupsen/logrus" "github.com/spf13/cobra" "github.com/spf13/viper" + + "github.com/vulcanize/ipld-eth-state-snapshot/pkg/snapshot" ) var ( @@ -48,7 +48,7 @@ func Execute() { } func initFuncs(cmd *cobra.Command, args []string) { - logfile := viper.GetString("log.file") + logfile := viper.GetString(snapshot.LOGRUS_FILE_TOML) if logfile != "" { file, err := os.OpenFile(logfile, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) @@ -68,7 +68,7 @@ func initFuncs(cmd *cobra.Command, args []string) { } func logLevel() error { - lvl, err := log.ParseLevel(viper.GetString("log.level")) + lvl, err := log.ParseLevel(viper.GetString(snapshot.LOGRUS_LEVEL_TOML)) if err != nil { return err } @@ -86,21 +86,21 @@ func init() { viper.AutomaticEnv() rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file location") - rootCmd.PersistentFlags().String("log-file", "", "file path for logging") - rootCmd.PersistentFlags().String("database-name", "vulcanize_public", "database name") - rootCmd.PersistentFlags().Int("database-port", 5432, "database port") - rootCmd.PersistentFlags().String("database-hostname", "localhost", "database hostname") - rootCmd.PersistentFlags().String("database-user", "", "database user") - rootCmd.PersistentFlags().String("database-password", "", "database password") - rootCmd.PersistentFlags().String("log-level", log.InfoLevel.String(), "Log level (trace, debug, info, warn, error, fatal, panic") + rootCmd.PersistentFlags().String(snapshot.LOGRUS_FILE_CLI, "", "file path for logging") + rootCmd.PersistentFlags().String(snapshot.DATABASE_NAME_CLI, "vulcanize_public", "database name") + rootCmd.PersistentFlags().Int(snapshot.DATABASE_PORT_CLI, 5432, "database port") + rootCmd.PersistentFlags().String(snapshot.DATABASE_HOSTNAME_CLI, "localhost", "database hostname") + rootCmd.PersistentFlags().String(snapshot.DATABASE_USER_CLI, "", "database user") + rootCmd.PersistentFlags().String(snapshot.DATABASE_PASSWORD_CLI, "", "database password") + rootCmd.PersistentFlags().String(snapshot.LOGRUS_LEVEL_CLI, log.InfoLevel.String(), "log level (trace, debug, info, warn, error, fatal, panic") - viper.BindPFlag(snapshot.LOGRUS_FILE_TOML, rootCmd.PersistentFlags().Lookup("log-file")) - viper.BindPFlag(snapshot.DATABASE_NAME_TOML, rootCmd.PersistentFlags().Lookup("database-name")) - viper.BindPFlag(snapshot.DATABASE_PORT_TOML, rootCmd.PersistentFlags().Lookup("database-port")) - viper.BindPFlag(snapshot.DATABASE_HOSTNAME_TOML, rootCmd.PersistentFlags().Lookup("database-hostname")) - viper.BindPFlag(snapshot.DATABASE_USER_TOML, rootCmd.PersistentFlags().Lookup("database-user")) - viper.BindPFlag(snapshot.DATABASE_PASSWORD_TOML, rootCmd.PersistentFlags().Lookup("database-password")) - viper.BindPFlag(snapshot.LOGRUS_LEVEL_TOML, rootCmd.PersistentFlags().Lookup("log-level")) + viper.BindPFlag(snapshot.LOGRUS_FILE_TOML, rootCmd.PersistentFlags().Lookup(snapshot.LOGRUS_FILE_CLI)) + viper.BindPFlag(snapshot.DATABASE_NAME_TOML, rootCmd.PersistentFlags().Lookup(snapshot.DATABASE_NAME_CLI)) + viper.BindPFlag(snapshot.DATABASE_PORT_TOML, rootCmd.PersistentFlags().Lookup(snapshot.DATABASE_PORT_CLI)) + viper.BindPFlag(snapshot.DATABASE_HOSTNAME_TOML, rootCmd.PersistentFlags().Lookup(snapshot.DATABASE_HOSTNAME_CLI)) + viper.BindPFlag(snapshot.DATABASE_USER_TOML, rootCmd.PersistentFlags().Lookup(snapshot.DATABASE_USER_CLI)) + viper.BindPFlag(snapshot.DATABASE_PASSWORD_TOML, rootCmd.PersistentFlags().Lookup(snapshot.DATABASE_PASSWORD_CLI)) + viper.BindPFlag(snapshot.LOGRUS_LEVEL_TOML, rootCmd.PersistentFlags().Lookup(snapshot.LOGRUS_LEVEL_CLI)) } func initConfig() { diff --git a/cmd/stateSnapshot.go b/cmd/stateSnapshot.go index 732befa..c44d84e 100644 --- a/cmd/stateSnapshot.go +++ b/cmd/stateSnapshot.go @@ -40,7 +40,7 @@ var stateSnapshotCmd = &cobra.Command{ } func stateSnapshot() { - modeStr := viper.GetString("snapshot.mode") + modeStr := viper.GetString(snapshot.SNAPSHOT_MODE_TOML) mode := snapshot.SnapshotMode(modeStr) config, err := snapshot.NewConfig(mode) if err != nil { @@ -52,8 +52,8 @@ func stateSnapshot() { if err != nil { logWithCommand.Fatal(err) } - height := viper.GetInt64("snapshot.blockHeight") - recoveryFile := viper.GetString("snapshot.recoveryFile") + height := viper.GetInt64(snapshot.SNAPSHOT_BLOCK_HEIGHT_TOML) + recoveryFile := viper.GetString(snapshot.SNAPSHOT_RECOVERY_FILE_TOML) if recoveryFile == "" { recoveryFile = fmt.Sprintf("./%d_snapshot_recovery", height) logWithCommand.Infof("no recovery file set, creating default: %s", recoveryFile) @@ -68,7 +68,7 @@ func stateSnapshot() { if err != nil { logWithCommand.Fatal(err) } - workers := viper.GetUint("snapshot.workers") + workers := viper.GetUint(snapshot.SNAPSHOT_WORKERS_TOML) if height < 0 { if err := snapshotService.CreateLatestSnapshot(workers); err != nil { @@ -86,19 +86,19 @@ func stateSnapshot() { func init() { rootCmd.AddCommand(stateSnapshotCmd) - stateSnapshotCmd.PersistentFlags().String("leveldb-path", "", "path to primary datastore") - stateSnapshotCmd.PersistentFlags().String("ancient-path", "", "path to ancient datastore") - stateSnapshotCmd.PersistentFlags().String("block-height", "", "blockheight to extract state at") - stateSnapshotCmd.PersistentFlags().Int("workers", 1, "number of concurrent workers to use") - stateSnapshotCmd.PersistentFlags().String("recovery-file", "", "file to recover from a previous iteration") - stateSnapshotCmd.PersistentFlags().String("snapshot-mode", "postgres", "output mode for snapshot ('file' or 'postgres')") - stateSnapshotCmd.PersistentFlags().String("output-dir", "", "directory for writing ouput to while operating in 'file' mode") + stateSnapshotCmd.PersistentFlags().String(snapshot.LVL_DB_PATH_CLI, "", "path to primary datastore") + stateSnapshotCmd.PersistentFlags().String(snapshot.ANCIENT_DB_PATH_CLI, "", "path to ancient datastore") + stateSnapshotCmd.PersistentFlags().String(snapshot.SNAPSHOT_BLOCK_HEIGHT_CLI, "", "block height to extract state at") + stateSnapshotCmd.PersistentFlags().Int(snapshot.SNAPSHOT_WORKERS_CLI, 1, "number of concurrent workers to use") + stateSnapshotCmd.PersistentFlags().String(snapshot.SNAPSHOT_RECOVERY_FILE_CLI, "", "file to recover from a previous iteration") + stateSnapshotCmd.PersistentFlags().String(snapshot.SNAPSHOT_MODE_CLI, "postgres", "output mode for snapshot ('file' or 'postgres')") + stateSnapshotCmd.PersistentFlags().String(snapshot.FILE_OUTPUT_DIR_CLI, "", "directory for writing ouput to while operating in 'file' mode") - viper.BindPFlag(snapshot.LVL_DB_PATH_TOML, stateSnapshotCmd.PersistentFlags().Lookup("leveldb-path")) - viper.BindPFlag(snapshot.ANCIENT_DB_PATH_TOML, stateSnapshotCmd.PersistentFlags().Lookup("ancient-path")) - viper.BindPFlag(snapshot.SNAPSHOT_BLOCK_HEIGHT_TOML, stateSnapshotCmd.PersistentFlags().Lookup("block-height")) - viper.BindPFlag(snapshot.SNAPSHOT_WORKERS_TOML, stateSnapshotCmd.PersistentFlags().Lookup("workers")) - viper.BindPFlag(snapshot.SNAPSHOT_RECOVERY_FILE_TOML, stateSnapshotCmd.PersistentFlags().Lookup("recovery-file")) - viper.BindPFlag(snapshot.SNAPSHOT_MODE_TOML, stateSnapshotCmd.PersistentFlags().Lookup("snapshot-mode")) - viper.BindPFlag(snapshot.FILE_OUTPUT_DIR_TOML, stateSnapshotCmd.PersistentFlags().Lookup("output-dir")) + viper.BindPFlag(snapshot.LVL_DB_PATH_TOML, stateSnapshotCmd.PersistentFlags().Lookup(snapshot.LVL_DB_PATH_CLI)) + viper.BindPFlag(snapshot.ANCIENT_DB_PATH_TOML, stateSnapshotCmd.PersistentFlags().Lookup(snapshot.ANCIENT_DB_PATH_CLI)) + viper.BindPFlag(snapshot.SNAPSHOT_BLOCK_HEIGHT_TOML, stateSnapshotCmd.PersistentFlags().Lookup(snapshot.SNAPSHOT_BLOCK_HEIGHT_CLI)) + viper.BindPFlag(snapshot.SNAPSHOT_WORKERS_TOML, stateSnapshotCmd.PersistentFlags().Lookup(snapshot.SNAPSHOT_WORKERS_CLI)) + viper.BindPFlag(snapshot.SNAPSHOT_RECOVERY_FILE_TOML, stateSnapshotCmd.PersistentFlags().Lookup(snapshot.SNAPSHOT_RECOVERY_FILE_CLI)) + viper.BindPFlag(snapshot.SNAPSHOT_MODE_TOML, stateSnapshotCmd.PersistentFlags().Lookup(snapshot.SNAPSHOT_MODE_CLI)) + viper.BindPFlag(snapshot.FILE_OUTPUT_DIR_TOML, stateSnapshotCmd.PersistentFlags().Lookup(snapshot.FILE_OUTPUT_DIR_CLI)) } diff --git a/pkg/snapshot/env.go b/pkg/snapshot/env.go index 99935a0..b851ceb 100644 --- a/pkg/snapshot/env.go +++ b/pkg/snapshot/env.go @@ -15,12 +15,7 @@ package snapshot -/* - viper.BindPFlag("snapshot.blockHeight", stateSnapshotCmd.PersistentFlags().Lookup("block-height")) - viper.BindPFlag("snapshot.workers", stateSnapshotCmd.PersistentFlags().Lookup("workers")) - viper.BindPFlag("snapshot.recoveryFile", stateSnapshotCmd.PersistentFlags().Lookup("recovery-file")) - viper.BindPFlag("snapshot.mode", stateSnapshotCmd.PersistentFlags().Lookup("snapshot-mode")) -*/ +// ENV variables const ( SNAPSHOT_BLOCK_HEIGHT = "SNAPSHOT_BLOCK_HEIGHT" SNAPSHOT_WORKERS = "SNAPSHOT_WORKERS" @@ -51,6 +46,7 @@ const ( DATABASE_MAX_CONN_LIFETIME = "DATABASE_MAX_CONN_LIFETIME" ) +// TOML bindings const ( SNAPSHOT_BLOCK_HEIGHT_TOML = "snapshot.blockHeight" SNAPSHOT_WORKERS_TOML = "snapshot.workers" @@ -80,3 +76,34 @@ const ( DATABASE_MAX_OPEN_CONNECTIONS_TOML = "database.maxOpen" DATABASE_MAX_CONN_LIFETIME_TOML = "database.maxLifetime" ) + +// CLI flags +const ( + SNAPSHOT_BLOCK_HEIGHT_CLI = "block-height" + SNAPSHOT_WORKERS_CLI = "workers" + SNAPSHOT_RECOVERY_FILE_CLI = "recovery-file" + SNAPSHOT_MODE_CLI = "snapshot-mode" + + LOGRUS_LEVEL_CLI = "log-level" + LOGRUS_FILE_CLI = "log-file" + + FILE_OUTPUT_DIR_CLI = "output-dir" + + ANCIENT_DB_PATH_CLI = "ancient-path" + LVL_DB_PATH_CLI = "leveldb-path" + + ETH_CLIENT_NAME_CLI = "ethereum-client-name" + ETH_GENESIS_BLOCK_CLI = "ethereum-genesis-block" + ETH_NETWORK_ID_CLI = "ethereum-network-id" + ETH_NODE_ID_CLI = "ethereum-node-id" + ETH_CHAIN_ID_CLI = "ethereum-chain-id" + + DATABASE_NAME_CLI = "database-name" + DATABASE_HOSTNAME_CLI = "database-hostname" + DATABASE_PORT_CLI = "database-port" + DATABASE_USER_CLI = "database-user" + DATABASE_PASSWORD_CLI = "database-password" + DATABASE_MAX_IDLE_CONNECTIONS_CLI = "database-max-idle" + DATABASE_MAX_OPEN_CONNECTIONS_CLI = "database-max-open" + DATABASE_MAX_CONN_LIFETIME_CLI = "database-max-lifetime" +)