testing lists in proc. Should be working.

This commit is contained in:
Colin Lyons
2023-01-03 01:42:59 +00:00
parent c196c6e144
commit d8f0780cb4
3 changed files with 62 additions and 17 deletions

View File

@@ -71,7 +71,7 @@ var commands = &cmds.Command{
Documentation: lorem,
}, func(opt *list.Opt) error {
log.I.Ln("adding seed", opt.String())
//log.I.Ln("adding seed", opt.String())
return nil
}),
@@ -81,7 +81,7 @@ var commands = &cmds.Command{
Documentation: lorem,
}, func(opt *list.Opt) error {
log.I.Ln("adding peer", opt.String())
//log.I.Ln("adding peer", opt.String())
return nil
}),
@@ -92,7 +92,7 @@ var commands = &cmds.Command{
Default: "/ip4/127.0.0.1/tcp/8337",
}, func(opt *list.Opt) error {
log.I.Ln("adding p2p listener", opt.String())
//log.I.Ln("adding p2p listener", opt.String())
return nil
}),
@@ -101,8 +101,9 @@ var commands = &cmds.Command{
log.I.Ln("-- ", log2.App, "-", indra.SemVer, "- Network Freedom. --")
spew.Dump(c.GetCommand("indra serve").Configs)
spew.Dump(c.GetCommand("indra serve").Configs["seed"].String())
spew.Dump(c.GetValue("seed").List())
spew.Dump(c.GetValue("peer").List())
spew.Dump(c.GetValue("listen").List())
var err error
var srv *server.Server

View File

@@ -12,33 +12,45 @@ type App struct {
}
func New(cmd *cmds.Command, args []string) (a *App, err error) {
var app App
app.Command = cmd
// Add the default configuration items for datadir/configfile
cmds.GetConfigBase(cmd.Configs, cmd.Name, false)
// Add the help function
cmd.AddCommand(cmds.Help())
a = &App{Command: cmd}
// We first parse the CLI args, in case config file location has been
// specified
if a.launch, _, err = a.Command.ParseCLIArgs(args); log.E.Chk(err) {
if app.launch, _, err = app.Command.ParseCLIArgs(args); log.E.Chk(err) {
return
}
if err = cmd.LoadConfig(); log.E.Chk(err) {
return
}
a.Command, err = cmds.Init(cmd, nil)
a.Envs = cmd.GetEnvs()
if err = a.Envs.LoadFromEnvironment(); log.E.Chk(err) {
app.Command, err = cmds.Init(cmd, nil)
// Load the environment variables
app.Envs = cmd.GetEnvs()
if err = app.Envs.LoadFromEnvironment(); log.E.Chk(err) {
return
}
// This is done again, to ensure the effect of CLI args take precedence
if a.launch, a.runArgs, err = a.Command.ParseCLIArgs(args); log.E.Chk(err) {
if app.launch, app.runArgs, err = app.Command.ParseCLIArgs(args); log.E.Chk(err) {
return
}
return
return &app, nil
}
func (a *App) Launch() (err error) {
err = a.launch.Entrypoint(a.Command, a.runArgs)
err = a.launch.Entrypoint(a.launch, a.runArgs)
log.E.Chk(err)
return
}

View File

@@ -1,13 +1,13 @@
package list
import (
"strings"
"github.com/cybriq/proc/pkg/opts/config"
"github.com/cybriq/proc/pkg/opts/meta"
"github.com/cybriq/proc/pkg/opts/normalize"
"github.com/cybriq/proc/pkg/path"
"go.uber.org/atomic"
"sort"
"strings"
)
type Opt struct {
@@ -51,14 +51,46 @@ func (o *Opt) RunHooks() (e error) {
}
func (o *Opt) FromValue(v []string) *Opt {
o.v.Store(v)
old := o.v.Load().([]string)
o.v.Store(append(old, v...))
return o
}
func (o *Opt) FromString(s string) (e error) {
s = strings.TrimSpace(s)
split := strings.Split(s, ",")
o.v.Store(split)
if o.v.Load() == nil {
o.v.Store([]string{})
}
ov := o.v.Load().([]string)
sort.Strings(ov)
emptyMap := make(map[string]bool)
for _, v := range ov {
emptyMap[v] = true
}
for _, v := range split {
emptyMap[v] = true
}
ov = []string{}
for i := range emptyMap{
if i == "" {
continue
}
ov = append(ov, i)
}
o.v.Store(ov)
e = o.RunHooks()
return
}