go-KodeStarter/utils/utils.go

189 lines
4.5 KiB
Go
Raw Permalink Normal View History

2023-06-12 22:40:22 -04:00
package utils
import (
"fmt"
"os"
"path/filepath"
2023-06-17 14:17:02 -04:00
"strings"
2023-06-21 11:50:12 -04:00
"github.com/gookit/color"
2023-06-17 14:17:02 -04:00
"github.com/spf13/cobra"
2023-06-12 22:40:22 -04:00
)
2023-06-17 14:17:02 -04:00
func PrintHeader() {
2023-06-21 11:50:12 -04:00
color.Yellow.Println(CreateLine(15))
color.Green.Println(" __ __ __ ______ __ ")
color.Green.Println(" / //_/ ____ ____/ / ___ / ____/ _____ ___ ____ _ / /_ ____ _____")
color.Green.Println(" / ,< / __ \\ / __ / / _ \\ ______ / / / ___/ / _ \\ / __ `/ / __/ / __ \\ / ___/")
color.Green.Println(" / /| | / /_/ // /_/ / / __//_____// /___ / / / __// /_/ / / /_ / /_/ / / / ")
color.Green.Println("/_/ |_| \\____/ \\__,_/ \\___/ \\____/ /_/ \\___/ \\__,_/ \\__/ \\____/ /_/ ")
color.Green.Println("")
color.Yellow.Println(CreateLine(15))
2023-06-17 14:17:02 -04:00
}
func CreateLine(weight int) string {
var line string
for i := 0; i < weight; i++ {
line += "--- "
}
return line
}
func PrintHelpFormated(version string, author string, buildDate string, cmd *cobra.Command) {
fmt.Println("")
cmd.Help()
fmt.Println("")
2023-06-25 12:54:50 -04:00
PrintVersion(version, author, buildDate)
}
func PrintVersion(version string, author string, buildDate string) {
2023-06-21 11:50:12 -04:00
color.Yellow.Println(CreateLine(15))
color.Green.Println("| Version: " + version + " || Author: " + author + " || Build date: " + buildDate + " |")
color.Yellow.Println(CreateLine(15))
2023-06-17 14:17:02 -04:00
fmt.Println("")
}
2023-06-12 22:40:22 -04:00
func BytesToStrings(bytes []byte) []string {
var strings []string
for _, b := range bytes {
strings = append(strings, string(b))
}
return strings
}
2023-06-30 15:25:39 -04:00
func GetEnvVarValueFromOsEnv(key string) string {
value := os.Getenv(key)
return value
}
2023-06-30 10:08:50 -04:00
func GetGitTokenFromOsEnv() string {
2023-11-29 12:57:49 -05:00
token := os.Getenv("GITHUB_TOKEN")
return token
}
func GetGitTeaTokenFromOsEnv() string {
token := os.Getenv("GITEA_TOKEN")
2023-06-12 22:40:22 -04:00
return token
}
func IsValidToken(token string) bool {
if len(token) != 40 {
return false
}
// Check if token contains only hexadecimal characters (0-9 and a-f)
for _, c := range token {
if !(('0' <= c && c <= '9') || ('a' <= c && c <= 'f')) {
return false
}
}
return true
}
func IsValidOrg(org string) bool {
// Check if organization is valid
// ...
return true
}
func IsValidProjectName(name string) bool {
// Check if project name is valid
// ...
return true
}
// function that print error message and exit program with specific error code
func ExitWithError(code int, msg string) {
// Print error message
fmt.Println(msg)
// Exit program with specific error code
os.Exit(code)
}
func CreateDir(dirName string) {
path, err := os.Getwd()
if err != nil {
panic(err)
}
fmt.Println("Current working directory: ", path)
2023-06-17 14:17:02 -04:00
fmt.Println("Directory to create: ", dirName)
2023-06-12 22:40:22 -04:00
dirPath := filepath.Join(path, dirName)
err = os.Mkdir(dirPath, 0755)
if err != nil {
panic(err)
}
fmt.Printf("Created directory '%s' \n", dirName)
}
2023-06-17 14:17:02 -04:00
func PadString(s string, n int) string {
if len(s) >= n {
return s
}
return s + strings.Repeat(" ", n-len(s))
}
2023-06-25 12:54:50 -04:00
2023-06-30 10:08:50 -04:00
func PadDotString(s string, n int) string {
if len(s) >= n {
return s
}
return s + strings.Repeat(".", n-len(s))
}
// function to print 3 elements on a line
func PrintTreeElement(e1 int, e2 string, e3 string) {
fmt.Printf("[ %02d ] %s [ %s ]\n", e1, ColorizeString(PadDotString(e2, 35), color.Green), ColorizeString(e3, color.LightWhite))
}
// function format 3 elements on a line
func FormatTreeElement(e1 int, e2 string, e3 string) string {
return fmt.Sprintf("[ %02d ] %s [ %s ]\n", e1, ColorizeString(PadDotString(e2, 35), color.Green), ColorizeString(e3, color.LightWhite))
}
// function that return a string with a specific color
func ColorizeString(s string, color color.Color) string {
return color.Sprint(s)
}
2023-06-25 12:54:50 -04:00
// function that color in red sub-trings in a string
func ColorizeSubStrRed(s string, sub string) string {
return strings.Replace(s, sub, color.Red.Sprint(sub), -1)
}
2023-06-30 10:08:50 -04:00
// function that double backslash in a string
func DoubleBackSlash(s string) string {
return strings.Replace(s, "\\", "\\\\", -1)
}
2023-06-30 14:17:21 -04:00
// function that return the program current directory
func GetProgramDir() string {
// get the absolut path of the executable
ex, err := os.Executable()
if err != nil {
panic(err)
}
// get the directory of the executable
exPath := filepath.Dir(ex)
return exPath
}
2023-11-29 12:57:49 -05:00
// function check if OS = Windows
func IsWindows() bool {
return os.PathSeparator == '\\' && os.PathListSeparator == ';'
}
// function check if OS = Linux
func IsLinux() bool {
return os.PathSeparator == '/' && os.PathListSeparator == ':'
}