work on generic Clone()

This commit is contained in:
Jeff Carr 2025-07-07 18:52:02 -05:00
parent dea10e2150
commit 34a10367c5
3 changed files with 57 additions and 2 deletions

View File

@ -214,3 +214,38 @@ func findGoImport(url string) (string, error) {
return newurl, nil
}
// GetNamesapce removes http://, https://, and .git suffix from the given URL if present.
func GetNamespace(url string) string {
// Trim protocol prefix
if strings.HasPrefix(url, "http://") {
url = strings.TrimPrefix(url, "http://")
} else if strings.HasPrefix(url, "https://") {
url = strings.TrimPrefix(url, "https://")
}
// Trim trailing .git
url = strings.TrimSuffix(url, ".git")
return url
}
func (f *Forge) Clone(url string) (*gitpb.Repo, error) {
ns := GetNamespace(url)
if ns == url {
return nil, errors.New("todo: forgepb.Clone() fix url parsing")
}
//
// returns repo if namespace already exists
if repo := f.Repos.FindByNamespace(ns); repo != nil {
log.Info("FindByNamespace() worked = ", ns)
return repo, nil
}
if repo, _ := f.urlClone(ns, url); repo != nil {
return repo, nil
}
return nil, errors.New("todo: forgepb.Clone() url failed " + url)
}

22
http.go
View File

@ -41,7 +41,7 @@ func (f *Forge) HttpPost(url string, data []byte) ([]byte, error) {
return body, nil
}
func (f *Forge) LookupPB(check *gitpb.Repos) (*gitpb.Repos, error) {
func (f *Forge) LookupPBorig(check *gitpb.Repos) (*gitpb.Repos, error) {
url := forgeURL + "lookup"
for repo := range check.IterByFullPath() {
@ -52,3 +52,23 @@ func (f *Forge) LookupPB(check *gitpb.Repos) (*gitpb.Repos, error) {
return check.SubmitReposPB(url)
}
func (f *Forge) LookupPB(check *gitpb.Repos) (*gitpb.Repos, error) {
url := forgeURL + "lookup"
queryPB := gitpb.NewRepos()
for repo := range check.IterByFullPath() {
ns := repo.Namespace
if ns == "" {
ns = repo.GoInfo.GoPath
}
newr := new(gitpb.Repo)
newr.Namespace = ns
queryPB.AppendByNamespace(newr)
}
return queryPB.SubmitReposPB(url)
}

View File

@ -182,7 +182,7 @@ func (f *Forge) printRepoToTable(repo *gitpb.Repo, sizes []int, full bool) {
var chort string = repo.GetCurrentBranchVersion()
var cname string = repo.GetCurrentBranchName()
var gopath string = repo.GetGoPath()
var gopath string = repo.GetNamespace()
var rtype string = repo.GetRepoType()
// ctime := repo.Tags.GetAge(mhort)