Skip to content

Commit

Permalink
refactor(nodebuilder): Move parse methods and flag definitions to nod…
Browse files Browse the repository at this point in the history
…ebuilder subpackages (#1161)

Closes #1126

Co-authored-by: rene <[email protected]>
  • Loading branch information
distractedm1nd and renaynay authored Sep 30, 2022
1 parent 1bf38f3 commit 0a32167
Show file tree
Hide file tree
Showing 8 changed files with 112 additions and 111 deletions.
29 changes: 17 additions & 12 deletions cmd/celestia/bridge.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@ package main
import (
"github.com/spf13/cobra"

"github.com/celestiaorg/celestia-node/nodebuilder/core"
"github.com/celestiaorg/celestia-node/nodebuilder/p2p"
"github.com/celestiaorg/celestia-node/nodebuilder/rpc"
"github.com/celestiaorg/celestia-node/nodebuilder/state"

cmdnode "github.com/celestiaorg/celestia-node/cmd"
"github.com/celestiaorg/celestia-node/nodebuilder/node"
)
Expand All @@ -14,19 +19,19 @@ func init() {
bridgeCmd.AddCommand(
cmdnode.Init(
cmdnode.NodeFlags(),
cmdnode.P2PFlags(),
cmdnode.CoreFlags(),
p2p.Flags(),
core.Flags(),
cmdnode.MiscFlags(),
cmdnode.RPCFlags(),
cmdnode.KeyFlags(),
rpc.Flags(),
state.Flags(),
),
cmdnode.Start(
cmdnode.NodeFlags(),
cmdnode.P2PFlags(),
cmdnode.CoreFlags(),
p2p.Flags(),
core.Flags(),
cmdnode.MiscFlags(),
cmdnode.RPCFlags(),
cmdnode.KeyFlags(),
rpc.Flags(),
state.Flags(),
),
)
}
Expand All @@ -50,12 +55,12 @@ var bridgeCmd = &cobra.Command{

cfg := cmdnode.NodeConfig(ctx)

err = cmdnode.ParseP2PFlags(cmd, &cfg)
err = p2p.ParseFlags(cmd, &cfg.P2P)
if err != nil {
return err
}

err = cmdnode.ParseCoreFlags(cmd, &cfg)
err = core.ParseFlags(cmd, &cfg.Core)
if err != nil {
return err
}
Expand All @@ -65,8 +70,8 @@ var bridgeCmd = &cobra.Command{
return err
}

cmdnode.ParseRPCFlags(cmd, &cfg)
cmdnode.ParseKeyFlags(cmd, &cfg)
rpc.ParseFlags(cmd, &cfg.RPC)
state.ParseFlags(cmd, &cfg.State)

// set config
ctx = cmdnode.WithNodeConfig(ctx, &cfg)
Expand Down
36 changes: 21 additions & 15 deletions cmd/celestia/full.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ package main
import (
"github.com/spf13/cobra"

"github.com/celestiaorg/celestia-node/nodebuilder/core"
"github.com/celestiaorg/celestia-node/nodebuilder/header"
"github.com/celestiaorg/celestia-node/nodebuilder/p2p"
"github.com/celestiaorg/celestia-node/nodebuilder/rpc"
"github.com/celestiaorg/celestia-node/nodebuilder/state"

cmdnode "github.com/celestiaorg/celestia-node/cmd"
"github.com/celestiaorg/celestia-node/nodebuilder/node"
)
Expand All @@ -15,25 +21,25 @@ func init() {
fullCmd.AddCommand(
cmdnode.Init(
cmdnode.NodeFlags(),
cmdnode.P2PFlags(),
cmdnode.HeadersFlags(),
p2p.Flags(),
header.Flags(),
cmdnode.MiscFlags(),
// NOTE: for now, state-related queries can only be accessed
// over an RPC connection with a celestia-core node.
cmdnode.CoreFlags(),
cmdnode.RPCFlags(),
cmdnode.KeyFlags(),
core.Flags(),
rpc.Flags(),
state.Flags(),
),
cmdnode.Start(
cmdnode.NodeFlags(),
cmdnode.P2PFlags(),
cmdnode.HeadersFlags(),
p2p.Flags(),
header.Flags(),
cmdnode.MiscFlags(),
// NOTE: for now, state-related queries can only be accessed
// over an RPC connection with a celestia-core node.
cmdnode.CoreFlags(),
cmdnode.RPCFlags(),
cmdnode.KeyFlags(),
core.Flags(),
rpc.Flags(),
state.Flags(),
),
)
}
Expand All @@ -57,17 +63,17 @@ var fullCmd = &cobra.Command{

cfg := cmdnode.NodeConfig(ctx)

err = cmdnode.ParseP2PFlags(cmd, &cfg)
err = p2p.ParseFlags(cmd, &cfg.P2P)
if err != nil {
return err
}

err = cmdnode.ParseCoreFlags(cmd, &cfg)
err = core.ParseFlags(cmd, &cfg.Core)
if err != nil {
return err
}

ctx, err = cmdnode.ParseHeadersFlags(ctx, cmd, &cfg)
err = header.ParseFlags(cmd, &cfg.Header)
if err != nil {
return err
}
Expand All @@ -77,8 +83,8 @@ var fullCmd = &cobra.Command{
return err
}

cmdnode.ParseRPCFlags(cmd, &cfg)
cmdnode.ParseKeyFlags(cmd, &cfg)
rpc.ParseFlags(cmd, &cfg.RPC)
state.ParseFlags(cmd, &cfg.State)

// set config
ctx = cmdnode.WithNodeConfig(ctx, &cfg)
Expand Down
37 changes: 21 additions & 16 deletions cmd/celestia/light.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ package main
import (
"github.com/spf13/cobra"

"github.com/celestiaorg/celestia-node/nodebuilder/core"
"github.com/celestiaorg/celestia-node/nodebuilder/header"
"github.com/celestiaorg/celestia-node/nodebuilder/p2p"
"github.com/celestiaorg/celestia-node/nodebuilder/rpc"
"github.com/celestiaorg/celestia-node/nodebuilder/state"

cmdnode "github.com/celestiaorg/celestia-node/cmd"
"github.com/celestiaorg/celestia-node/nodebuilder/node"
)
Expand All @@ -15,25 +21,25 @@ func init() {
lightCmd.AddCommand(
cmdnode.Init(
cmdnode.NodeFlags(),
cmdnode.P2PFlags(),
cmdnode.HeadersFlags(),
p2p.Flags(),
header.Flags(),
cmdnode.MiscFlags(),
// NOTE: for now, state-related queries can only be accessed
// over an RPC connection with a celestia-core node.
cmdnode.CoreFlags(),
cmdnode.RPCFlags(),
cmdnode.KeyFlags(),
core.Flags(),
rpc.Flags(),
state.Flags(),
),
cmdnode.Start(
cmdnode.NodeFlags(),
cmdnode.P2PFlags(),
cmdnode.HeadersFlags(),
p2p.Flags(),
header.Flags(),
cmdnode.MiscFlags(),
// NOTE: for now, state-related queries can only be accessed
// over an RPC connection with a celestia-core node.
cmdnode.CoreFlags(),
cmdnode.RPCFlags(),
cmdnode.KeyFlags(),
core.Flags(),
rpc.Flags(),
state.Flags(),
),
)
}
Expand All @@ -58,17 +64,17 @@ var lightCmd = &cobra.Command{

cfg := cmdnode.NodeConfig(ctx)

err = cmdnode.ParseP2PFlags(cmd, &cfg)
err = p2p.ParseFlags(cmd, &cfg.P2P)
if err != nil {
return err
}

err = cmdnode.ParseCoreFlags(cmd, &cfg)
err = core.ParseFlags(cmd, &cfg.Core)
if err != nil {
return err
}

ctx, err = cmdnode.ParseHeadersFlags(ctx, cmd, &cfg)
err = header.ParseFlags(cmd, &cfg.Header)
if err != nil {
return err
}
Expand All @@ -77,9 +83,8 @@ var lightCmd = &cobra.Command{
if err != nil {
return err
}

cmdnode.ParseRPCFlags(cmd, &cfg)
cmdnode.ParseKeyFlags(cmd, &cfg)
rpc.ParseFlags(cmd, &cfg.RPC)
state.ParseFlags(cmd, &cfg.State)

// set config
ctx = cmdnode.WithNodeConfig(ctx, &cfg)
Expand Down
20 changes: 9 additions & 11 deletions cmd/flags_core.go → nodebuilder/core/flags.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
package cmd
package core

import (
"fmt"

"github.com/spf13/cobra"
flag "github.com/spf13/pflag"

"github.com/celestiaorg/celestia-node/nodebuilder"
)

var (
Expand All @@ -15,8 +13,8 @@ var (
coreGRPCFlag = "core.grpc.port"
)

// CoreFlags gives a set of hardcoded Core flags.
func CoreFlags() *flag.FlagSet {
// Flags gives a set of hardcoded Core flags.
func Flags() *flag.FlagSet {
flags := &flag.FlagSet{}

flags.String(
Expand All @@ -38,10 +36,10 @@ func CoreFlags() *flag.FlagSet {
return flags
}

// ParseCoreFlags parses Core flags from the given cmd and applies values to Env.
func ParseCoreFlags(
// ParseFlags parses Core flags from the given cmd and saves them to the passed config.
func ParseFlags(
cmd *cobra.Command,
cfg *nodebuilder.Config,
cfg *Config,
) error {
coreIP := cmd.Flag(coreFlag).Value.String()
if coreIP == "" {
Expand All @@ -54,8 +52,8 @@ func ParseCoreFlags(
rpc := cmd.Flag(coreRPCFlag).Value.String()
grpc := cmd.Flag(coreGRPCFlag).Value.String()

cfg.Core.IP = coreIP
cfg.Core.RPCPort = rpc
cfg.Core.GRPCPort = grpc
cfg.IP = coreIP
cfg.RPCPort = rpc
cfg.GRPCPort = grpc
return nil
}
57 changes: 23 additions & 34 deletions cmd/flags_header.go → nodebuilder/header/flags.go
Original file line number Diff line number Diff line change
@@ -1,24 +1,21 @@
package cmd
package header

import (
"context"
"encoding/hex"
"fmt"

"github.com/multiformats/go-multiaddr"
"github.com/spf13/cobra"
flag "github.com/spf13/pflag"

"github.com/celestiaorg/celestia-node/nodebuilder"
)

var (
headersTrustedHashFlag = "headers.trusted-hash"
headersTrustedPeersFlag = "headers.trusted-peers"
)

// HeadersFlags gives a set of hardcoded Header package flags.
func HeadersFlags() *flag.FlagSet {
// Flags gives a set of hardcoded Header package flags.
func Flags() *flag.FlagSet {
flags := &flag.FlagSet{}

flags.AddFlagSet(TrustedPeersFlags())
Expand All @@ -27,16 +24,16 @@ func HeadersFlags() *flag.FlagSet {
return flags
}

// ParseHeadersFlags parses Header package flags from the given cmd and applies values to Env.
func ParseHeadersFlags(ctx context.Context, cmd *cobra.Command, cfg *nodebuilder.Config) (context.Context, error) {
if ctx, err := ParseTrustedHashFlags(ctx, cmd, cfg); err != nil {
return ctx, err
// ParseFlags parses Header package flags from the given cmd and applies them to the passed config.
func ParseFlags(cmd *cobra.Command, cfg *Config) error {
if err := ParseTrustedHashFlags(cmd, cfg); err != nil {
return err
}
if ctx, err := ParseTrustedPeerFlags(ctx, cmd, cfg); err != nil {
return ctx, err
if err := ParseTrustedPeerFlags(cmd, cfg); err != nil {
return err
}

return ctx, nil
return nil
}

// TrustedPeersFlags returns a set of flags.
Expand All @@ -50,28 +47,24 @@ func TrustedPeersFlags() *flag.FlagSet {
return flags
}

// ParseTrustedPeerFlags parses Header package flags from the given cmd and applies values to Env.
// ParseTrustedPeerFlags parses Header package flags from the given cmd and applies them to the passed config.
func ParseTrustedPeerFlags(
ctx context.Context,
cmd *cobra.Command,
cfg *nodebuilder.Config,
) (setCtx context.Context, err error) {
defer func() {
setCtx = WithNodeConfig(ctx, cfg)
}()
cfg *Config,
) error {
tpeers, err := cmd.Flags().GetStringSlice(headersTrustedPeersFlag)
if err != nil {
return ctx, err
return err
}

for _, tpeer := range tpeers {
_, err := multiaddr.NewMultiaddr(tpeer)
if err != nil {
return ctx, fmt.Errorf("cmd: while parsing '%s' with peer addr '%s': %w", headersTrustedPeersFlag, tpeer, err)
return fmt.Errorf("cmd: while parsing '%s' with peer addr '%s': %w", headersTrustedPeersFlag, tpeer, err)
}
}
cfg.Header.TrustedPeers = append(cfg.Header.TrustedPeers, tpeers...)
return
cfg.TrustedPeers = append(cfg.TrustedPeers, tpeers...)
return nil
}

// TrustedHashFlags returns a set of flags related to configuring a `TrustedHash`.
Expand All @@ -86,23 +79,19 @@ func TrustedHashFlags() *flag.FlagSet {
return flags
}

// ParseTrustedHashFlags parses Header package flags from the given cmd and applies values to Env.
// ParseTrustedHashFlags parses Header package flags from the given cmd and saves them to the passed config.
func ParseTrustedHashFlags(
ctx context.Context,
cmd *cobra.Command,
cfg *nodebuilder.Config,
) (setCtx context.Context, err error) {
defer func() {
setCtx = WithNodeConfig(ctx, cfg)
}()
cfg *Config,
) error {
hash := cmd.Flag(headersTrustedHashFlag).Value.String()
if hash != "" {
_, err := hex.DecodeString(hash)
if err != nil {
return ctx, fmt.Errorf("cmd: while parsing '%s': %w", headersTrustedHashFlag, err)
return fmt.Errorf("cmd: while parsing '%s': %w", headersTrustedHashFlag, err)
}

cfg.Header.TrustedHash = hash
cfg.TrustedHash = hash
}
return
return nil
}
Loading

0 comments on commit 0a32167

Please sign in to comment.