// convertRepo is a helper function used to convert a Bitbucket // repository structure to the common Drone repository structure. func convertRepo(from *Repo) *model.Repo { repo := model.Repo{ Owner: strings.Split(from.FullName, "/")[0], Name: strings.Split(from.FullName, "/")[1], FullName: from.FullName, Link: from.Links.Html.Href, IsPrivate: from.IsPrivate, Avatar: from.Owner.Links.Avatar.Href, Kind: from.Scm, Branch: "master", } if repo.Kind == model.RepoHg { repo.Branch = "default" } // in some cases, the owner of the repository is not // provided, however, we do have the full name. if len(repo.Owner) == 0 { repo.Owner = strings.Split(repo.FullName, "/")[0] } // above we manually constructed the repository clone url. // below we will iterate through the list of clone links and // attempt to instead use the clone url provided by bitbucket. for _, link := range from.Links.Clone { if link.Name == "https" { repo.Clone = link.Href break } } // if no repository name is provided, we use the Html link. // this excludes the .git suffix, but will still clone the repo. if len(repo.Clone) == 0 { repo.Clone = repo.Link } // if bitbucket tries to automatically populate the user // in the url we must strip it out. clone, err := url.Parse(repo.Clone) if err == nil { clone.User = nil repo.Clone = clone.String() } return &repo }
// convertRepo is a helper function used to convert a Bitbucket repository // structure to the common Drone repository structure. func convertRepo(from *internal.Repo) *model.Repo { repo := model.Repo{ Clone: cloneLink(from), Owner: strings.Split(from.FullName, "/")[0], Name: strings.Split(from.FullName, "/")[1], FullName: from.FullName, Link: from.Links.Html.Href, IsPrivate: from.IsPrivate, Avatar: from.Owner.Links.Avatar.Href, Kind: from.Scm, Branch: "master", } if repo.Kind == model.RepoHg { repo.Branch = "default" } return &repo }