GitHub: migrate draft releases too (#15884)
* GitHub: migrate draft releases too * refactor
This commit is contained in:
parent
8e32eeb5de
commit
e0c93fed05
2 changed files with 31 additions and 34 deletions
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue