cli

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: May 8, 2022 License: Apache-2.0 Imports: 7 Imported by: 0

README

cli Source

The cli source reads config from parsed flags via a cli.Context.

Format

We expect the use of the urfave/cli package. Upper case flags will be lower cased. Dashes will be used as delimiters for nesting.

Example
var cliSrc source.Source
app := &cli.App{
    Flags: []cli.Flag{
        cli.StringFlag{
            Name: "database-address",
            Value: "127.0.0.1",
            Usage: "the db address",
        },
        cli.IntFlag{
            Name: "database-port",
            Value: 3306,
            Usage: "the db port",
        },
    },
    Action: func(c *cli.Context) error {
        cliSrc = NewSource(c)
        return nil
    },
}

Becomes

{
    "database": {
        "address": "127.0.0.1",
        "port": 3306
    }
}

New and Load Source

Because a cli.Context is needed to retrieve the flags and their values, it is recommended to build your source from within a cli.Action.


func main() {
    // New Service
	var cliSrc source.Source

    // New App
	app := &cli.App{
		Flags: []cli.Flag{
            cli.StringFlag{
                Name: "database-address",
                Value: "127.0.0.1",
                Usage: "the db address",
            },
		},
		Action: func(c *cli.Context) error {
			cliSrc = NewSource(c)
			return nil
		},
	}

    // ... Load and use that source ...
    conf := config.NewConfig()
    conf.Load(clisrc)
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewSource

func NewSource(ctx *cli.Context, opts ...source.Option) source.Source

NewSource returns a config source for integrating parsed flags from a urfave/cli.Context. Hyphens are delimiters for nesting, and all keys are lowercased. The assumption is that Context is retrieved within an app.Action function.

Example:

cli.StringFlag{Name: "db-host"},

{
    "database": {
        "host": "localhost"
    }
}

Types

This section is empty.

Jump to

Keyboard shortcuts

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