kuma
50 строк · 1.2 Кб
1package cmd
2
3import (
4"os"
5"path/filepath"
6"text/template"
7
8"github.com/spf13/cobra"
9
10"github.com/kumahq/kuma/tools/policy-gen/generator/pkg/parse"
11"github.com/kumahq/kuma/tools/policy-gen/generator/pkg/save"
12)
13
14func newOpenAPI(rootArgs *args) *cobra.Command {
15localArgs := struct {
16openAPITemplate string
17}{}
18cmd := &cobra.Command{
19Use: "openapi",
20Short: "Generate an OpenAPI schema for the policy REST",
21Long: "Generate an OpenAPI schema for the policy REST.",
22RunE: func(cmd *cobra.Command, _ []string) error {
23policyName := filepath.Base(rootArgs.pluginDir)
24policyPath := filepath.Join(rootArgs.pluginDir, "api", rootArgs.version, policyName+".go")
25if _, err := os.Stat(policyPath); err != nil {
26return err
27}
28
29pconfig, err := parse.Policy(policyPath)
30if err != nil {
31return err
32}
33if pconfig.SkipRegistration {
34return nil
35}
36
37tmpl, err := template.ParseFiles(localArgs.openAPITemplate)
38if err != nil {
39return err
40}
41
42outPath := filepath.Join(filepath.Dir(policyPath), "rest.yaml")
43return save.PlainTemplate(tmpl, pconfig, outPath)
44},
45}
46
47cmd.Flags().StringVar(&localArgs.openAPITemplate, "openapi-template-path", "", "path to the OpenAPI template file")
48
49return cmd
50}
51