2020-03-18 14:45:24 +00:00
|
|
|
//go generate
|
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"flag"
|
|
|
|
"fmt"
|
|
|
|
"html/template"
|
|
|
|
"log"
|
|
|
|
"os"
|
|
|
|
"strings"
|
|
|
|
)
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
errorName := readErrorName()
|
|
|
|
errorName = validateErrorName(errorName)
|
|
|
|
|
|
|
|
data := &Data{
|
|
|
|
ErrorName: errorName,
|
|
|
|
}
|
|
|
|
|
|
|
|
errorFile := data.createFile("error.go.tmpl")
|
|
|
|
data.createTemplate("error.go.tmpl", errorFile)
|
|
|
|
if err := errorFile.Close(); err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
testFile := data.createFile("error_test.go.tmpl")
|
|
|
|
data.createTemplate("error_test.go.tmpl", testFile)
|
|
|
|
if err := testFile.Close(); err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
fmt.Print(`
|
|
|
|
!!!!!
|
2020-03-24 06:22:31 +00:00
|
|
|
Add status mapping in internal/api/grpc/caos_errors.go
|
2020-03-18 14:45:24 +00:00
|
|
|
!!!!!`)
|
|
|
|
}
|
|
|
|
|
|
|
|
type Data struct {
|
|
|
|
ErrorName string
|
|
|
|
}
|
|
|
|
|
|
|
|
func (data *Data) createFile(tmplName string) *os.File {
|
|
|
|
filename := strings.Replace(tmplName, "error", strings.ToLower(data.ErrorName), 1)
|
|
|
|
filename = filename[:len(filename)-5]
|
|
|
|
filePath := fmt.Sprintf("../%s", filename)
|
|
|
|
file, err := os.Create(filePath)
|
|
|
|
if err != nil {
|
|
|
|
log.Fatalf("unable to create file (%s): %v", filePath, err)
|
|
|
|
}
|
|
|
|
return file
|
|
|
|
}
|
|
|
|
|
|
|
|
func (data *Data) createTemplate(templateName string, file *os.File) {
|
|
|
|
tmpl := template.Must(template.New(templateName).ParseFiles(templateName))
|
|
|
|
if err := tmpl.Execute(file, data); err != nil {
|
|
|
|
log.Fatal("unable to execute tmpl: ", err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func readErrorName() (errorName string) {
|
2021-01-04 13:52:13 +00:00
|
|
|
flag.StringVar(&errorName, "Name", "", "KeyType of the error (e.g. Internal)")
|
2020-03-18 14:45:24 +00:00
|
|
|
flag.Parse()
|
|
|
|
return errorName
|
|
|
|
}
|
|
|
|
|
|
|
|
func validateErrorName(errorName string) string {
|
|
|
|
if errorName == "" {
|
|
|
|
log.Fatal("pass argument name")
|
|
|
|
}
|
|
|
|
if strings.Contains(errorName, " ") || strings.Contains(errorName, ".") {
|
|
|
|
log.Fatal("name cannot contain spaces or points")
|
|
|
|
}
|
|
|
|
return strings.Title(errorName)
|
|
|
|
}
|