diff --git a/claimtrie/cmd/cmd/block.go b/claimtrie/cmd/cmd/block.go index d0ee7719..b22c0b65 100644 --- a/claimtrie/cmd/cmd/block.go +++ b/claimtrie/cmd/cmd/block.go @@ -23,12 +23,14 @@ func NewBlocCommands() *cobra.Command { return cmd } - func NewBlockBestCommand() *cobra.Command { + var showHash bool + var showHeight bool + cmd := &cobra.Command{ Use: "best", - Short: "Show the height and hash of the best block", + Short: "Show the block hash and height of the best block", RunE: func(cmd *cobra.Command, args []string) error { db, err := loadBlocksDB() @@ -43,12 +45,23 @@ func NewBlockBestCommand() *cobra.Command { } state := chain.BestSnapshot() - fmt.Printf("Block %7d: %s\n", state.Height, state.Hash.String()) + + switch { + case showHeight && showHash: + fmt.Printf("%s:%d\n", state.Hash, state.Height) + case !showHeight && showHash: + fmt.Printf("%s\n", state.Hash) + case showHeight && !showHash: + fmt.Printf("%d\n", state.Height) + } return nil }, } + cmd.Flags().BoolVar(&showHeight, "showheight", true, "Display block height") + cmd.Flags().BoolVar(&showHash, "showhash", true, "Display block hash") + return cmd } @@ -56,10 +69,12 @@ func NewBlockListCommand() *cobra.Command { var fromHeight int32 var toHeight int32 + var showHash bool + var showHeight bool cmd := &cobra.Command{ Use: "list", - Short: "List merkle hash of blocks between ", + Short: "List block hash and height between blocks ", Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, args []string) error { @@ -83,7 +98,14 @@ func NewBlockListCommand() *cobra.Command { if err != nil { return errors.Wrapf(err, "load hash for %d", ht) } - fmt.Printf("Block %7d: %s\n", ht, hash.String()) + switch { + case showHeight && showHash: + fmt.Printf("%s:%d\n", hash, ht) + case !showHeight && showHash: + fmt.Printf("%s\n", hash) + case showHeight && !showHash: + fmt.Printf("%d\n", ht) + } } return nil @@ -92,6 +114,8 @@ func NewBlockListCommand() *cobra.Command { cmd.Flags().Int32Var(&fromHeight, "from", 0, "From height (inclusive)") cmd.Flags().Int32Var(&toHeight, "to", 0, "To height (inclusive)") + cmd.Flags().BoolVar(&showHeight, "showheight", true, "Display block height") + cmd.Flags().BoolVar(&showHash, "showhash", true, "Display block hash") cmd.Flags().SortFlags = false return cmd diff --git a/claimtrie/cmd/cmd/helper.go b/claimtrie/cmd/cmd/helper.go index e75da402..eb8266c8 100644 --- a/claimtrie/cmd/cmd/helper.go +++ b/claimtrie/cmd/cmd/helper.go @@ -15,7 +15,7 @@ import ( func loadBlocksDB() (database.DB, error) { dbPath := filepath.Join(dataDir, netName, "blocks_ffldb") - log.Infof("Loading blocks database: %s", dbPath) + log.Debugf("Loading blocks database: %s", dbPath) db, err := database.Open("ffldb", dbPath, chainPramas().Net) if err != nil { return nil, errors.Wrapf(err, "open blocks database") @@ -27,7 +27,7 @@ func loadBlocksDB() (database.DB, error) { func loadChain(db database.DB) (*blockchain.BlockChain, error) { paramsCopy := chaincfg.MainNetParams - log.Infof("Loading chain from database") + log.Debugf("Loading chain from database") startTime := time.Now() chain, err := blockchain.New(&blockchain.Config{ @@ -40,7 +40,7 @@ func loadChain(db database.DB) (*blockchain.BlockChain, error) { return nil, errors.Wrapf(err, "create blockchain") } - log.Infof("Loaded chain from database (%s)", time.Since(startTime)) + log.Debugf("Loaded chain from database (%s)", time.Since(startTime)) return chain, err diff --git a/claimtrie/cmd/cmd/root.go b/claimtrie/cmd/cmd/root.go index 8b2fb75f..885c3ef9 100644 --- a/claimtrie/cmd/cmd/root.go +++ b/claimtrie/cmd/cmd/root.go @@ -3,20 +3,21 @@ package cmd import ( "os" - "github.com/btcsuite/btclog" "github.com/lbryio/lbcd/claimtrie/config" "github.com/lbryio/lbcd/claimtrie/param" "github.com/lbryio/lbcd/limits" "github.com/lbryio/lbcd/wire" + "github.com/btcsuite/btclog" "github.com/spf13/cobra" ) var ( - log btclog.Logger - cfg = config.DefaultConfig - netName string - dataDir string + log = btclog.NewBackend(os.Stdout).Logger("CMDL") + cfg = config.DefaultConfig + netName string + dataDir string + debugLevel string ) var rootCmd = NewRootCommand() @@ -28,6 +29,9 @@ func NewRootCommand() *cobra.Command { Short: "ClaimTrie Command Line Interface", SilenceUsage: true, PersistentPreRun: func(cmd *cobra.Command, args []string) { + level, _ := btclog.LevelFromString(debugLevel) + log.SetLevel(level) + switch netName { case "mainnet": param.SetNetwork(wire.MainNet) @@ -37,21 +41,20 @@ func NewRootCommand() *cobra.Command { param.SetNetwork(wire.TestNet) } }, + PersistentPostRun: func(cmd *cobra.Command, args []string) { + os.Stdout.Sync() + }, } cmd.PersistentFlags().StringVar(&netName, "netname", "mainnet", "Net name") cmd.PersistentFlags().StringVarP(&dataDir, "datadir", "b", cfg.DataDir, "Data dir") + cmd.PersistentFlags().StringVarP(&debugLevel, "debuglevel", "d", cfg.DebugLevel, "Debug level") return cmd } func Execute() { - backendLogger := btclog.NewBackend(os.Stdout) - defer os.Stdout.Sync() - log = backendLogger.Logger("CMDL") - log.SetLevel(btclog.LevelDebug) - // Up some limits. if err := limits.SetLimits(); err != nil { log.Errorf("failed to set limits: %v\n", err) diff --git a/claimtrie/config/config.go b/claimtrie/config/config.go index 4920ca17..67de7396 100644 --- a/claimtrie/config/config.go +++ b/claimtrie/config/config.go @@ -8,11 +8,10 @@ import ( ) var DefaultConfig = Config{ - Params: param.MainNet, - - RamTrie: true, // as it stands the other trie uses more RAM, more time, and 40GB+ of disk space - - DataDir: filepath.Join(btcutil.AppDataDir("chain", false), "data"), + Params: param.MainNet, + RamTrie: true, // as it stands the other trie uses more RAM, more time, and 40GB+ of disk space + DebugLevel: "info", + DataDir: filepath.Join(btcutil.AppDataDir("lbcd", false), "data"), BlockRepoPebble: pebbleConfig{ Path: "blocks_pebble_db", @@ -30,11 +29,10 @@ var DefaultConfig = Config{ // Config is the container of all configurations. type Config struct { - Params param.ClaimTrieParams - - RamTrie bool - - DataDir string + Params param.ClaimTrieParams + RamTrie bool + DataDir string + DebugLevel string BlockRepoPebble pebbleConfig NodeRepoPebble pebbleConfig