| package cmd |
| |
| import ( |
| "os" |
| "path/filepath" |
| "text/template" |
| ) |
| |
| import ( |
| "github.com/spf13/cobra" |
| ) |
| |
| import ( |
| "github.com/apache/dubbo-kubernetes/tools/policy-gen/generator/pkg/parse" |
| "github.com/apache/dubbo-kubernetes/tools/policy-gen/generator/pkg/save" |
| ) |
| |
| func newOpenAPI(rootArgs *args) *cobra.Command { |
| localArgs := struct { |
| openAPITemplate string |
| }{} |
| cmd := &cobra.Command{ |
| Use: "openapi", |
| Short: "Generate an OpenAPI schema for the policy REST", |
| Long: "Generate an OpenAPI schema for the policy REST.", |
| RunE: func(cmd *cobra.Command, _ []string) error { |
| policyName := filepath.Base(rootArgs.pluginDir) |
| policyPath := filepath.Join(rootArgs.pluginDir, "api", rootArgs.version, policyName+".go") |
| if _, err := os.Stat(policyPath); err != nil { |
| return err |
| } |
| |
| pconfig, err := parse.Policy(policyPath) |
| if err != nil { |
| return err |
| } |
| if pconfig.SkipRegistration { |
| return nil |
| } |
| |
| tmpl, err := template.ParseFiles(localArgs.openAPITemplate) |
| if err != nil { |
| return err |
| } |
| |
| outPath := filepath.Join(filepath.Dir(policyPath), "rest.yaml") |
| return save.PlainTemplate(tmpl, pconfig, outPath) |
| }, |
| } |
| |
| cmd.Flags().StringVar(&localArgs.openAPITemplate, "openapi-template-path", "", "path to the OpenAPI template file") |
| |
| return cmd |
| } |