mirror of
https://github.com/Slug-Boi/cocommit.git
synced 2026-05-13 12:45:47 +00:00
added the exclude feature so that you much more easily can write commits
This commit is contained in:
+33
-12
@@ -6,6 +6,7 @@ import (
|
||||
"os"
|
||||
"os/exec"
|
||||
"regexp"
|
||||
"slices"
|
||||
"strings"
|
||||
)
|
||||
|
||||
@@ -14,8 +15,10 @@ type user struct {
|
||||
email string
|
||||
}
|
||||
|
||||
var users = make(map[string]user)
|
||||
var sb strings.Builder
|
||||
|
||||
func main() {
|
||||
users := make(map[string]user)
|
||||
|
||||
// Reads a shell env variable :: author_file
|
||||
authors := os.Getenv("author_file")
|
||||
@@ -48,21 +51,17 @@ func main() {
|
||||
|
||||
NoInput(args, users)
|
||||
|
||||
excludeMode := []string{}
|
||||
|
||||
// builds the commit message with the selected authors
|
||||
var sb strings.Builder
|
||||
sb.WriteString(string(args[0]) + "\n")
|
||||
reg, _ := regexp.Compile("([^:]+):([^:]+)")
|
||||
|
||||
for _, commiter := range args[1:] {
|
||||
if _, ok := users[commiter]; ok {
|
||||
sb.WriteString("\nCo-authored-by: ")
|
||||
sb.WriteString(users[commiter].username)
|
||||
sb.WriteString(" <")
|
||||
sb.WriteString(users[commiter].email)
|
||||
sb.WriteRune('>')
|
||||
} else if match := reg.MatchString(commiter); match {
|
||||
str := strings.Split(commiter, ":")
|
||||
for _, committer := range args[1:] {
|
||||
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])
|
||||
@@ -70,13 +69,27 @@ func main() {
|
||||
sb.WriteString(str[1])
|
||||
sb.WriteRune('>')
|
||||
|
||||
} else if committer[0] == '^' {
|
||||
excludeMode = append(excludeMode, users[committer[1:]].username)
|
||||
|
||||
} else {
|
||||
println(commiter, " was unknown. User either not defined or name typed wrong")
|
||||
println(committer, " was unknown. User either not defined or name typed wrong")
|
||||
}
|
||||
}
|
||||
|
||||
if len(excludeMode) > 0 {
|
||||
for key, user := range users {
|
||||
if !slices.Contains(excludeMode, user.username) {
|
||||
sb_author(key)
|
||||
excludeMode = append(excludeMode, user.username)
|
||||
}
|
||||
}
|
||||
}
|
||||
// commit msg built
|
||||
commit := sb.String()
|
||||
|
||||
print(commit)
|
||||
|
||||
// commit shell command
|
||||
cmd := exec.Command("git", "commit", "-m", commit)
|
||||
|
||||
@@ -92,6 +105,14 @@ func main() {
|
||||
|
||||
}
|
||||
|
||||
func sb_author(committer string) {
|
||||
sb.WriteString("\nCo-authored-by: ")
|
||||
sb.WriteString(users[committer].username)
|
||||
sb.WriteString(" <")
|
||||
sb.WriteString(users[committer].email)
|
||||
sb.WriteRune('>')
|
||||
}
|
||||
|
||||
// TODO: move half this into another function and call before building users to improve performance
|
||||
func NoInput(args []string, users map[string]user) {
|
||||
if len(args) < 2 {
|
||||
|
||||
Reference in New Issue
Block a user