github.com/profzone/eden-framework@v1.0.10/internal/generator/utils.go (about) 1 package generator 2 3 import ( 4 "fmt" 5 "github.com/fatih/color" 6 "log" 7 "os" 8 "path" 9 "path/filepath" 10 "strings" 11 ) 12 13 func IsGoFile(filename string) bool { 14 return filepath.Ext(filename) == ".go" 15 } 16 17 func IsGoTextFile(filename string) bool { 18 return strings.HasSuffix(filepath.Base(filename), "_test.go") 19 } 20 21 func WriteFile(filename string, content string) { 22 pwd, _ := os.Getwd() 23 if filepath.IsAbs(filename) { 24 filename, _ = filepath.Rel(pwd, filename) 25 } 26 n3 := mustWriteFile(filename, content) 27 log.Printf(color.GreenString("Generated file to %s (%d KiB)", color.BlueString(path.Join(pwd, filename)), n3/1024)) 28 } 29 30 func PathExist(p string) bool { 31 _, err := os.Stat(p) 32 if err != nil { 33 if os.IsNotExist(err) { 34 return false 35 } 36 } 37 38 return true 39 } 40 41 func GetServiceName(projectName string) string { 42 projectName = strings.TrimPrefix(projectName, "srv-") 43 projectName = strings.TrimPrefix(projectName, "service-") 44 return projectName 45 } 46 47 func GeneratedSuffix(filename string) string { 48 dir := filepath.Dir(filename) 49 base := filepath.Base(filename) 50 ext := filepath.Ext(filename) 51 52 if IsGoFile(filename) && IsGoTextFile(filename) { 53 base = strings.Replace(base, "_test.go", "__generated_test.go", -1) 54 } else { 55 base = strings.Replace(base, ext, fmt.Sprintf("__generated%s", ext), -1) 56 57 } 58 return fmt.Sprintf("%s/%s", dir, base) 59 } 60 61 func mustWriteFile(filename string, content string) int { 62 dir := filepath.Dir(filename) 63 64 if dir != "" { 65 os.MkdirAll(dir, os.ModePerm) 66 } 67 68 f, err := os.Create(filename) 69 if err != nil { 70 panic(err) 71 } 72 defer f.Close() 73 74 n3, err := f.WriteString(content) 75 if err != nil { 76 panic(err) 77 } 78 f.Sync() 79 80 return n3 81 } 82 83 func int2Ptr(i int32) *int32 { return &i }