Files
kubevela/hack/crd/update.go
2020-11-14 09:10:39 +08:00

68 lines
1.6 KiB
Go

package main
import (
"fmt"
"io/ioutil"
"log"
"os"
"path/filepath"
"strings"
)
func main() {
dir, err := os.Getwd()
if err != nil {
log.Fatal(err)
}
if len(os.Args) > 1 {
dir = os.Args[1]
}
err = FixNewSchemaValidationCheck(dir)
if err != nil {
fmt.Fprintln(os.Stderr, "error getting chart source:", err)
os.Exit(1)
}
}
// FixNewSchemaValidationCheck temporarily corrects spec.validation.openAPIV3Schema issue, and it would be removed
// after this issue was fixed https://github.com/oam-dev/kubevela/issues/284.
func FixNewSchemaValidationCheck(chartPath string) error {
err := filepath.Walk(chartPath, func(path string, info os.FileInfo, err error) error {
if err != nil {
fmt.Fprintln(os.Stderr, "failed to list the content of", path)
return err
}
if info.IsDir() {
return nil
}
if info.Name() != "standard.oam.dev_podspecworkloads.yaml" {
return nil
}
data, err := ioutil.ReadFile(path)
if err != nil {
fmt.Fprintln(os.Stderr, "open path err", path, err)
return err
}
var newdata []string
var previousLine string
for _, line := range strings.Split(string(data), "\n") {
if strings.Contains(previousLine, "protocol:") &&
strings.Contains(line, "description: Protocol for port. Must be UDP, TCP,") {
tmp := strings.Split(line, "description")
if len(tmp) > 0 {
blanks := tmp[0]
defaultStr := blanks + "default: TCP"
newdata = append(newdata, defaultStr)
}
}
newdata = append(newdata, line)
previousLine = line
}
return ioutil.WriteFile(path, []byte(strings.Join(newdata, "\n")), info.Mode())
})
return err
}