From f8bdda0313c41e519cc4f92f5b7a7093bc7fa3ec Mon Sep 17 00:00:00 2001 From: Tit Petric Date: Wed, 21 Nov 2018 14:58:55 +0100 Subject: [PATCH] upd(v2 codegen): add perm generator, rename --- codegen/v2/gen-permissions.go | 60 +++++++++++++++++++++ codegen/v2/{type-set.go => gen-type-set.go} | 1 + 2 files changed, 61 insertions(+) create mode 100644 codegen/v2/gen-permissions.go rename codegen/v2/{type-set.go => gen-type-set.go} (99%) diff --git a/codegen/v2/gen-permissions.go b/codegen/v2/gen-permissions.go new file mode 100644 index 000000000..eac2e7926 --- /dev/null +++ b/codegen/v2/gen-permissions.go @@ -0,0 +1,60 @@ +package main + +import ( + "bytes" + "encoding/json" + "flag" + "fmt" + "io/ioutil" + "log" + "os" + "strings" + + "github.com/crusttech/crust/internal/rbac" +) + +func main() { + var ( + pkg = flag.String("package", "main", "Package name") + input = flag.String("input", "", "Input .json filename") + output = flag.String("output", "", "Output .go filename") + fname = flag.String("function", "func Permissions() []rbac.OperationGroup", "Default function declaration") + ) + flag.Parse() + + export := func(s string) string { + s = strings.Replace(s, "true,", "true,\n", -1) + s = strings.Replace(s, "false,", "false,\n", -1) + s = strings.Replace(s, "{", "{\n", -1) + s = strings.Replace(s, "}", ",\n}", -1) + s = strings.Replace(s, "\", ", "\",\n", -1) + + var w bytes.Buffer + + fmt.Fprintln(&w, "package", *pkg) + fmt.Fprintln(&w) + fmt.Fprintln(&w, "import \"github.com/crusttech/crust/internal/rbac\"") + fmt.Fprintln(&w) + fmt.Fprintln(&w, "/* File is generated from", *input, "& main.go */") + fmt.Fprintln(&w) + fmt.Fprintln(&w, *fname, "{") + fmt.Fprintln(&w, "\treturn", s) + fmt.Fprintln(&w, "}") + + return w.String() + } + + var result []rbac.OperationGroup + f, err := os.Open(*input) + if err != nil { + log.Fatal(err) + } + if err := json.NewDecoder(f).Decode(&result); err != nil { + log.Fatal(err) + } + source := export(fmt.Sprintf("%#v", result)) + if err := ioutil.WriteFile(*output, []byte(source), 0644); err != nil { + log.Fatal(err) + } + fmt.Println(*output) +} diff --git a/codegen/v2/type-set.go b/codegen/v2/gen-type-set.go similarity index 99% rename from codegen/v2/type-set.go rename to codegen/v2/gen-type-set.go index cc3d96a0e..a7223e5bb 100644 --- a/codegen/v2/type-set.go +++ b/codegen/v2/gen-type-set.go @@ -142,6 +142,7 @@ func main() { if output, err = os.Create(outputFile); err != nil { exit(err) } + fmt.Println(outputFile) defer output.(io.Closer).Close() }