ソースを参照

cmd

- add Module
Alexey Kim 2 年 前
コミット
3df6f15e92
2 ファイル変更42 行追加11 行削除
  1. 14 11
      cmd/main.go
  2. 28 0
      module.go

+ 14 - 11
cmd/main.go

@@ -5,29 +5,32 @@ import (
 	"github.com/99designs/gqlgen/api"
 	"github.com/99designs/gqlgen/codegen/config"
 	"github.com/spf13/pflag"
+	admin_api "gshopper.com/gshopify/admin-api"
 	"os"
-	"strings"
 )
 
 var (
-	cfg              = config.DefaultConfig()
-	availableModules = []string{"customer", "product", "order", "shop"}
-	fModule          = pflag.StringP("module", "m", "", "module name")
+	cfg     = config.DefaultConfig()
+	fModule = pflag.StringP("module", "m", "", "module name")
 )
 
 func init() {
 	pflag.Parse()
 
 	if fModule == nil || *fModule == "" {
-		_, _ = fmt.Fprintf(os.Stderr, "specify module name; available modules are: %v\n", availableModules)
+		_, _ = fmt.Fprintf(os.Stderr, "specify module name; available modules are: %v\n", admin_api.AllModules)
 		os.Exit(2)
 	}
 }
 
 func main() {
-	*fModule = strings.ToLower(strings.TrimSpace(*fModule))
+	module := admin_api.Module(*fModule)
+	if !module.IsValid() {
+		_, _ = fmt.Fprintf(os.Stderr, "incorrect module name has been specified; available modules are: %v\n", admin_api.AllModules)
+		os.Exit(2)
+	}
 
-	moduleSchema := fmt.Sprintf("subgraph/%s.tpl", *fModule)
+	moduleSchema := fmt.Sprintf("subgraph/%s.tpl", module)
 	f, err := os.OpenFile(moduleSchema, os.O_RDONLY, 0644)
 	if err != nil {
 		_, _ = fmt.Fprintf(os.Stderr, "unknown module; %v\n", err.Error())
@@ -43,23 +46,23 @@ func main() {
 
 	// Federation
 	cfg.Federation = config.PackageConfig{
-		Filename: fmt.Sprintf("graph/%s/generated/federation.go", *fModule),
+		Filename: fmt.Sprintf("graph/%s/generated/federation.go", module),
 		Version:  2,
 	}
 
 	// Exec
 	cfg.Exec = config.ExecConfig{
-		Filename: fmt.Sprintf("graph/%s/generated/generated.go", *fModule),
+		Filename: fmt.Sprintf("graph/%s/generated/generated.go", module),
 	}
 
 	// Model
 	cfg.Model = config.PackageConfig{
-		Filename: fmt.Sprintf("graph/%s/generated/models.go", *fModule),
+		Filename: fmt.Sprintf("graph/%s/generated/models.go", module),
 	}
 
 	cfg.Resolver = config.ResolverConfig{
 		Layout:  config.LayoutFollowSchema,
-		DirName: fmt.Sprintf("graph/%s", *fModule),
+		DirName: fmt.Sprintf("graph/%s", module),
 	}
 
 	// SchemaFilename

+ 28 - 0
module.go

@@ -0,0 +1,28 @@
+package admin_api
+
+type Module string
+
+const (
+	ModuleCustomer Module = "customer"
+	ModuleProduct  Module = "product"
+	ModuleOrder    Module = "order"
+	ModuleShop     Module = "shop"
+)
+
+var AllModules = []Module{
+	ModuleCustomer, ModuleProduct, ModuleOrder, ModuleShop,
+}
+
+func (m Module) IsValid() bool {
+	for _, module := range AllModules {
+		if module == m {
+			return true
+		}
+	}
+
+	return false
+}
+
+func (m Module) String() string {
+	return string(m)
+}