You've already forked go-semantic-release
temp(pkg/releaser): add ZipFiles Method
This commit is contained in:
@@ -115,18 +115,39 @@ func (g Client) CreateRelease(releaseVersion *shared.ReleaseVersion, generatedCh
|
||||
// UploadAssets uploads specified assets
|
||||
func (g Client) UploadAssets(assets []config.Asset) error {
|
||||
for _, asset := range assets {
|
||||
file, err := os.Open(asset.Name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if asset.Compress {
|
||||
zipName, err := util.ZipFile(g.config.Repo, asset.Name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, resp, err := g.client.Repositories.UploadReleaseAsset(g.context, g.config.User, g.config.Repo, *g.release.ID, &github.UploadOptions{Name: file.Name()}, file)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
file, err := os.Open(g.config.Repo + zipName)
|
||||
defer file.Close()
|
||||
|
||||
if resp.StatusCode >= http.StatusBadRequest {
|
||||
return fmt.Errorf("releaser: github: Could not create release: response statuscode: %s", resp.Status)
|
||||
_, resp, err := g.client.Repositories.UploadReleaseAsset(g.context, g.config.User, g.config.Repo, *g.release.ID, &github.UploadOptions{Name: zipName}, file)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if resp.StatusCode >= http.StatusBadRequest {
|
||||
return fmt.Errorf("releaser: github: Could not upload asset %s: %s", zipName, resp.Status)
|
||||
}
|
||||
|
||||
} else {
|
||||
file, err := os.Open(asset.Name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
_, resp, err := g.client.Repositories.UploadReleaseAsset(g.context, g.config.User, g.config.Repo, *g.release.ID, &github.UploadOptions{Name: file.Name()}, file)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if resp.StatusCode >= http.StatusBadRequest {
|
||||
return fmt.Errorf("releaser: github: Could not upload asset %s: %s", file.Name(), resp.Status)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
|
||||
@@ -40,20 +40,3 @@ func (r *Releasers) GetReleaser() (Releaser, error) {
|
||||
}
|
||||
return nil, fmt.Errorf("could not initialize a releaser from this type: %s", r.config.Release)
|
||||
}
|
||||
|
||||
// func checkIfAssetsExists(assets []config.Asset) error {
|
||||
// var missingAssets []string
|
||||
// for _, asset := range assets {
|
||||
|
||||
// if _, err := os.Stat(asset.Name); err != nil {
|
||||
// missingAssets = append(missingAssets, asset.Name)
|
||||
// }
|
||||
// }
|
||||
|
||||
// if len(missingAssets) != 0 {
|
||||
// return fmt.Errorf("could not find specified Asset: %+v ", assets)
|
||||
// }
|
||||
|
||||
// return nil
|
||||
|
||||
// }
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
package util
|
||||
|
||||
import (
|
||||
"archive/zip"
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"os"
|
||||
"strings"
|
||||
@@ -35,3 +37,47 @@ func GetAccessToken(providerName string) (string, error) {
|
||||
}
|
||||
return token, nil
|
||||
}
|
||||
|
||||
// ZipFile compress given file in zip format
|
||||
func ZipFile(repository string, file string) (string, error) {
|
||||
|
||||
zipFileName := fmt.Sprintf("%s/%s", strings.TrimSuffix(repository, "/"), file)
|
||||
zipFile, err := os.Create(zipFileName)
|
||||
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
defer zipFile.Close()
|
||||
|
||||
fileToZip, err := os.Open(file)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
defer fileToZip.Close()
|
||||
|
||||
fileToZipInfo, err := fileToZip.Stat()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
zipWriter := zip.NewWriter(zipFile)
|
||||
|
||||
fileToZipHeader, err := zip.FileInfoHeader(fileToZipInfo)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
fileToZipHeader.Name = fileToZipInfo.Name()
|
||||
|
||||
fileToZipWriter, err := zipWriter.CreateHeader(fileToZipHeader)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
if _, err = io.Copy(fileToZipWriter, fileToZip); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return zipFileName, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user