65 lines
1.4 KiB
Go
65 lines
1.4 KiB
Go
package generators
|
|
|
|
import (
|
|
"go/build"
|
|
"os"
|
|
"path/filepath"
|
|
"strconv"
|
|
"strings"
|
|
|
|
"github.com/onsi/ginkgo/v2/ginkgo/command"
|
|
)
|
|
|
|
type GeneratorsConfig struct {
|
|
Agouti, NoDot, Internal bool
|
|
CustomTemplate string
|
|
CustomTemplateData string
|
|
}
|
|
|
|
func getPackageAndFormattedName() (string, string, string) {
|
|
path, err := os.Getwd()
|
|
command.AbortIfError("Could not get current working directory:", err)
|
|
|
|
dirName := strings.ReplaceAll(filepath.Base(path), "-", "_")
|
|
dirName = strings.ReplaceAll(dirName, " ", "_")
|
|
|
|
pkg, err := build.ImportDir(path, 0)
|
|
packageName := pkg.Name
|
|
if err != nil {
|
|
packageName = ensureLegalPackageName(dirName)
|
|
}
|
|
|
|
formattedName := prettifyName(filepath.Base(path))
|
|
return packageName, dirName, formattedName
|
|
}
|
|
|
|
func ensureLegalPackageName(name string) string {
|
|
if name == "_" {
|
|
return "underscore"
|
|
}
|
|
if len(name) == 0 {
|
|
return "empty"
|
|
}
|
|
n, isDigitErr := strconv.Atoi(string(name[0]))
|
|
if isDigitErr == nil {
|
|
return []string{"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}[n] + name[1:]
|
|
}
|
|
return name
|
|
}
|
|
|
|
func prettifyName(name string) string {
|
|
name = strings.ReplaceAll(name, "-", " ")
|
|
name = strings.ReplaceAll(name, "_", " ")
|
|
name = strings.Title(name)
|
|
name = strings.ReplaceAll(name, " ", "")
|
|
return name
|
|
}
|
|
|
|
func determinePackageName(name string, internal bool) string {
|
|
if internal {
|
|
return name
|
|
}
|
|
|
|
return name + "_test"
|
|
}
|