nix-amer/internal/instruction/cnf.go

60 lines
1.1 KiB
Go

package instruction
import (
"fmt"
"git.xdrm.io/go/nix-amer/internal/cnf"
"strings"
)
type config struct {
raw string
// 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) Raw() string { return d.raw }
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
d.raw = _args
return nil
}
func (d config) Exec(ctx ExecutionContext) ([]byte, error) {
fmt.Printf("path is '%v'\n", d.Path)
return nil, nil
}