mirror of https://github.com/h44z/wg-portal.git
				
				
				
			
		
			
				
	
	
		
			71 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
| package main
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"log"
 | |
| 	"os"
 | |
| 	"path/filepath"
 | |
| 	"strings"
 | |
| 
 | |
| 	"github.com/sirupsen/logrus"
 | |
| 	"github.com/swaggo/swag"
 | |
| 	"github.com/swaggo/swag/gen"
 | |
| )
 | |
| 
 | |
| // this replaces the call to: swag init --propertyStrategy pascalcase --parseDependency --parseInternal --generalInfo base.go
 | |
| func main() {
 | |
| 	wd, err := os.Getwd() // should be the project root
 | |
| 	if err != nil {
 | |
| 		panic(err)
 | |
| 	}
 | |
| 
 | |
| 	apiBasePath := filepath.Join(wd, "/internal/app/api")
 | |
| 	apis := []string{"v0"}
 | |
| 
 | |
| 	hasError := false
 | |
| 	for _, apiVersion := range apis {
 | |
| 		apiPath := filepath.Join(apiBasePath, apiVersion, "handlers")
 | |
| 
 | |
| 		apiVersion = strings.TrimLeft(apiVersion, "api-")
 | |
| 		log.Println("")
 | |
| 		log.Println("Generate swagger docs for API", apiVersion)
 | |
| 		log.Println("Api path:", apiPath)
 | |
| 
 | |
| 		err := generateApi(apiBasePath, apiPath, apiVersion)
 | |
| 		if err != nil {
 | |
| 			hasError = true
 | |
| 			logrus.Errorf("failed to generate API docs for %s: %v", apiVersion, err)
 | |
| 		}
 | |
| 
 | |
| 		log.Println("Generated swagger docs for API", apiVersion)
 | |
| 	}
 | |
| 
 | |
| 	if hasError {
 | |
| 		os.Exit(1)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func generateApi(basePath, apiPath, version string) error {
 | |
| 	err := gen.New().Build(&gen.Config{
 | |
| 		SearchDir:           apiPath,
 | |
| 		Excludes:            "",
 | |
| 		MainAPIFile:         "base.go",
 | |
| 		PropNamingStrategy:  swag.PascalCase,
 | |
| 		OutputDir:           filepath.Join(basePath, "core/assets/doc"),
 | |
| 		OutputTypes:         []string{"json", "yaml"},
 | |
| 		ParseVendor:         false,
 | |
| 		ParseDependency:     3,
 | |
| 		MarkdownFilesDir:    "",
 | |
| 		ParseInternal:       true,
 | |
| 		GeneratedTime:       false,
 | |
| 		CodeExampleFilesDir: "",
 | |
| 		ParseDepth:          3,
 | |
| 		InstanceName:        version,
 | |
| 	})
 | |
| 	if err != nil {
 | |
| 		return fmt.Errorf("swag failed: %w", err)
 | |
| 	}
 | |
| 
 | |
| 	return nil
 | |
| }
 |