add LoadEnvFile and Slugify functions to utils package

This commit is contained in:
Pedro Pérez 2024-11-10 00:40:45 +01:00
parent 73557af314
commit b2be864c5d

View File

@ -1,9 +1,16 @@
package utils package utils
import ( import (
"bufio"
"fmt" "fmt"
"golang.org/x/text/transform"
"golang.org/x/text/unicode/norm"
"log/slog" "log/slog"
"os"
"regexp"
"strings"
"time" "time"
"unicode"
) )
func CorrectTimezone(timeStamp time.Time) time.Time { func CorrectTimezone(timeStamp time.Time) time.Time {
@ -26,3 +33,55 @@ func GetBoolFromString(s string) bool {
} }
return false return false
} }
func LoadEnvFile(filename string) error {
file, err := os.Open(filename)
if err != nil {
return err
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text()
if len(line) == 0 || strings.HasPrefix(line, "#") {
continue
}
parts := strings.SplitN(line, "=", 2)
if len(parts) != 2 {
continue
}
key := strings.TrimSpace(parts[0])
value := strings.TrimSpace(parts[1])
os.Setenv(key, value)
}
return scanner.Err()
}
func Slugify(s string) string {
s = strings.ToLower(s)
t := transform.Chain(norm.NFD, transform.RemoveFunc(isMn), norm.NFC)
s, _, _ = transform.String(t, s)
s = strings.ReplaceAll(s, " ", "-")
var b strings.Builder
for _, r := range s {
if (r >= 'a' && r <= 'z') || (r >= '0' && r <= '9') || r == '-' {
b.WriteRune(r)
}
}
s = b.String()
re := regexp.MustCompile(`-+`)
s = re.ReplaceAllString(s, "-")
s = strings.Trim(s, "-")
return s
}
func isMn(r rune) bool {
return unicode.Is(unicode.Mn, r)
}