Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
gitpod-io
GitHub Repository: gitpod-io/gitpod
Path: blob/main/install/installer/pkg/yq/yq.go
2500 views
1
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
2
/// Licensed under the GNU Affero General Public License (AGPL).
3
// See License.AGPL.txt in the project root for license information.
4
5
package yq
6
7
import (
8
"bytes"
9
"os"
10
"strings"
11
12
"github.com/mikefarah/yq/v4/pkg/yqlib"
13
logging "gopkg.in/op/go-logging.v1"
14
"k8s.io/utils/pointer"
15
)
16
17
func Process(input string, expression string) (*string, error) {
18
// Stop the logging to Stderr
19
var format = logging.MustStringFormatter(
20
`%{color}%{time:15:04:05} %{shortfunc} [%{level:.4s}]%{color:reset} %{message}`,
21
)
22
var backend = logging.AddModuleLevel(
23
logging.NewBackendFormatter(logging.NewLogBackend(os.Stderr, "", 0), format))
24
25
backend.SetLevel(logging.ERROR, "")
26
logging.SetBackend(backend)
27
// End of logger config
28
29
yqlib.InitExpressionParser()
30
31
var writer bytes.Buffer
32
printerWriter := yqlib.NewSinglePrinterWriter(&writer)
33
encoder := yqlib.NewYamlEncoder(2, false, false, true)
34
35
printer := yqlib.NewPrinter(encoder, printerWriter)
36
37
decoder := yqlib.NewYamlDecoder()
38
39
streamEvaluator := yqlib.NewStreamEvaluator()
40
41
reader := strings.NewReader(input)
42
43
node, err := yqlib.ExpressionParser.ParseExpression(expression)
44
if err != nil {
45
return nil, err
46
}
47
48
_, err = streamEvaluator.Evaluate("gitpod-installer.tmp.yaml", reader, node, printer, "", decoder)
49
if err != nil {
50
return nil, err
51
}
52
53
return pointer.String(writer.String()), nil
54
}
55
56