gitpb/reload.go

106 lines
2.5 KiB
Go

package gitpb
import (
"strings"
"go.wit.com/log"
)
func (repo *Repo) Reload() error {
repo.Tags = new(GitTags)
repo.reloadGitTags()
repo.GoDeps = new(GoDeps)
repo.ParseGoSum()
if repo.GoInfo != nil {
repo.ReloadGo()
}
repo.setLastTag()
repo.setCurrentBranchName()
// everything has been checked, now save the mtime's
repo.RepoChanged()
return nil
}
func (repo *Repo) ReloadGo() error {
repo.GoPlugin = false
repo.GoProtobuf = false
repo.GoLibrary = false
repo.GoBinary = false
switch repo.goListRepoType() {
case "plugin":
repo.GoPlugin = true
case "protobuf":
repo.GoProtobuf = true
case "library":
repo.GoLibrary = true
case "binary":
repo.GoBinary = true
}
return nil
}
func (repo *Repo) SetDevelBranchName(bname string) {
repo.DevelBranchName = bname
}
func (repo *Repo) SetUserBranchName(bname string) {
repo.UserBranchName = bname
}
// updates LastTag // todo, get this from the protobuf
func (repo *Repo) setLastTag() {
cmd := []string{"git", "rev-list", "--tags", "--max-count=1"}
result := repo.RunQuiet(cmd)
// log.Info("getLastTagVersion()", result.Stdout)
if len(result.Stdout) != 1 {
log.Log(GITPBWARN, "git LastTag() error:", result.Stdout)
repo.LastTag = ""
return
}
hash := result.Stdout[0]
cmd = []string{"git", "describe", "--tags", "--always", hash}
result = repo.RunQuiet(cmd)
if len(result.Stdout) != 1 {
log.Log(GITPBWARN, "git LastTag() error:", result.Stdout)
repo.LastTag = ""
return
}
repo.LastTag = result.Stdout[0]
}
func (repo *Repo) setCurrentBranchName() {
repo.CurrentBranchName = ""
r := repo.RunQuiet([]string{"git", "branch", "--show-current"})
output := strings.Join(r.Stdout, "\n")
if r.Error != nil {
log.Log(GITPBWARN, "GetCurrentBranchName() not in a git repo?", r.Error, repo.GoPath)
log.Log(GITPBWARN, "GetCurrentBranchName() output might have worked anyway:", output)
}
repo.CurrentBranchName = strings.TrimSpace(output)
}
// always spawns 'git' and always should spawn 'git'
func (repo *Repo) setCurrentBranchVersion() {
repo.CurrentBranchVersion = ""
if repo == nil {
log.Info("repo.GetCurrentBranchVersion() repo == nil")
return
}
r := repo.RunQuiet([]string{"git", "describe", "--tags", "--always"})
output := strings.Join(r.Stdout, "\n")
if r.Error != nil {
log.Log(GITPBWARN, "GetCurrentBranchVersion() not in a git repo?", r.Error, repo.GoPath)
log.Log(GITPBWARN, "GetCurrentBranchVersion() output might have worked anyway:", output)
}
repo.CurrentBranchVersion = strings.TrimSpace(output)
}