main.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package main
  2. import (
  3. "fmt"
  4. "github.com/99designs/gqlgen/api"
  5. "github.com/99designs/gqlgen/codegen/config"
  6. "github.com/spf13/pflag"
  7. "os"
  8. "strings"
  9. )
  10. var (
  11. cfg = config.DefaultConfig()
  12. availableModules = []string{"customer", "product"}
  13. fModule = pflag.StringP("module", "m", "", "module name")
  14. )
  15. func init() {
  16. pflag.Parse()
  17. if fModule == nil || *fModule == "" {
  18. _, _ = fmt.Fprintf(os.Stderr, "specify module name; available modules are: %v\n", availableModules)
  19. os.Exit(2)
  20. }
  21. }
  22. func main() {
  23. *fModule = strings.ToLower(strings.TrimSpace(*fModule))
  24. moduleSchema := fmt.Sprintf("subgraph/%s.tpl", *fModule)
  25. f, err := os.OpenFile(moduleSchema, os.O_RDONLY, 0644)
  26. if err != nil {
  27. _, _ = fmt.Fprintf(os.Stderr, "unknown module; %v\n", err.Error())
  28. os.Exit(2)
  29. }
  30. defer f.Close()
  31. if stat, err := f.Stat(); err != nil || stat.Size() < 1 {
  32. fmt.Printf("illegal module definition schema")
  33. _, _ = fmt.Fprintf(os.Stderr, "illegal module definition schema")
  34. os.Exit(2)
  35. }
  36. // Federation
  37. cfg.Federation = config.PackageConfig{
  38. Filename: fmt.Sprintf("graph/%s/generated/federation.go", *fModule),
  39. Version: 2,
  40. }
  41. // Exec
  42. cfg.Exec = config.ExecConfig{
  43. Filename: fmt.Sprintf("graph/%s/generated/generated.go", *fModule),
  44. }
  45. // Model
  46. cfg.Model = config.PackageConfig{
  47. Filename: fmt.Sprintf("graph/%s/generated/models.go", *fModule),
  48. }
  49. cfg.Resolver = config.ResolverConfig{
  50. Filename: fmt.Sprintf("graph/%s/resolvers.go", *fModule),
  51. Type: "Resolver",
  52. }
  53. // SchemaFilename
  54. cfg.SchemaFilename = config.StringList{
  55. moduleSchema,
  56. "ext/*.graphql",
  57. }
  58. if err := config.CompleteConfig(cfg); err != nil {
  59. _, _ = fmt.Fprintln(os.Stderr, err.Error())
  60. os.Exit(3)
  61. }
  62. if err := api.Generate(cfg); err != nil {
  63. _, _ = fmt.Fprintln(os.Stderr, err.Error())
  64. os.Exit(3)
  65. }
  66. os.Exit(0)
  67. }