github.com/celestiaorg/celestia-node@v0.15.0-beta.1/nodebuilder/header/cmd/header.go (about) 1 package cmd 2 3 import ( 4 "encoding/hex" 5 "fmt" 6 "strconv" 7 8 "github.com/spf13/cobra" 9 10 cmdnode "github.com/celestiaorg/celestia-node/cmd" 11 ) 12 13 func init() { 14 Cmd.AddCommand( 15 localHeadCmd, 16 networkHeadCmd, 17 getByHashCmd, 18 getByHeightCmd, 19 syncStateCmd, 20 ) 21 } 22 23 var Cmd = &cobra.Command{ 24 Use: "header [command]", 25 Short: "Allows interaction with the Header Module via JSON-RPC", 26 Args: cobra.NoArgs, 27 PersistentPreRunE: cmdnode.InitClient, 28 } 29 30 var localHeadCmd = &cobra.Command{ 31 Use: "local-head", 32 Short: "Returns the ExtendedHeader from the chain head.", 33 Args: cobra.NoArgs, 34 RunE: func(cmd *cobra.Command, args []string) error { 35 client, err := cmdnode.ParseClientFromCtx(cmd.Context()) 36 if err != nil { 37 return err 38 } 39 defer client.Close() 40 41 header, err := client.Header.LocalHead(cmd.Context()) 42 return cmdnode.PrintOutput(header, err, nil) 43 }, 44 } 45 46 var networkHeadCmd = &cobra.Command{ 47 Use: "network-head", 48 Short: "Provides the Syncer's view of the current network head.", 49 Args: cobra.NoArgs, 50 RunE: func(cmd *cobra.Command, args []string) error { 51 client, err := cmdnode.ParseClientFromCtx(cmd.Context()) 52 if err != nil { 53 return err 54 } 55 defer client.Close() 56 57 header, err := client.Header.NetworkHead(cmd.Context()) 58 return cmdnode.PrintOutput(header, err, nil) 59 }, 60 } 61 62 var getByHashCmd = &cobra.Command{ 63 Use: "get-by-hash", 64 Short: "Returns the header of the given hash from the node's header store.", 65 Args: cobra.ExactArgs(1), 66 RunE: func(cmd *cobra.Command, args []string) error { 67 client, err := cmdnode.ParseClientFromCtx(cmd.Context()) 68 if err != nil { 69 return err 70 } 71 defer client.Close() 72 73 hash, err := hex.DecodeString(args[0]) 74 if err != nil { 75 return fmt.Errorf("error decoding a hash: expected a hex encoded string:%v", err) 76 } 77 header, err := client.Header.GetByHash(cmd.Context(), hash) 78 return cmdnode.PrintOutput(header, err, nil) 79 }, 80 } 81 82 var getByHeightCmd = &cobra.Command{ 83 Use: "get-by-height", 84 Short: "Returns the ExtendedHeader at the given height if it is currently available.", 85 Args: cobra.ExactArgs(1), 86 RunE: func(cmd *cobra.Command, args []string) error { 87 client, err := cmdnode.ParseClientFromCtx(cmd.Context()) 88 if err != nil { 89 return err 90 } 91 defer client.Close() 92 93 height, err := strconv.ParseUint(args[0], 10, 64) 94 if err != nil { 95 return fmt.Errorf("error parsing a height:%v", err) 96 } 97 98 header, err := client.Header.GetByHeight(cmd.Context(), height) 99 return cmdnode.PrintOutput(header, err, nil) 100 }, 101 } 102 103 var syncStateCmd = &cobra.Command{ 104 Use: "sync-state", 105 Short: "Returns the current state of the header Syncer.", 106 Args: cobra.NoArgs, 107 RunE: func(cmd *cobra.Command, args []string) error { 108 client, err := cmdnode.ParseClientFromCtx(cmd.Context()) 109 if err != nil { 110 return err 111 } 112 defer client.Close() 113 114 header, err := client.Header.SyncState(cmd.Context()) 115 return cmdnode.PrintOutput(header, err, nil) 116 }, 117 }