Some checks are pending
Build SimApp / build (amd64) (push) Waiting to run
Build SimApp / build (arm64) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
Build & Push / build (push) Waiting to run
Run Gosec / Gosec (push) Waiting to run
Lint / golangci-lint (push) Waiting to run
Checks dependencies and mocks generation / Check go mod tidy (push) Waiting to run
Checks dependencies and mocks generation / Check up to date mocks (push) Waiting to run
System Tests / setup (push) Waiting to run
System Tests / test-system (push) Blocked by required conditions
System Tests / test-system-legacy (push) Blocked by required conditions
Tests / Code Coverage / split-test-files (push) Waiting to run
Tests / Code Coverage / tests (00) (push) Blocked by required conditions
Tests / Code Coverage / tests (01) (push) Blocked by required conditions
Tests / Code Coverage / tests (02) (push) Blocked by required conditions
Tests / Code Coverage / tests (03) (push) Blocked by required conditions
Tests / Code Coverage / test-integration (push) Waiting to run
Tests / Code Coverage / test-e2e (push) Waiting to run
Tests / Code Coverage / repo-analysis (push) Blocked by required conditions
Tests / Code Coverage / test-sim-nondeterminism (push) Waiting to run
Tests / Code Coverage / test-clientv2 (push) Waiting to run
Tests / Code Coverage / test-core (push) Waiting to run
Tests / Code Coverage / test-depinject (push) Waiting to run
Tests / Code Coverage / test-errors (push) Waiting to run
Tests / Code Coverage / test-math (push) Waiting to run
Tests / Code Coverage / test-schema (push) Waiting to run
Tests / Code Coverage / test-collections (push) Waiting to run
Tests / Code Coverage / test-cosmovisor (push) Waiting to run
Tests / Code Coverage / test-confix (push) Waiting to run
Tests / Code Coverage / test-store (push) Waiting to run
Tests / Code Coverage / test-log (push) Waiting to run
Tests / Code Coverage / test-x-tx (push) Waiting to run
Tests / Code Coverage / test-x-nft (push) Waiting to run
Tests / Code Coverage / test-x-circuit (push) Waiting to run
Tests / Code Coverage / test-x-feegrant (push) Waiting to run
Tests / Code Coverage / test-x-evidence (push) Waiting to run
Tests / Code Coverage / test-x-upgrade (push) Waiting to run
Tests / Code Coverage / test-tools-benchmark (push) Waiting to run
45 lines
2 KiB
Go
45 lines
2 KiB
Go
package cmd
|
|
|
|
import (
|
|
"context"
|
|
|
|
cmtcli "git.cw.tr/mukan-network/mukan-consensus/libs/cli"
|
|
"github.com/rs/zerolog"
|
|
"github.com/spf13/cobra"
|
|
|
|
"git.cw.tr/mukan-network/mukan-sdk/client"
|
|
"git.cw.tr/mukan-network/mukan-sdk/client/flags"
|
|
"git.cw.tr/mukan-network/mukan-sdk/server"
|
|
)
|
|
|
|
// Execute executes the root command of an application. It handles creating a
|
|
// server context object with the appropriate server and client objects injected
|
|
// into the underlying stdlib Context. It also handles adding core CLI flags,
|
|
// specifically the logging flags. It returns an error upon execution failure.
|
|
func Execute(rootCmd *cobra.Command, envPrefix, defaultHome string) error {
|
|
// Create and set a client.Context on the command's Context. During the pre-run
|
|
// of the root command, a default initialized client.Context is provided to
|
|
// seed child command execution with values such as AccountRetriever, Keyring,
|
|
// and a CometBFT RPC. This requires the use of a pointer reference when
|
|
// getting and setting the client.Context. Ideally, we utilize
|
|
// https://github.com/spf13/cobra/pull/1118.
|
|
ctx := CreateExecuteContext(context.Background())
|
|
|
|
rootCmd.PersistentFlags().String(flags.FlagLogLevel, zerolog.InfoLevel.String(), "The logging level (trace|debug|info|warn|error|fatal|panic|disabled or '*:<level>,<key>:<level>')")
|
|
// NOTE: The default logger is only checking for the "json" value, any other value will default to plain text.
|
|
rootCmd.PersistentFlags().String(flags.FlagLogFormat, "plain", "The logging format (json|plain)")
|
|
rootCmd.PersistentFlags().Bool(flags.FlagLogNoColor, false, "Disable colored logs")
|
|
|
|
executor := cmtcli.PrepareBaseCmd(rootCmd, envPrefix, defaultHome)
|
|
return executor.ExecuteContext(ctx)
|
|
}
|
|
|
|
// CreateExecuteContext returns a base Context with server and client context
|
|
// values initialized.
|
|
func CreateExecuteContext(ctx context.Context) context.Context {
|
|
srvCtx := server.NewDefaultContext()
|
|
ctx = context.WithValue(ctx, client.ClientContextKey, &client.Context{})
|
|
ctx = context.WithValue(ctx, server.ServerContextKey, srvCtx)
|
|
|
|
return ctx
|
|
}
|