chore: rename src folder

This commit is contained in:
Slug-Boi
2024-11-01 08:32:10 +01:00
parent a2c16c043c
commit 73ee788e8b
22 changed files with 1 additions and 439 deletions
+110
View File
@@ -0,0 +1,110 @@
package utils
import (
"fmt"
"os/exec"
"regexp"
"slices"
"strings"
)
// This util file is used to create a commit message using a string builder
// string builder for the commit message
var sb strings.Builder
// list of excluded authors based on the author file
var excludeMode = []string{}
// Regex pattern used to create temp users to add to the commit message
var reg, _ = regexp.Compile("([^:]+):([^:]+)")
func Commit(message string, authors []string) string {
// write the commit message to the string builder
sb.WriteString(message + "\n")
fst := authors[0]
if fst == "all" || fst == "All" {
add_x_users(excludeMode)
goto skip_loop
} else if Groups[fst] != nil {
excludeMode = group_selection(Groups[fst], excludeMode)
add_x_users(excludeMode)
goto skip_loop
}
// Loop that adds users
for _, committer := range authors {
if _, ok := Users[committer]; ok {
sb_author(committer)
} else if match := reg.MatchString(committer); match {
str := strings.Split(committer, ":")
sb.WriteString("\nCo-authored-by: ")
sb.WriteString(str[0])
sb.WriteString(" <")
sb.WriteString(str[1])
sb.WriteRune('>')
} else if committer[0] == '^' { // Negations
excludeMode = append(excludeMode, Users[committer[1:]].Username)
} else {
println(committer, " was unknown. User either not defined or name typed wrong")
}
}
if len(excludeMode) > 0 {
add_x_users(excludeMode)
}
// Skip label for edge cases at top of function
skip_loop:
return sb.String()
}
func GitWrapper(commit string) {
// commit shell command
cmd := exec.Command("git", "commit", "-m", commit)
// https://stackoverflow.com/questions/18159704/how-to-debug-exit-status-1-error-when-running-exec-command-in-golang
cmd_output, err := cmd.CombinedOutput()
if err != nil {
println(fmt.Sprint(err) + " : " + string(cmd_output))
} else {
println(string(cmd_output))
}
}
// helper function to add an author to the commit message
func sb_author(committer string) {
sb.WriteString("\nCo-authored-by: ")
sb.WriteString(Users[committer].Username)
sb.WriteString(" <")
sb.WriteString(Users[committer].Email)
sb.WriteRune('>')
}
// helper function to add x amount of users to the commit message
func add_x_users(excludeMode []string) {
if len(DefExclude) > 0 {
excludeMode = append(excludeMode, DefExclude...)
}
for key, user := range Users {
if !slices.Contains(excludeMode, user.Username) {
sb_author(key)
excludeMode = append(excludeMode, user.Username)
}
}
}
// helper function to select groups of users to exclude in the commit message
func group_selection(group []User, excludeMode []string) []string {
for _, user := range Users {
if !(slices.Contains(group, user)) {
excludeMode = append(excludeMode, user.Username)
}
}
return excludeMode
}