mirror of
https://github.com/Slug-Boi/cocommit.git
synced 2026-05-13 20:55:47 +00:00
Merge branch 'main' into feat_config
This commit is contained in:
+70
-20
@@ -31,30 +31,30 @@ func Commit(message string, authors []string) string {
|
||||
return sb.String()
|
||||
}
|
||||
|
||||
// Loop that adds users
|
||||
for _, committer := range authors {
|
||||
if _, ok := Users[committer]; ok {
|
||||
sb_author(committer, &sb)
|
||||
} else if match := reg.MatchString(committer); match {
|
||||
str := strings.Split(committer, ":")
|
||||
// Loop that adds users
|
||||
for _, committer := range authors {
|
||||
if _, ok := Users[committer]; ok {
|
||||
sb_author(committer, &sb)
|
||||
} 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('>')
|
||||
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")
|
||||
} 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")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Add excluded users after processing all authors
|
||||
if len(excludeMode) > 0 {
|
||||
add_x_users(excludeMode, &sb)
|
||||
}
|
||||
// Add excluded users after processing all authors
|
||||
if len(excludeMode) > 0 {
|
||||
add_x_users(excludeMode, &sb)
|
||||
}
|
||||
return sb.String()
|
||||
}
|
||||
|
||||
@@ -128,3 +128,53 @@ func group_selection(group []User, excludeMode []string) []string {
|
||||
|
||||
return excludeMode
|
||||
}
|
||||
|
||||
func GitCommitAppender(authors string, hash string, flags []string, t,p bool) (error, string) {
|
||||
// Get old commit message
|
||||
var cmd *exec.Cmd
|
||||
|
||||
//TODO: Make the hash ammend work with rebase but its more complicated than orignally thought.
|
||||
|
||||
// git log --format=%B -n1
|
||||
if hash == "" {
|
||||
cmd = exec.Command("git", "log", "--format=%B", "-n1")
|
||||
} else {
|
||||
cmd = exec.Command("git", "log", "--format=%B", "-n1", hash)
|
||||
}
|
||||
|
||||
out, err := cmd.Output()
|
||||
if err != nil {
|
||||
return fmt.Errorf("error: %s", err), ""
|
||||
}
|
||||
|
||||
// Convert the output to a string
|
||||
old_commit := string(out)
|
||||
|
||||
// commit shell command
|
||||
// specify git command1
|
||||
input := []string{"commit"}
|
||||
input = append(input, flags...)
|
||||
old_commit = strings.TrimSpace(old_commit)
|
||||
input = append(input, "--amend", "-m", old_commit+"\n"+authors)
|
||||
|
||||
if p {
|
||||
println(old_commit + "\n" + authors)
|
||||
if t {
|
||||
return nil, old_commit + "\n" + authors
|
||||
}
|
||||
}
|
||||
// append the message to the flags
|
||||
// concat the git command and the flags + message
|
||||
cmd = exec.Command("git", input...)
|
||||
|
||||
// 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 {
|
||||
return fmt.Errorf("error: %s : %s", err, string(cmd_output)), ""
|
||||
} else {
|
||||
println(string(cmd_output))
|
||||
}
|
||||
return nil, old_commit + "\n" + authors
|
||||
}
|
||||
|
||||
@@ -636,6 +636,88 @@ func Test_GitPush(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func Test_CommitAppender(t *testing.T) {
|
||||
setup()
|
||||
defer teardown()
|
||||
utils.Define_users("author_file_test")
|
||||
|
||||
// Test CommitAppender with a single author
|
||||
authors := []string{"te"}
|
||||
cmd := exec.Command("git", "log", "--format=%B", "-n1")
|
||||
out, err := cmd.Output()
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to get git log: %v", err)
|
||||
}
|
||||
|
||||
message := strings.TrimSpace(string(out))
|
||||
|
||||
commit := utils.Commit("", authors)
|
||||
err, appendedMessage := utils.GitCommitAppender(commit, "", nil, true, true)
|
||||
if err != nil {
|
||||
t.Errorf("GitCommitAppender() returned error: %v", err)
|
||||
}
|
||||
|
||||
expectedMessage := message+"\n\n\nCo-authored-by: TestUser <test@test.test>"
|
||||
if appendedMessage != expectedMessage {
|
||||
t.Errorf("CommitAppender() = %v;\nwant:\n%v", appendedMessage, expectedMessage)
|
||||
}
|
||||
|
||||
// check inverted commit
|
||||
authors = []string{"^te"}
|
||||
commit = utils.Commit("", authors)
|
||||
err, appendedMessage = utils.GitCommitAppender(commit, "", nil, true, true)
|
||||
if err != nil {
|
||||
t.Errorf("GitCommitAppender() returned error: %v", err)
|
||||
}
|
||||
expectedMessage = message+"\n\n\nCo-authored-by: UserName2 <testing@user.io>"
|
||||
|
||||
if appendedMessage != expectedMessage {
|
||||
t.Errorf("CommitAppender() = %v;\nwant:\n%v", appendedMessage, expectedMessage)
|
||||
}
|
||||
|
||||
// Test CommitAppender with multiple authors
|
||||
authors = []string{"te", "testtest"}
|
||||
commit = utils.Commit("", authors)
|
||||
err, appendedMessage = utils.GitCommitAppender(commit, "", nil, true, true)
|
||||
if err != nil {
|
||||
t.Errorf("GitCommitAppender() returned error: %v", err)
|
||||
}
|
||||
expectedMessage = message+"\n\n\nCo-authored-by: TestUser <test@test.test>\nCo-authored-by: UserName2 <testing@user.io>"
|
||||
|
||||
if appendedMessage != expectedMessage {
|
||||
t.Errorf("CommitAppender() = %v;\nwant:\n%v", appendedMessage, expectedMessage)
|
||||
}
|
||||
// Test CommitAppender with all authors
|
||||
authors = []string{"all"}
|
||||
commit = utils.Commit("", authors)
|
||||
err, appendedMessage = utils.GitCommitAppender(commit, "", nil, true, true)
|
||||
if err != nil {
|
||||
t.Errorf("GitCommitAppender() returned error: %v", err)
|
||||
}
|
||||
expectedMessage = message+"\n\n\nCo-authored-by: TestUser <test@test.test>\nCo-authored-by: UserName2 <testing@user.io>"
|
||||
expectedMessage2 := message+"\n\n\nCo-authored-by: UserName2 <testing@user.io>\nCo-authored-by: TestUser <test@test.test>"
|
||||
|
||||
if appendedMessage != expectedMessage && appendedMessage != expectedMessage2 {
|
||||
t.Errorf("CommitAppender() = %v;\nwant:\n%v", appendedMessage, expectedMessage)
|
||||
}
|
||||
|
||||
// Test CommitAppender with group authors
|
||||
authors = []string{"gr1"}
|
||||
commit = utils.Commit("", authors)
|
||||
err, appendedMessage = utils.GitCommitAppender(commit, "", nil, true, true)
|
||||
if err != nil {
|
||||
t.Errorf("GitCommitAppender() returned error: %v", err)
|
||||
}
|
||||
expectedMessage = message+"\n\n\nCo-authored-by: UserName2 <testing@user.io>"
|
||||
|
||||
if appendedMessage != expectedMessage {
|
||||
t.Errorf("CommitAppender() = %v;\nwant:\n%v", appendedMessage, expectedMessage)
|
||||
}
|
||||
|
||||
message = ""
|
||||
|
||||
}
|
||||
|
||||
// Commit tests END
|
||||
|
||||
// Github tests BEGIN
|
||||
|
||||
Reference in New Issue
Block a user