cli: move config path flag to options package

This commit is contained in:
Anna Shaleva 2022-10-03 15:05:34 +03:00
parent 4616600636
commit 37571162a0
3 changed files with 25 additions and 19 deletions

View file

@ -9,6 +9,7 @@ import (
"strconv" "strconv"
"time" "time"
"github.com/nspcc-dev/neo-go/pkg/config"
"github.com/nspcc-dev/neo-go/pkg/config/netmode" "github.com/nspcc-dev/neo-go/pkg/config/netmode"
"github.com/nspcc-dev/neo-go/pkg/core/transaction" "github.com/nspcc-dev/neo-go/pkg/core/transaction"
"github.com/nspcc-dev/neo-go/pkg/rpcclient" "github.com/nspcc-dev/neo-go/pkg/rpcclient"
@ -52,6 +53,12 @@ var Historic = cli.StringFlag{
Usage: "Use historic state (height, block hash or state root hash)", Usage: "Use historic state (height, block hash or state root hash)",
} }
// Config is a flag for commands that use node configuration.
var Config = cli.StringFlag{
Name: "config-path",
Usage: "path to directory with configuration files",
}
var errNoEndpoint = errors.New("no RPC endpoint specified, use option '--" + RPCEndpointFlag + "' or '-r'") var errNoEndpoint = errors.New("no RPC endpoint specified, use option '--" + RPCEndpointFlag + "' or '-r'")
var errInvalidHistoric = errors.New("invalid 'historic' parameter, neither a block number, nor a block/state hash") var errInvalidHistoric = errors.New("invalid 'historic' parameter, neither a block number, nor a block/state hash")
@ -128,3 +135,13 @@ func GetRPCWithInvoker(gctx context.Context, ctx *cli.Context, signers []transac
} }
return c, inv, err return c, inv, err
} }
// GetConfigFromContext looks at the path and the mode flags in the given config and
// returns an appropriate config.
func GetConfigFromContext(ctx *cli.Context) (config.Config, error) {
configPath := "./config"
if argCp := ctx.String("config-path"); argCp != "" {
configPath = argCp
}
return config.Load(configPath, GetNetwork(ctx))
}

View file

@ -43,9 +43,7 @@ var (
// NewCommands returns 'node' command. // NewCommands returns 'node' command.
func NewCommands() []cli.Command { func NewCommands() []cli.Command {
var cfgFlags = []cli.Flag{ cfgFlags := []cli.Flag{options.Config}
cli.StringFlag{Name: "config-path", Usage: "path to directory with configuration files"},
}
cfgFlags = append(cfgFlags, options.Network...) cfgFlags = append(cfgFlags, options.Network...)
var cfgWithCountFlags = make([]cli.Flag, len(cfgFlags)) var cfgWithCountFlags = make([]cli.Flag, len(cfgFlags))
copy(cfgWithCountFlags, cfgFlags) copy(cfgWithCountFlags, cfgFlags)
@ -128,16 +126,6 @@ func newGraceContext() context.Context {
return ctx return ctx
} }
// getConfigFromContext looks at the path and the mode flags in the given config and
// returns an appropriate config.
func getConfigFromContext(ctx *cli.Context) (config.Config, error) {
configPath := "./config"
if argCp := ctx.String("config-path"); argCp != "" {
configPath = argCp
}
return config.Load(configPath, options.GetNetwork(ctx))
}
// handleLoggingParams reads logging parameters. // handleLoggingParams reads logging parameters.
// If a user selected debug level -- function enables it. // If a user selected debug level -- function enables it.
// If logPath is configured -- function creates a dir and a file for logging. // If logPath is configured -- function creates a dir and a file for logging.
@ -233,7 +221,7 @@ func dumpDB(ctx *cli.Context) error {
if err := cmdargs.EnsureNone(ctx); err != nil { if err := cmdargs.EnsureNone(ctx); err != nil {
return err return err
} }
cfg, err := getConfigFromContext(ctx) cfg, err := options.GetConfigFromContext(ctx)
if err != nil { if err != nil {
return cli.NewExitError(err, 1) return cli.NewExitError(err, 1)
} }
@ -286,7 +274,7 @@ func restoreDB(ctx *cli.Context) error {
if err := cmdargs.EnsureNone(ctx); err != nil { if err := cmdargs.EnsureNone(ctx); err != nil {
return err return err
} }
cfg, err := getConfigFromContext(ctx) cfg, err := options.GetConfigFromContext(ctx)
if err != nil { if err != nil {
return err return err
} }
@ -472,7 +460,7 @@ func startServer(ctx *cli.Context) error {
return err return err
} }
cfg, err := getConfigFromContext(ctx) cfg, err := options.GetConfigFromContext(ctx)
if err != nil { if err != nil {
return cli.NewExitError(err, 1) return cli.NewExitError(err, 1)
} }
@ -549,7 +537,7 @@ Main:
cancel() cancel()
case sig := <-sigCh: case sig := <-sigCh:
log.Info("signal received", zap.Stringer("name", sig)) log.Info("signal received", zap.Stringer("name", sig))
cfgnew, err := getConfigFromContext(ctx) cfgnew, err := options.GetConfigFromContext(ctx)
if err != nil { if err != nil {
log.Warn("can't reread the config file, signal ignored", zap.Error(err)) log.Warn("can't reread the config file, signal ignored", zap.Error(err))
break // Continue working. break // Continue working.

View file

@ -7,6 +7,7 @@ import (
"path/filepath" "path/filepath"
"testing" "testing"
"github.com/nspcc-dev/neo-go/cli/options"
"github.com/nspcc-dev/neo-go/pkg/config" "github.com/nspcc-dev/neo-go/pkg/config"
"github.com/nspcc-dev/neo-go/pkg/config/netmode" "github.com/nspcc-dev/neo-go/pkg/config/netmode"
"github.com/nspcc-dev/neo-go/pkg/core/storage/dbconfig" "github.com/nspcc-dev/neo-go/pkg/core/storage/dbconfig"
@ -32,7 +33,7 @@ func TestGetConfigFromContext(t *testing.T) {
set.String("config-path", "../../config", "") set.String("config-path", "../../config", "")
set.Bool("testnet", true, "") set.Bool("testnet", true, "")
ctx := cli.NewContext(cli.NewApp(), set, nil) ctx := cli.NewContext(cli.NewApp(), set, nil)
cfg, err := getConfigFromContext(ctx) cfg, err := options.GetConfigFromContext(ctx)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, netmode.TestNet, cfg.ProtocolConfiguration.Magic) require.Equal(t, netmode.TestNet, cfg.ProtocolConfiguration.Magic)
} }
@ -101,7 +102,7 @@ func TestInitBCWithMetrics(t *testing.T) {
set.Bool("testnet", true, "") set.Bool("testnet", true, "")
set.Bool("debug", true, "") set.Bool("debug", true, "")
ctx := cli.NewContext(cli.NewApp(), set, nil) ctx := cli.NewContext(cli.NewApp(), set, nil)
cfg, err := getConfigFromContext(ctx) cfg, err := options.GetConfigFromContext(ctx)
require.NoError(t, err) require.NoError(t, err)
logger, closer, err := handleLoggingParams(ctx, cfg.ApplicationConfiguration) logger, closer, err := handleLoggingParams(ctx, cfg.ApplicationConfiguration)
require.NoError(t, err) require.NoError(t, err)