cmds

package
v0.0.0-...-9a728c2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 5, 2023 License: Unlicense Imports: 27 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// RecommendedSeedLen is the recommended length in bytes for a seed to a master node.
	RecommendedSeedLen = 32 // 256 bits
	// HardenedKeyStart is the index at which a hardened key starts. Each extended key has 2^31 normal child keys and
	// 2^31 hardned child keys. Thus the range for normal child keys is [0, 2^31 - 1] and the range for hardened child
	// keys is [2^31, 2^32 - 1].
	HardenedKeyStart = 0x80000000 // 2^31
	// MinSeedBytes is the minimum number of bytes allowed for a seed to a master node.
	MinSeedBytes = 16 // 128 bits
	// MaxSeedBytes is the maximum number of bytes allowed for a seed to a master node.
	MaxSeedBytes = 64 // 512 bits

)

Variables

View Source
var (
	ErrInvalidSeedLen = fmt.Errorf(
		"seed length must be between %d and %d "+
			"bits", MinSeedBytes*8, MaxSeedBytes*8,
	)
)
View Source
var NoOp = func(c *Command, args []string) error { return nil }
View Source
var Tags = func(s ...string) []string {
	return s
}

Functions

func GenerateSeed

func GenerateSeed(length uint8) ([]byte, error)

GenerateSeed returns a cryptographically secure random seed that can be used as the input for the NewMaster function to generate a new master node. The length is in bytes and it must be between 16 and 64 (128 to 512 bits). The recommended length is 32 (256 bits) as defined by the RecommendedSeedLen constant.

func GetConfigBase

func GetConfigBase(in config.Opts, appName string, abs bool)

GetConfigBase creates an option set that should go in the root of a Command specification for an application, providing a data directory path and config file path.

This exists in order to simplify setup for application configuration persistence.

func HelpEntrypoint

func HelpEntrypoint(c *Command, args []string) (err error)

func IndentTextBlock

func IndentTextBlock(s string, tabs int) (o string)

IndentTextBlock adds an arbitrary number of tabs to the front of a text block that is presumed to already be flowed to ~80 columns.

Types

type Command

type Command struct {
	path.Path
	Name          string
	Description   string
	Documentation string
	Entrypoint    Op
	Parent        *Command
	Commands      Commands
	Configs       config.Opts
	Default       []string // specifies default subcommand to execute
	sync.Mutex
}

Command is a specification for a command and can include any number of subcommands, and for each Command a list of options

func GetExampleCommands

func GetExampleCommands() (c *Command)

GetExampleCommands returns available subcommands in hypothetical Parallelcoin Pod example for testing (derived from btcd and btcwallet plus parallelcoin kopach miner)

func Help

func Help() (h *Command)

Help is a default top level command that subsequent

func Init

func Init(c *Command, p path.Path) (cmd *Command, err error)

Init sets up a Command to be ready to use. Puts the reverse paths into the tree structure, puts sane defaults into command launchers, runs the hooks on all the defined configuration values, and sets the paths on each Command and Option so that they can be directly interrogated for their location.

func (*Command) AddCommand

func (c *Command) AddCommand(cm *Command)

func (*Command) ForEach

func (c *Command) ForEach(cl func(*Command, int) bool, hereDepth,
	hereDist int, cmd *Command) (ocl func(*Command, int) bool, depth,
	dist int, cm *Command)

ForEach runs a closure on every node in the Commands tree, stopping if the closure returns false

func (*Command) GetCommand

func (c *Command) GetCommand(p string) (o *Command)

func (*Command) GetEnvs

func (c *Command) GetEnvs(path ...string) (envs Envs)

GetEnvs walks a Command tree and returns a slice containing all environment variable names and the related config.Option.

func (*Command) GetOpt

func (c *Command) GetOpt(path path.Path) (o config.Option)

GetOpt returns the option at a requested path

func (*Command) LoadConfig

func (c *Command) LoadConfig() (err error)

func (*Command) MarshalText

func (c *Command) MarshalText() (text []byte, err error)

func (*Command) ParseCLIArgs

func (c *Command) ParseCLIArgs(a []string) (run *Command, runArgs []string, err error)

ParseCLIArgs reads a command line argument slice (presumably from os.Args), identifies the command to run and

Rules for constructing CLI args:

  • Commands are identified by name, and must appear in their hierarchic order to invoke subcommands. They are matched as normalised to lower case.

  • Options can be preceded by "--" or "-", and the full name, or the alias, normalised to lower case for matching, and if there is an "=" after it, the value is after this, otherwise, the next element in the args is the value, except booleans, which default to true unless set to false. For these, the prefix "no" or similar indicates the semantics of the true value.

  • Options only match when preceded by their relevant Command, except for the root Command, and these options must precede any other command options.

  • If no command is selected, the root Command.Default is selected. This can optionally be used for subcommands as well, though it is unlikely needed, if found, the Default of the tip of the Command branch selected by the CLI if there is one, otherwise the Command itself.

func (*Command) SaveConfig

func (c *Command) SaveConfig() (err error)

func (*Command) UnmarshalText

func (c *Command) UnmarshalText(t []byte) (err error)

type CommandInfo

type CommandInfo struct {
	// contains filtered or unexported fields
}

type CommandInfos

type CommandInfos []*CommandInfo

func (CommandInfos) Len

func (c CommandInfos) Len() int

func (CommandInfos) Less

func (c CommandInfos) Less(i, j int) bool

func (CommandInfos) Swap

func (c CommandInfos) Swap(i, j int)

type Commands

type Commands []*Command

Commands are a slice of Command entries

type Entries

type Entries []Entry

func (Entries) Len

func (e Entries) Len() int

func (Entries) Less

func (e Entries) Less(i, j int) bool

func (Entries) Swap

func (e Entries) Swap(i, j int)

type Entry

type Entry struct {
	// contains filtered or unexported fields
}

func (Entry) String

func (e Entry) String() string

type Env

type Env struct {
	Name path.Path
	Opt  config.Option
}

type Envs

type Envs []Env

func (Envs) ForEach

func (e Envs) ForEach(fn func(env string, opt config.Option) (err error)) (err error)

func (Envs) Len

func (e Envs) Len() int

func (Envs) Less

func (e Envs) Less(i, j int) (res bool)

func (Envs) LoadFromEnvironment

func (e Envs) LoadFromEnvironment() (err error)

func (Envs) Swap

func (e Envs) Swap(i, j int)

type Op

type Op func(c *Command, args []string) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL