github.com/ppphp/yayagf@v0.0.1/internal/swagger/swagger.go (about)

     1  // just rewrite, a lot of copy paste
     2  package swagger
     3  
     4  import (
     5  	"encoding/json"
     6  	"fmt"
     7  	"io/ioutil"
     8  	"log"
     9  	"os"
    10  	"path"
    11  	"path/filepath"
    12  	"strconv"
    13  
    14  	"github.com/swaggo/swag"
    15  )
    16  
    17  func GenerateSwagger(root string) error {
    18  
    19  	p := swag.New()
    20  
    21  	if err := p.ParseAPI(root, "main.go", 100); err != nil {
    22  		return err
    23  	}
    24  
    25  	swagger := p.GetSwagger()
    26  
    27  	b, err := json.MarshalIndent(swagger, "", "    ")
    28  	if err != nil {
    29  		return err
    30  	}
    31  
    32  	OutputDir := filepath.Join(root, "app", "doc")
    33  	if err := os.MkdirAll(OutputDir, os.ModePerm); err != nil {
    34  		return err
    35  	}
    36  
    37  	docFileName := path.Join(OutputDir, "docs.go")
    38  	if err := ioutil.WriteFile(docFileName, []byte(fmt.Sprintf(`package doc
    39  
    40  const Swagger = %s
    41  `, strconv.Quote(string(b)))), 0644); err != nil {
    42  		return err
    43  	}
    44  
    45  	log.Printf("create docs.go at  %+v", docFileName)
    46  
    47  	return nil
    48  }