github.com/adharshmk96/stk@v1.2.3/pkg/project/name.go (about)

     1  package project
     2  
     3  import (
     4  	"log"
     5  	"strings"
     6  
     7  	"github.com/adharshmk96/stk/pkg/commands"
     8  	"github.com/iancoleman/strcase"
     9  	"github.com/spf13/viper"
    10  )
    11  
    12  // getAppNameFromPkgName transforms package name into an app name in lowerCamelCase.
    13  func GetAppNameFromPkgName(s string) string {
    14  	name := s[strings.LastIndex(s, "/")+1:]
    15  	name = strings.ReplaceAll(name, "-", "_")
    16  	return strcase.ToLowerCamel(name)
    17  }
    18  
    19  // GetPackageName determines the package name by checking various sources in order of priority.
    20  func GetPackageName(args []string) string {
    21  	if repoName, err := GitRepoName(); err == nil {
    22  		log.Println("using repository name as package name.")
    23  		return repoName
    24  	}
    25  
    26  	goCmd := commands.NewGoCmd()
    27  	packageName, err := goCmd.ModPackageName()
    28  	if err == nil {
    29  		log.Println("using go module name as package name.")
    30  		return packageName
    31  	}
    32  
    33  	if argName := getFirstArg(args); argName != "" {
    34  		log.Println("using argument as package name.")
    35  		return argName
    36  	}
    37  
    38  	if configName := viper.GetString("project.package"); configName != "" {
    39  		log.Println("using config project.package as package name.")
    40  		return configName
    41  	}
    42  
    43  	log.Println("using random name as package name.")
    44  	return RandomName()
    45  }