This is an automated email from the ASF dual-hosted git repository. abeizn pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git
commit 94c06be4801a738de59d67051f33d69a968d31fe Author: abeizn <[email protected]> AuthorDate: Wed Jul 20 17:26:32 2022 +0800 fix: purpose camel case and snake case --- generator/cmd/create_migration.go | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/generator/cmd/create_migration.go b/generator/cmd/create_migration.go index f747b9bb..c900663d 100644 --- a/generator/cmd/create_migration.go +++ b/generator/cmd/create_migration.go @@ -24,6 +24,7 @@ import ( "os" "path/filepath" "regexp" + "strings" "time" "github.com/apache/incubator-devlake/generator/util" @@ -99,9 +100,9 @@ If framework passed, generator will create a new migration in models/migrationsc // read template templates := map[string]string{} if withConfig == `Yes` { - templates[values[`Date`]+`_`+values[`Purpose`]+`.go`] = util.ReadTemplate("generator/template/migrationscripts/migration_with_config.go-template") + templates[values[`Date`]+`_`+ToSnakeCase(values[`Purpose`])+`.go`] = util.ReadTemplate("generator/template/migrationscripts/migration_with_config.go-template") } else { - templates[values[`Date`]+`_`+values[`Purpose`]+`.go`] = util.ReadTemplate("generator/template/migrationscripts/migration.go-template") + templates[values[`Date`]+`_`+ToSnakeCase(values[`Purpose`])+`.go`] = util.ReadTemplate("generator/template/migrationscripts/migration.go-template") } values = util.DetectExistVars(templates, values) println(`vars in template:`, fmt.Sprint(values)) @@ -123,10 +124,19 @@ func purposeNotExistValidate(input string) error { if input == `` { return errors.New("purpose require") } - snakeNameReg := regexp.MustCompile(`^[A-Za-z][A-Za-z0-9_]*$`) + snakeNameReg := regexp.MustCompile(`^[A-Za-z][A-Za-z0-9]*$`) if !snakeNameReg.MatchString(input) { - return errors.New("purpose invalid (start with a-z and consist with a-z0-9_)") + return errors.New("purpose invalid (start with a-z and consist with a-z0-9)") } return nil } + +var matchFirstCap = regexp.MustCompile("(.)([A-Z][a-z]+)") +var matchAllCap = regexp.MustCompile("([a-z0-9])([A-Z])") + +func ToSnakeCase(str string) string { + snake := matchFirstCap.ReplaceAllString(str, "${1}_${2}") + snake = matchAllCap.ReplaceAllString(snake, "${1}_${2}") + return strings.ToLower(snake) +}
