GitHub: migrate draft releases too (#15884)

* GitHub: migrate draft releases too

* refactor
tokarchuk/v1.17
6543 4 years ago committed by GitHub
parent 8e32eeb5de
commit e0c93fed05
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      modules/migrations/gitea_uploader.go
  2. 44
      modules/migrations/github.go

@ -250,7 +250,8 @@ func (g *GiteaLocalUploader) CreateReleases(releases ...*base.Release) error {
rel.OriginalAuthorID = release.PublisherID rel.OriginalAuthorID = release.PublisherID
} }
// calc NumCommits // calc NumCommits if no draft
if !release.Draft {
commit, err := g.gitRepo.GetCommit(rel.TagName) commit, err := g.gitRepo.GetCommit(rel.TagName)
if err != nil { if err != nil {
return fmt.Errorf("GetCommit: %v", err) return fmt.Errorf("GetCommit: %v", err)
@ -259,6 +260,7 @@ func (g *GiteaLocalUploader) CreateReleases(releases ...*base.Release) error {
if err != nil { if err != nil {
return fmt.Errorf("CommitsCount: %v", err) return fmt.Errorf("CommitsCount: %v", err)
} }
}
for _, asset := range release.Assets { for _, asset := range release.Assets {
var attach = models.Attachment{ var attach = models.Attachment{
@ -270,9 +272,10 @@ func (g *GiteaLocalUploader) CreateReleases(releases ...*base.Release) error {
} }
// download attachment // download attachment
err = func() error { err := func() error {
// asset.DownloadURL maybe a local file // asset.DownloadURL maybe a local file
var rc io.ReadCloser var rc io.ReadCloser
var err error
if asset.DownloadURL == nil { if asset.DownloadURL == nil {
rc, err = asset.DownloadFunc() rc, err = asset.DownloadFunc()
if err != nil { if err != nil {

@ -264,34 +264,29 @@ func (g *GithubDownloaderV3) GetLabels() ([]*base.Label, error) {
} }
func (g *GithubDownloaderV3) convertGithubRelease(rel *github.RepositoryRelease) *base.Release { func (g *GithubDownloaderV3) convertGithubRelease(rel *github.RepositoryRelease) *base.Release {
var (
name string
desc string
)
if rel.Body != nil {
desc = *rel.Body
}
if rel.Name != nil {
name = *rel.Name
}
var email string
if rel.Author.Email != nil {
email = *rel.Author.Email
}
r := &base.Release{ r := &base.Release{
TagName: *rel.TagName, TagName: *rel.TagName,
TargetCommitish: *rel.TargetCommitish, TargetCommitish: *rel.TargetCommitish,
Name: name,
Body: desc,
Draft: *rel.Draft, Draft: *rel.Draft,
Prerelease: *rel.Prerelease, Prerelease: *rel.Prerelease,
Created: rel.CreatedAt.Time, Created: rel.CreatedAt.Time,
PublisherID: *rel.Author.ID, PublisherID: *rel.Author.ID,
PublisherName: *rel.Author.Login, PublisherName: *rel.Author.Login,
PublisherEmail: email, }
Published: rel.PublishedAt.Time,
if rel.Body != nil {
r.Body = *rel.Body
}
if rel.Name != nil {
r.Name = *rel.Name
}
if rel.Author.Email != nil {
r.PublisherEmail = *rel.Author.Email
}
if rel.PublishedAt != nil {
r.Published = rel.PublishedAt.Time
} }
for _, asset := range rel.Assets { for _, asset := range rel.Assets {
@ -306,18 +301,17 @@ func (g *GithubDownloaderV3) convertGithubRelease(rel *github.RepositoryRelease)
Updated: asset.UpdatedAt.Time, Updated: asset.UpdatedAt.Time,
DownloadFunc: func() (io.ReadCloser, error) { DownloadFunc: func() (io.ReadCloser, error) {
g.sleep() g.sleep()
asset, redir, err := g.client.Repositories.DownloadReleaseAsset(g.ctx, g.repoOwner, g.repoName, assetID, nil) asset, redirectURL, err := g.client.Repositories.DownloadReleaseAsset(g.ctx, g.repoOwner, g.repoName, assetID, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
err = g.RefreshRate() if err := g.RefreshRate(); err != nil {
if err != nil {
log.Error("g.client.RateLimits: %s", err) log.Error("g.client.RateLimits: %s", err)
} }
if asset == nil { if asset == nil {
if redir != "" { if redirectURL != "" {
g.sleep() g.sleep()
req, err := http.NewRequestWithContext(g.ctx, "GET", redir, nil) req, err := http.NewRequestWithContext(g.ctx, "GET", redirectURL, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }

Loading…
Cancel
Save