amyXia1994 / kcl-go

kclvm-go: KCLVM binding for Go

Home Page:https://pkg.go.dev/kusionstack.io/kclvm-go@main

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

KCL Go SDK

GoDoc Coverage Status license

Building

$ go run ./cmds/kcl-go
$ go run ./cmds/kcl-go run hello.k
name: kcl
age: 1
two: 2
x0:
  name: kcl
  age: 1
x1:
  name: kcl
  age: 101

Testing

go test ./...

Run KCL Code with Go SDK

package main

import (
	"fmt"

	kcl "kcl-lang.io/kcl-go"
)

func main() {
	yaml := kcl.MustRun("kubernetes.k", kcl.WithCode(k_code)).GetRawYamlResult()
	fmt.Println(yaml)
}

const k_code = `
apiVersion = "apps/v1"
kind = "Deployment"
metadata = {
    name = "nginx"
    labels.app = "nginx"
}
spec = {
    replicas = 3
    selector.matchLabels = metadata.labels
    template.metadata.labels = metadata.labels
    template.spec.containers = [
        {
            name = metadata.name
            image = "${metadata.name}:1.14.2"
            ports = [{ containerPort = 80 }]
        }
    ]
}
`

Run the command:

go run ./examples/kubernetes/main.go

Output:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

License

Apache License Version 2.0

About

kclvm-go: KCLVM binding for Go

https://pkg.go.dev/kusionstack.io/kclvm-go@main

License:Apache License 2.0


Languages

Language:Go 99.4%Language:Makefile 0.4%Language:Dockerfile 0.1%Language:AMPL 0.1%