From a2d9018a24df78acf863b501bf84f15379fbae6f Mon Sep 17 00:00:00 2001 From: ltacker Date: Fri, 12 Mar 2021 13:52:41 +0100 Subject: [PATCH 1/4] Forbidden type name --- starport/services/scaffolder/message.go | 6 ++--- starport/services/scaffolder/packet.go | 5 +++++ starport/services/scaffolder/type.go | 30 +++++++++++++++++++------ 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/starport/services/scaffolder/message.go b/starport/services/scaffolder/message.go index ab071429e4..0b9360f0a7 100644 --- a/starport/services/scaffolder/message.go +++ b/starport/services/scaffolder/message.go @@ -37,9 +37,9 @@ func (s *Scaffolder) AddMessage(moduleName string, msgName string, msgDesc strin return fmt.Errorf("the module %s doesn't exist", moduleName) } - // Ensure the msg name is not a Go reserved name, it would generate an incorrect code - if isGoReservedWord(msgName) { - return fmt.Errorf("%s can't be used as a type name", msgName) + // Ensure the name is valid, otherwise it would generate an incorrect code + if isForbiddenTypeName(msgName) { + return fmt.Errorf("%s can't be used as a packet name", msgName) } // Check msg is not already created diff --git a/starport/services/scaffolder/packet.go b/starport/services/scaffolder/packet.go index aca7a3cc70..5aaa08832a 100644 --- a/starport/services/scaffolder/packet.go +++ b/starport/services/scaffolder/packet.go @@ -54,6 +54,11 @@ func (s *Scaffolder) AddPacket(moduleName string, packetName string, packetField return fmt.Errorf("the module %s doesn't implement IBC module interface", moduleName) } + // Ensure the name is valid, otherwise it would generate an incorrect code + if isForbiddenTypeName(packetName) { + return fmt.Errorf("%s can't be used as a packet name", packetName) + } + // Check packet doesn't exist ok, err = isPacketCreated(s.path, moduleName, packetName) if err != nil { diff --git a/starport/services/scaffolder/type.go b/starport/services/scaffolder/type.go index e40d24e1c1..4ae9f15a93 100644 --- a/starport/services/scaffolder/type.go +++ b/starport/services/scaffolder/type.go @@ -31,7 +31,7 @@ type AddTypeOption struct { } // AddType adds a new type stype to scaffolded app by using optional type fields. -func (s *Scaffolder) AddType(addTypeOptions AddTypeOption, moduleName string, stype string, fields ...string) error { +func (s *Scaffolder) AddType(addTypeOptions AddTypeOption, moduleName string, typeName string, fields ...string) error { version, err := s.version() if err != nil { return err @@ -54,18 +54,18 @@ func (s *Scaffolder) AddType(addTypeOptions AddTypeOption, moduleName string, st return fmt.Errorf("the module %s doesn't exist", moduleName) } - // Ensure the type name is not a Go reserved name, it would generate an incorrect code - if isGoReservedWord(stype) { - return fmt.Errorf("%s can't be used as a type name", stype) + // Ensure the type name is valid, otherwise it would generate an incorrect code + if isForbiddenTypeName(typeName) { + return fmt.Errorf("%s can't be used as a type name", typeName) } // Check type is not already created - ok, err = isTypeCreated(s.path, moduleName, stype) + ok, err = isTypeCreated(s.path, moduleName, typeName) if err != nil { return err } if ok { - return fmt.Errorf("%s type is already added", stype) + return fmt.Errorf("%s type is already added", typeName) } // Parse provided field @@ -81,7 +81,7 @@ func (s *Scaffolder) AddType(addTypeOptions AddTypeOption, moduleName string, st ModulePath: path.RawPath, ModuleName: moduleName, OwnerName: owner(path.RawPath), - TypeName: stype, + TypeName: typeName, Fields: tFields, Legacy: addTypeOptions.Legacy, } @@ -222,6 +222,22 @@ func isMsgServerDefined(appPath, moduleName string) (bool, error) { return true, err } +// isForbiddenTypeName returns true if the name is forbidden as a type name +func isForbiddenTypeName(name string) bool { + switch name { + case + "logger", + "keeper", + "query", + "genesis", + "types", + "tx": + return true + } + + return isGoReservedWord(name) +} + // isForbiddenTypeField returns true if the name is forbidden as a field name func isForbiddenTypeField(name string) bool { switch name { From d614b1191eeaf2653a7d422fbe627322188d5a0f Mon Sep 17 00:00:00 2001 From: ltacker Date: Fri, 12 Mar 2021 14:16:53 +0100 Subject: [PATCH 2/4] Rename type to component --- starport/services/scaffolder/message.go | 2 +- starport/services/scaffolder/packet.go | 2 +- starport/services/scaffolder/type.go | 29 +++++++++++++------------ 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/starport/services/scaffolder/message.go b/starport/services/scaffolder/message.go index 0b9360f0a7..aa97a14372 100644 --- a/starport/services/scaffolder/message.go +++ b/starport/services/scaffolder/message.go @@ -38,7 +38,7 @@ func (s *Scaffolder) AddMessage(moduleName string, msgName string, msgDesc strin } // Ensure the name is valid, otherwise it would generate an incorrect code - if isForbiddenTypeName(msgName) { + if isForbiddenComponentName(msgName) { return fmt.Errorf("%s can't be used as a packet name", msgName) } diff --git a/starport/services/scaffolder/packet.go b/starport/services/scaffolder/packet.go index 5aaa08832a..40f71ca682 100644 --- a/starport/services/scaffolder/packet.go +++ b/starport/services/scaffolder/packet.go @@ -55,7 +55,7 @@ func (s *Scaffolder) AddPacket(moduleName string, packetName string, packetField } // Ensure the name is valid, otherwise it would generate an incorrect code - if isForbiddenTypeName(packetName) { + if isForbiddenComponentName(packetName) { return fmt.Errorf("%s can't be used as a packet name", packetName) } diff --git a/starport/services/scaffolder/type.go b/starport/services/scaffolder/type.go index 4ae9f15a93..e63ac723d2 100644 --- a/starport/services/scaffolder/type.go +++ b/starport/services/scaffolder/type.go @@ -55,7 +55,7 @@ func (s *Scaffolder) AddType(addTypeOptions AddTypeOption, moduleName string, ty } // Ensure the type name is valid, otherwise it would generate an incorrect code - if isForbiddenTypeName(typeName) { + if isForbiddenComponentName(typeName) { return fmt.Errorf("%s can't be used as a type name", typeName) } @@ -222,35 +222,36 @@ func isMsgServerDefined(appPath, moduleName string) (bool, error) { return true, err } -// isForbiddenTypeName returns true if the name is forbidden as a type name -func isForbiddenTypeName(name string) bool { +// isForbiddenTypeField returns true if the name is forbidden as a field name +func isForbiddenTypeField(name string) bool { switch name { case - "logger", - "keeper", - "query", - "genesis", - "types", - "tx": + "id", + "index", + "creator": return true } return isGoReservedWord(name) } -// isForbiddenTypeField returns true if the name is forbidden as a field name -func isForbiddenTypeField(name string) bool { +// isForbiddenComponentName returns true if the name is forbidden as a component name +func isForbiddenComponentName(name string) bool { switch name { case - "id", - "index", - "creator": + "logger", + "keeper", + "query", + "genesis", + "types", + "tx": return true } return isGoReservedWord(name) } + func isGoReservedWord(name string) bool { // Check keyword or literal if token.Lookup(name).IsKeyword() { From 862a1a3803794d70b0ab315afee405453575818f Mon Sep 17 00:00:00 2001 From: ltacker Date: Fri, 12 Mar 2021 14:59:59 +0100 Subject: [PATCH 3/4] Create component file --- starport/services/scaffolder/component.go | 87 +++++++++++++++++++++++ starport/services/scaffolder/type.go | 83 +-------------------- 2 files changed, 88 insertions(+), 82 deletions(-) create mode 100644 starport/services/scaffolder/component.go diff --git a/starport/services/scaffolder/component.go b/starport/services/scaffolder/component.go new file mode 100644 index 0000000000..fcb1007bf3 --- /dev/null +++ b/starport/services/scaffolder/component.go @@ -0,0 +1,87 @@ +package scaffolder + +import ( + "go/token" + "os" + "path/filepath" +) + +// isMsgServerDefined checks if the module uses the MsgServer convention for transactions +// this is checked by verifying the existence of the tx.proto file +func isMsgServerDefined(appPath, moduleName string) (bool, error) { + txProto, err := filepath.Abs(filepath.Join(appPath, "proto", moduleName, "tx.proto")) + if err != nil { + return false, err + } + + if _, err := os.Stat(txProto); os.IsNotExist(err) { + return false, nil + } + return true, err +} + +// isForbiddenComponentName returns true if the name is forbidden as a component name +func isForbiddenComponentName(name string) bool { + switch name { + case + "logger", + "keeper", + "query", + "genesis", + "types", + "tx": + return true + } + + return isGoReservedWord(name) +} + +func isGoReservedWord(name string) bool { + // Check keyword or literal + if token.Lookup(name).IsKeyword() { + return true + } + + // Check with builtin identifier + switch name { + case + "panic", + "recover", + "append", + "bool", + "byte", + "cap", + "close", + "complex", + "complex64", + "complex128", + "uint16", + "copy", + "false", + "float32", + "float64", + "imag", + "int", + "int8", + "int16", + "uint32", + "int32", + "int64", + "iota", + "len", + "make", + "new", + "nil", + "uint64", + "print", + "println", + "real", + "string", + "true", + "uint", + "uint8", + "uintptr": + return true + } + return false +} diff --git a/starport/services/scaffolder/type.go b/starport/services/scaffolder/type.go index e63ac723d2..2b2e562f49 100644 --- a/starport/services/scaffolder/type.go +++ b/starport/services/scaffolder/type.go @@ -208,20 +208,6 @@ func isTypeCreated(appPath, moduleName, typeName string) (isCreated bool, err er return } -// isMsgServerDefined checks if the module uses the MsgServer convention for transactions -// this is checked by verifying the existence of the tx.proto file -func isMsgServerDefined(appPath, moduleName string) (bool, error) { - txProto, err := filepath.Abs(filepath.Join(appPath, "proto", moduleName, "tx.proto")) - if err != nil { - return false, err - } - - if _, err := os.Stat(txProto); os.IsNotExist(err) { - return false, nil - } - return true, err -} - // isForbiddenTypeField returns true if the name is forbidden as a field name func isForbiddenTypeField(name string) bool { switch name { @@ -233,71 +219,4 @@ func isForbiddenTypeField(name string) bool { } return isGoReservedWord(name) -} - -// isForbiddenComponentName returns true if the name is forbidden as a component name -func isForbiddenComponentName(name string) bool { - switch name { - case - "logger", - "keeper", - "query", - "genesis", - "types", - "tx": - return true - } - - return isGoReservedWord(name) -} - - -func isGoReservedWord(name string) bool { - // Check keyword or literal - if token.Lookup(name).IsKeyword() { - return true - } - - // Check with builtin identifier - switch name { - case - "panic", - "recover", - "append", - "bool", - "byte", - "cap", - "close", - "complex", - "complex64", - "complex128", - "uint16", - "copy", - "false", - "float32", - "float64", - "imag", - "int", - "int8", - "int16", - "uint32", - "int32", - "int64", - "iota", - "len", - "make", - "new", - "nil", - "uint64", - "print", - "println", - "real", - "string", - "true", - "uint", - "uint8", - "uintptr": - return true - } - return false -} +} \ No newline at end of file From 0fa410fb9b7429d9c5320d48e1a20942e9b59be4 Mon Sep 17 00:00:00 2001 From: ltacker Date: Fri, 12 Mar 2021 15:01:00 +0100 Subject: [PATCH 4/4] Lint --- starport/services/scaffolder/type.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/starport/services/scaffolder/type.go b/starport/services/scaffolder/type.go index 2b2e562f49..a3feb5aa8e 100644 --- a/starport/services/scaffolder/type.go +++ b/starport/services/scaffolder/type.go @@ -219,4 +219,4 @@ func isForbiddenTypeField(name string) bool { } return isGoReservedWord(name) -} \ No newline at end of file +}