genconfig.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package gogen
  2. import (
  3. "bytes"
  4. "fmt"
  5. "strings"
  6. "text/template"
  7. "github.com/tal-tech/go-zero/tools/goctl/api/spec"
  8. "github.com/tal-tech/go-zero/tools/goctl/api/util"
  9. "github.com/tal-tech/go-zero/tools/goctl/config"
  10. ctlutil "github.com/tal-tech/go-zero/tools/goctl/util"
  11. "github.com/tal-tech/go-zero/tools/goctl/util/format"
  12. "github.com/tal-tech/go-zero/tools/goctl/vars"
  13. )
  14. const (
  15. configFile = "config"
  16. configTemplate = `package config
  17. import {{.authImport}}
  18. type Config struct {
  19. rest.RestConf
  20. {{.auth}}
  21. }
  22. `
  23. jwtTemplate = ` struct {
  24. AccessSecret string
  25. AccessExpire int64
  26. }
  27. `
  28. )
  29. func genConfig(dir string, cfg *config.Config, api *spec.ApiSpec) error {
  30. filename, err := format.FileNamingFormat(cfg.NamingFormat, configFile)
  31. if err != nil {
  32. return err
  33. }
  34. fp, created, err := util.MaybeCreateFile(dir, configDir, filename+".go")
  35. if err != nil {
  36. return err
  37. }
  38. if !created {
  39. return nil
  40. }
  41. defer fp.Close()
  42. var authNames = getAuths(api)
  43. var auths []string
  44. for _, item := range authNames {
  45. auths = append(auths, fmt.Sprintf("%s %s", item, jwtTemplate))
  46. }
  47. var authImportStr = fmt.Sprintf("\"%s/rest\"", vars.ProjectOpenSourceUrl)
  48. text, err := ctlutil.LoadTemplate(category, configTemplateFile, configTemplate)
  49. if err != nil {
  50. return err
  51. }
  52. t := template.Must(template.New("configTemplate").Parse(text))
  53. buffer := new(bytes.Buffer)
  54. err = t.Execute(buffer, map[string]string{
  55. "authImport": authImportStr,
  56. "auth": strings.Join(auths, "\n"),
  57. })
  58. if err != nil {
  59. return err
  60. }
  61. formatCode := formatCode(buffer.String())
  62. _, err = fp.WriteString(formatCode)
  63. return err
  64. }