38 lines
819 B
Go
38 lines
819 B
Go
package kapacitor
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
|
|
"github.com/influxdata/chronograf"
|
|
"github.com/influxdata/kapacitor/pipeline"
|
|
totick "github.com/influxdata/kapacitor/pipeline/tick"
|
|
)
|
|
|
|
// MarshalTICK converts tickscript to JSON representation
|
|
func MarshalTICK(script string) ([]byte, error) {
|
|
pipeline, err := newPipeline(chronograf.TICKScript(script))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return json.MarshalIndent(pipeline, "", " ")
|
|
}
|
|
|
|
// UnmarshalTICK converts JSON to tickscript
|
|
func UnmarshalTICK(octets []byte) (string, error) {
|
|
pipe := &pipeline.Pipeline{}
|
|
if err := pipe.Unmarshal(octets); err != nil {
|
|
return "", err
|
|
}
|
|
|
|
ast := totick.AST{}
|
|
err := ast.Build(pipe)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
var buf bytes.Buffer
|
|
ast.Program.Format(&buf, "", false)
|
|
return buf.String(), nil
|
|
}
|