diff --git a/integration/cmd_map_test.go b/integration/cmd_map_test.go index dd5b65e82c..06652b77fd 100644 --- a/integration/cmd_map_test.go +++ b/integration/cmd_map_test.go @@ -64,6 +64,14 @@ func TestCreateMapWithStargate(t *testing.T) { )), )) + env.Must(env.Exec("create a message and a map with no-message flag to check conflicts", + step.NewSteps(step.New( + step.Exec("starport", "s", "message", "create-scavenge", "description"), + step.Exec("starport", "s", "map", "scavenge", "description", "--no-message"), + step.Workdir(path), + )), + )) + env.Must(env.Exec("should prevent creating a map with duplicated indexes", step.NewSteps(step.New( step.Exec("starport", "s", "map", "map_with_duplicated_index", "email", "--index", "foo,foo"), diff --git a/starport/services/scaffolder/component.go b/starport/services/scaffolder/component.go index f974d0de12..de0e89bad9 100644 --- a/starport/services/scaffolder/component.go +++ b/starport/services/scaffolder/component.go @@ -56,7 +56,7 @@ func isMsgServerDefined(appPath, moduleName string) (bool, error) { } // checkComponentValidity performs various checks common to all components to verify if it can be scaffolded -func checkComponentValidity(appPath, moduleName string, compName multiformatname.Name) error { +func checkComponentValidity(appPath, moduleName string, compName multiformatname.Name, noMessage bool) error { ok, err := moduleExists(appPath, moduleName) if err != nil { return err @@ -71,7 +71,7 @@ func checkComponentValidity(appPath, moduleName string, compName multiformatname } // Check component name is not already used - return checkComponentCreated(appPath, moduleName, compName) + return checkComponentCreated(appPath, moduleName, compName, noMessage) } // checkForbiddenComponentName returns true if the name is forbidden as a component name @@ -144,25 +144,28 @@ func checkGoReservedWord(name string) error { } // checkComponentCreated checks if the component has been already created with Starport in the project -func checkComponentCreated(appPath, moduleName string, compName multiformatname.Name) (err error) { +func checkComponentCreated(appPath, moduleName string, compName multiformatname.Name, noMessage bool) (err error) { // associate the type to check with the component that scaffold this type typesToCheck := map[string]string{ compName.UpperCamel: componentType, - "MsgCreate" + compName.UpperCamel: componentType, - "MsgUpdate" + compName.UpperCamel: componentType, - "MsgDelete" + compName.UpperCamel: componentType, "QueryAll" + compName.UpperCamel + "Request": componentType, "QueryAll" + compName.UpperCamel + "Response": componentType, "QueryGet" + compName.UpperCamel + "Request": componentType, "QueryGet" + compName.UpperCamel + "Response": componentType, - "Msg" + compName.UpperCamel: componentMessage, "Query" + compName.UpperCamel + "Request": componentQuery, "Query" + compName.UpperCamel + "Response": componentQuery, - "MsgSend" + compName.UpperCamel: componentPacket, compName.UpperCamel + "PacketData": componentPacket, } + if !noMessage { + typesToCheck["MsgCreate"+compName.UpperCamel] = componentType + typesToCheck["MsgUpdate"+compName.UpperCamel] = componentType + typesToCheck["MsgDelete"+compName.UpperCamel] = componentType + typesToCheck["Msg"+compName.UpperCamel] = componentMessage + typesToCheck["MsgSend"+compName.UpperCamel] = componentPacket + } + absPath, err := filepath.Abs(filepath.Join(appPath, "x", moduleName, "types")) if err != nil { return err diff --git a/starport/services/scaffolder/message.go b/starport/services/scaffolder/message.go index 3a4673ebc9..99cded4d71 100644 --- a/starport/services/scaffolder/message.go +++ b/starport/services/scaffolder/message.go @@ -80,7 +80,7 @@ func (s *Scaffolder) AddMessage( return sm, err } - if err := checkComponentValidity(s.path, moduleName, name); err != nil { + if err := checkComponentValidity(s.path, moduleName, name, false); err != nil { return sm, err } diff --git a/starport/services/scaffolder/oracle.go b/starport/services/scaffolder/oracle.go index 5d9b50f610..ddb95e44d1 100644 --- a/starport/services/scaffolder/oracle.go +++ b/starport/services/scaffolder/oracle.go @@ -34,7 +34,7 @@ func (s *Scaffolder) AddOracle( return sm, err } - if err := checkComponentValidity(s.path, moduleName, name); err != nil { + if err := checkComponentValidity(s.path, moduleName, name, false); err != nil { return sm, err } diff --git a/starport/services/scaffolder/packet.go b/starport/services/scaffolder/packet.go index 4514a47fae..346563e341 100644 --- a/starport/services/scaffolder/packet.go +++ b/starport/services/scaffolder/packet.go @@ -43,7 +43,7 @@ func (s *Scaffolder) AddPacket( return sm, err } - if err := checkComponentValidity(s.path, moduleName, name); err != nil { + if err := checkComponentValidity(s.path, moduleName, name, noMessage); err != nil { return sm, err } diff --git a/starport/services/scaffolder/query.go b/starport/services/scaffolder/query.go index 2b931cedd3..83c262319d 100644 --- a/starport/services/scaffolder/query.go +++ b/starport/services/scaffolder/query.go @@ -42,7 +42,7 @@ func (s *Scaffolder) AddQuery( return sm, err } - if err := checkComponentValidity(s.path, moduleName, name); err != nil { + if err := checkComponentValidity(s.path, moduleName, name, true); err != nil { return sm, err } diff --git a/starport/services/scaffolder/type.go b/starport/services/scaffolder/type.go index 68ce5b8df4..4bae076ab2 100644 --- a/starport/services/scaffolder/type.go +++ b/starport/services/scaffolder/type.go @@ -120,7 +120,7 @@ func (s *Scaffolder) AddType( return sm, err } - if err := checkComponentValidity(s.path, moduleName, name); err != nil { + if err := checkComponentValidity(s.path, moduleName, name, o.withoutMessage); err != nil { return sm, err }