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 == ':'
|
|
|
|
}
|