54 lines
1019 B
Go
54 lines
1019 B
Go
package instruction
|
|
|
|
import (
|
|
"fmt"
|
|
"git.xdrm.io/go/nix-amer/internal/cnf"
|
|
"strings"
|
|
)
|
|
|
|
type config struct {
|
|
// File is the path to the file
|
|
File string
|
|
// Path is the configuration field path
|
|
Path []string
|
|
// Value if the value to add or update
|
|
Value string
|
|
// Format is the configuration format in use
|
|
Format *cnf.ConfigurationFormat
|
|
}
|
|
|
|
func (d *config) Build(_args string) error {
|
|
|
|
// 1. extract action (sub command)
|
|
split := strings.Fields(_args)
|
|
|
|
// 2. check path
|
|
if len(split) < 2 {
|
|
return fmt.Errorf("missing configuration path")
|
|
}
|
|
path := split[0]
|
|
value := strings.Join(split[1:], "")
|
|
|
|
// 3. check path separator
|
|
splitPath := strings.Split(path, "@")
|
|
if len(splitPath) > 2 {
|
|
return fmt.Errorf("invalid path (additional '@'?)")
|
|
}
|
|
|
|
d.File = splitPath[0]
|
|
if len(splitPath) > 1 { // add field path only if set
|
|
d.Path = strings.Split(splitPath[1], ".")
|
|
}
|
|
|
|
// add value
|
|
d.Value = value
|
|
|
|
return nil
|
|
}
|
|
|
|
func (d config) Exec(ctx ExecutionContext) ([]byte, error) {
|
|
|
|
return nil, nil
|
|
|
|
}
|