93 lines
2.3 KiB
Go
93 lines
2.3 KiB
Go
package gitpb
|
|
|
|
// does processing on the go.mod and go.sum files
|
|
|
|
import (
|
|
"go.wit.com/log"
|
|
)
|
|
|
|
// count all objects only in branch1
|
|
func (repo *Repo) countDiffObjects(branch1, branch2 string) int {
|
|
cmd := repo.ConstructGitDiffLog(branch1, branch2)
|
|
r, err := repo.RunVerboseOnError(cmd)
|
|
if err != nil {
|
|
return -1
|
|
}
|
|
// log.Info("countDiffObjects()", cmd, len(r.Stdout), strings.Join(r.Stdout, " "))
|
|
return len(r.Stdout)
|
|
}
|
|
|
|
func (repo *Repo) setRepoState() {
|
|
if repo == nil {
|
|
return
|
|
}
|
|
if repo.IsDirty() {
|
|
repo.State = "dirty"
|
|
return
|
|
}
|
|
if repo.GetUserVersion() == "uerr" {
|
|
// user has not made user branches
|
|
} else {
|
|
if repo.GetUserVersion() != repo.GetDevelVersion() {
|
|
repo.State = "merge to devel"
|
|
return
|
|
}
|
|
}
|
|
if repo.GetDevelVersion() != repo.GetMasterVersion() {
|
|
b1 := repo.countDiffObjects(repo.GetMasterBranchName(), repo.GetDevelBranchName())
|
|
if b1 == 0 {
|
|
repo.State = "merge to main"
|
|
// log.Info("master vs devel count is normal b1 == 0", b1)
|
|
} else {
|
|
repo.State = "DEVEL < MASTER"
|
|
// log.Info("master vs devel count b1 != 0", b1)
|
|
log.Info("SERIOUS ERROR. DEVEL BRANCH NEEDS MERGE FROM MASTER b1 ==", b1, repo.GetGoPath())
|
|
}
|
|
return
|
|
}
|
|
// if IsGoTagVersionGreater(oldtag string, newtag string) bool {
|
|
if !IsGoTagVersionGreater(repo.GetLastTag(), repo.GetMasterVersion()) {
|
|
repo.State = "last tag greater error"
|
|
return
|
|
}
|
|
if repo.GetLastTag() != repo.GetMasterVersion() {
|
|
repo.State = "ready to release"
|
|
return
|
|
}
|
|
|
|
if repo.CheckBranches() {
|
|
repo.State = "PERFECT"
|
|
return
|
|
}
|
|
log.Info("Branches are not Perfect", repo.GetFullPath())
|
|
log.Info("Branches are not Perfect", repo.GetFullPath())
|
|
log.Info("Branches are not Perfect", repo.GetFullPath())
|
|
repo.State = "unknown branches"
|
|
}
|
|
|
|
// returns true if old="v0.2.4" and new="v0.3.3"
|
|
// returns true if equal
|
|
// todo: make all of this smarter someday
|
|
func IsGoTagVersionGreater(oldtag string, newtag string) bool {
|
|
olda, oldb, oldc := splitInts(oldtag)
|
|
newa, newb, newc := splitInts(newtag)
|
|
|
|
if newa < olda {
|
|
return false
|
|
}
|
|
if newb < oldb {
|
|
return false
|
|
}
|
|
if newc < oldc {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
// returns true for "v0.2.4" and false for "v0.2.43-asdfj"
|
|
// actually returns false for anything not perfectly versioned
|
|
func IsGoTagPublished(oldtag string, newtag string) bool {
|
|
// todo
|
|
return true
|
|
}
|