From a596306d9e4afb332776c1121519ec2a0ffd247f Mon Sep 17 00:00:00 2001 From: Brian Picciano Date: Thu, 4 Apr 2019 10:57:37 -0400 Subject: [PATCH] mcfg: made SourceCLI and SourceEnv be pointers --- m/m.go | 6 +++--- mcfg/cli.go | 6 +++--- mcfg/cli_test.go | 16 ++++++++++------ mcfg/env.go | 4 ++-- mcfg/env_test.go | 6 ++++-- mcfg/mcfg_test.go | 6 +++--- mcfg/source_test.go | 4 ++-- mtest/mtest.go | 2 +- 8 files changed, 28 insertions(+), 22 deletions(-) diff --git a/m/m.go b/m/m.go index 1c6ee18..ec15973 100644 --- a/m/m.go +++ b/m/m.go @@ -28,7 +28,7 @@ func ProcessContext() context.Context { ctx := context.Background() // embed confuration source which should be used into the context. - ctx = context.WithValue(ctx, cfgSrcKey(0), mcfg.Source(mcfg.SourceCLI{})) + ctx = context.WithValue(ctx, cfgSrcKey(0), mcfg.Source(new(mcfg.SourceCLI))) // set up log level handling logger := mlog.NewLogger() @@ -57,8 +57,8 @@ func ServiceContext() context.Context { // services expect to use many different configuration sources ctx = context.WithValue(ctx, cfgSrcKey(0), mcfg.Source(mcfg.Sources{ - mcfg.SourceEnv{}, - mcfg.SourceCLI{}, + new(mcfg.SourceEnv), + new(mcfg.SourceCLI), })) // TODO set up the debug endpoint. diff --git a/mcfg/cli.go b/mcfg/cli.go index a2ea84a..01302a0 100644 --- a/mcfg/cli.go +++ b/mcfg/cli.go @@ -53,7 +53,7 @@ const ( ) // Parse implements the method for the Source interface -func (cli SourceCLI) Parse(params []Param) ([]ParamValue, error) { +func (cli *SourceCLI) Parse(params []Param) ([]ParamValue, error) { args := cli.Args if cli.Args == nil { args = os.Args[1:] @@ -137,7 +137,7 @@ func (cli SourceCLI) Parse(params []Param) ([]ParamValue, error) { return pvs, nil } -func (cli SourceCLI) cliParams(params []Param) (map[string]Param, error) { +func (cli *SourceCLI) cliParams(params []Param) (map[string]Param, error) { m := map[string]Param{} for _, p := range params { key := strings.Join(append(mctx.Path(p.Context), p.Name), cliKeyJoin) @@ -146,7 +146,7 @@ func (cli SourceCLI) cliParams(params []Param) (map[string]Param, error) { return m, nil } -func (cli SourceCLI) printHelp(w io.Writer, pM map[string]Param) { +func (cli *SourceCLI) printHelp(w io.Writer, pM map[string]Param) { type pEntry struct { arg string Param diff --git a/mcfg/cli_test.go b/mcfg/cli_test.go index 711c46e..eec1e69 100644 --- a/mcfg/cli_test.go +++ b/mcfg/cli_test.go @@ -26,7 +26,7 @@ func TestSourceCLIHelp(t *T) { buf := new(bytes.Buffer) pM, err := src.cliParams(collectParams(ctx)) require.NoError(t, err) - SourceCLI{}.printHelp(buf, pM) + new(SourceCLI).printHelp(buf, pM) exp := ` --baz2 (Required) @@ -49,7 +49,7 @@ func TestSourceCLIHelp(t *T) { func TestSourceCLI(t *T) { type state struct { srcCommonState - SourceCLI + *SourceCLI } type params struct { @@ -61,7 +61,9 @@ func TestSourceCLI(t *T) { Init: func() mchk.State { var s state s.srcCommonState = newSrcCommonState() - s.SourceCLI.Args = make([]string, 0, 16) + s.SourceCLI = &SourceCLI{ + Args: make([]string, 0, 16), + } return s }, Next: func(ss mchk.State) mchk.Action { @@ -111,9 +113,11 @@ func TestSourceCLITailCallback(t *T) { ctx, _ = WithBool(ctx, "bar", "") var tail []string - src := SourceCLI{TailCallback: func(gotTail []string) { - tail = gotTail - }} + src := &SourceCLI{ + TailCallback: func(gotTail []string) { + tail = gotTail + }, + } type testCase struct { args []string diff --git a/mcfg/env.go b/mcfg/env.go index 35cb970..5b12240 100644 --- a/mcfg/env.go +++ b/mcfg/env.go @@ -32,7 +32,7 @@ type SourceEnv struct { Prefix string } -func (env SourceEnv) expectedName(path []string, name string) string { +func (env *SourceEnv) expectedName(path []string, name string) string { out := strings.Join(append(path, name), "_") if env.Prefix != "" { out = env.Prefix + "_" + out @@ -43,7 +43,7 @@ func (env SourceEnv) expectedName(path []string, name string) string { } // Parse implements the method for the Source interface -func (env SourceEnv) Parse(params []Param) ([]ParamValue, error) { +func (env *SourceEnv) Parse(params []Param) ([]ParamValue, error) { kvs := env.Env if kvs == nil { kvs = os.Environ() diff --git a/mcfg/env_test.go b/mcfg/env_test.go index 35da5ee..17f1d49 100644 --- a/mcfg/env_test.go +++ b/mcfg/env_test.go @@ -11,7 +11,7 @@ import ( func TestSourceEnv(t *T) { type state struct { srcCommonState - SourceEnv + *SourceEnv } type params struct { @@ -22,7 +22,9 @@ func TestSourceEnv(t *T) { Init: func() mchk.State { var s state s.srcCommonState = newSrcCommonState() - s.SourceEnv.Env = make([]string, 0, 16) + s.SourceEnv = &SourceEnv{ + Env: make([]string, 0, 16), + } return s }, Next: func(ss mchk.State) mchk.Action { diff --git a/mcfg/mcfg_test.go b/mcfg/mcfg_test.go index 9c3e6be..1c5b8e3 100644 --- a/mcfg/mcfg_test.go +++ b/mcfg/mcfg_test.go @@ -17,7 +17,7 @@ func TestPopulate(t *T) { ctxChild, c := WithInt(ctxChild, "c", 0, "") ctx = mctx.WithChild(ctx, ctxChild) - err := Populate(ctx, SourceCLI{ + err := Populate(ctx, &SourceCLI{ Args: []string{"--a=1", "--foo-b=2"}, }) assert.NoError(t, err) @@ -34,12 +34,12 @@ func TestPopulate(t *T) { ctxChild, c := WithRequiredInt(ctxChild, "c", "") ctx = mctx.WithChild(ctx, ctxChild) - err := Populate(ctx, SourceCLI{ + err := Populate(ctx, &SourceCLI{ Args: []string{"--a=1", "--foo-b=2"}, }) assert.Error(t, err) - err = Populate(ctx, SourceCLI{ + err = Populate(ctx, &SourceCLI{ Args: []string{"--a=1", "--foo-b=2", "--foo-c=3"}, }) assert.NoError(t, err) diff --git a/mcfg/source_test.go b/mcfg/source_test.go index 00e959d..a084de1 100644 --- a/mcfg/source_test.go +++ b/mcfg/source_test.go @@ -160,8 +160,8 @@ func TestSources(t *T) { ctx, c := WithRequiredInt(ctx, "c", "") err := Populate(ctx, Sources{ - SourceCLI{Args: []string{"--a=1", "--b=666"}}, - SourceEnv{Env: []string{"B=2", "C=3"}}, + &SourceCLI{Args: []string{"--a=1", "--b=666"}}, + &SourceEnv{Env: []string{"B=2", "C=3"}}, }) massert.Require(t, massert.Nil(err), diff --git a/mtest/mtest.go b/mtest/mtest.go index 5126a54..6eea8d1 100644 --- a/mtest/mtest.go +++ b/mtest/mtest.go @@ -50,7 +50,7 @@ func Run(ctx context.Context, t *testing.T, body func()) { env = append(env, tup[0]+"="+tup[1]) } - if err := mcfg.Populate(ctx, mcfg.SourceEnv{Env: env}); err != nil { + if err := mcfg.Populate(ctx, &mcfg.SourceEnv{Env: env}); err != nil { t.Fatal(err) } else if err := mrun.Start(ctx); err != nil { t.Fatal(err)