kuma

Форк
0
50 строк · 1.2 Кб
1
package cmd
2

3
import (
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

14
func newOpenAPI(rootArgs *args) *cobra.Command {
15
	localArgs := struct {
16
		openAPITemplate string
17
	}{}
18
	cmd := &cobra.Command{
19
		Use:   "openapi",
20
		Short: "Generate an OpenAPI schema for the policy REST",
21
		Long:  "Generate an OpenAPI schema for the policy REST.",
22
		RunE: func(cmd *cobra.Command, _ []string) error {
23
			policyName := filepath.Base(rootArgs.pluginDir)
24
			policyPath := filepath.Join(rootArgs.pluginDir, "api", rootArgs.version, policyName+".go")
25
			if _, err := os.Stat(policyPath); err != nil {
26
				return err
27
			}
28

29
			pconfig, err := parse.Policy(policyPath)
30
			if err != nil {
31
				return err
32
			}
33
			if pconfig.SkipRegistration {
34
				return nil
35
			}
36

37
			tmpl, err := template.ParseFiles(localArgs.openAPITemplate)
38
			if err != nil {
39
				return err
40
			}
41

42
			outPath := filepath.Join(filepath.Dir(policyPath), "rest.yaml")
43
			return save.PlainTemplate(tmpl, pconfig, outPath)
44
		},
45
	}
46

47
	cmd.Flags().StringVar(&localArgs.openAPITemplate, "openapi-template-path", "", "path to the OpenAPI template file")
48

49
	return cmd
50
}
51

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.