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 }