mirror of
https://github.com/taigrr/yq
synced 2025-01-18 04:53:17 -08:00
37 lines
829 B
Go
37 lines
829 B
Go
package yqlib
|
|
|
|
import (
|
|
logging "gopkg.in/op/go-logging.v1"
|
|
yaml "gopkg.in/yaml.v3"
|
|
)
|
|
|
|
type YqLib interface {
|
|
Get(rootNode *yaml.Node, path string) (*yaml.Node, error)
|
|
Update(rootNode *yaml.Node, path string, writeCommand WriteCommand) error
|
|
}
|
|
|
|
type lib struct {
|
|
navigator DataNavigator
|
|
parser PathParser
|
|
}
|
|
|
|
func NewYqLib(l *logging.Logger) YqLib {
|
|
return &lib{
|
|
navigator: NewDataNavigator(l),
|
|
parser: NewPathParser(),
|
|
}
|
|
}
|
|
|
|
func (l *lib) Get(rootNode *yaml.Node, path string) (*yaml.Node, error) {
|
|
if path == "" {
|
|
return rootNode, nil
|
|
}
|
|
var paths = l.parser.ParsePath(path)
|
|
return l.navigator.Get(rootNode, paths)
|
|
}
|
|
|
|
func (l *lib) Update(rootNode *yaml.Node, path string, writeCommand WriteCommand) error {
|
|
var paths = l.parser.ParsePath(path)
|
|
return l.navigator.Update(rootNode, paths, writeCommand)
|
|
}
|