parent
cc6a93ab03
commit
00b0b14fc2
1
DOCS.md
1
DOCS.md
@ -3,6 +3,7 @@ can override the default configuration with the following parameters:
|
||||
|
||||
* `api_key` - GitHub oauth token with public_repo or repo permission
|
||||
* `files` - Files to upload to GitHub Release, globs are allowed
|
||||
* `file_exists` - What to do if an file asset already exists, supported values: **overwrite** (default), **skip** and **fail**
|
||||
* `checksum` - Checksum takes hash methods to include in your GitHub release for the files specified. Supported hash methods include md5, sha1, sha256, sha512, adler32, and crc32.
|
||||
* `draft` - create a draft release if set to true
|
||||
* `base_url` - GitHub base URL, only required for GHE
|
||||
|
36
main.go
36
main.go
@ -37,6 +37,13 @@ func main() {
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
if vargs.FileExists == "" {
|
||||
vargs.FileExists = "overwrite"
|
||||
}
|
||||
if !fileExistsValues[vargs.FileExists] {
|
||||
fmt.Printf("invalid value for file_exists: use [empty], overwrite, skip or fail")
|
||||
}
|
||||
|
||||
if vargs.BaseURL == "" {
|
||||
vargs.BaseURL = "https://api.github.com/"
|
||||
} else if !strings.HasSuffix(vargs.BaseURL, "/") {
|
||||
@ -104,6 +111,7 @@ func main() {
|
||||
Repo: repo.Name,
|
||||
Tag: filepath.Base(build.Ref),
|
||||
Draft: vargs.Draft,
|
||||
FileExists: vargs.FileExists,
|
||||
}
|
||||
|
||||
release, err := rc.buildRelease()
|
||||
@ -118,6 +126,12 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
var fileExistsValues = map[string]bool{
|
||||
"overwrite": true,
|
||||
"fail": true,
|
||||
"skip": true,
|
||||
}
|
||||
|
||||
// Release holds ties the drone env data and github client together.
|
||||
type releaseClient struct {
|
||||
*github.Client
|
||||
@ -125,6 +139,7 @@ type releaseClient struct {
|
||||
Repo string
|
||||
Tag string
|
||||
Draft bool
|
||||
FileExists string
|
||||
}
|
||||
|
||||
func (rc *releaseClient) buildRelease() (*github.RepositoryRelease, error) {
|
||||
@ -176,7 +191,28 @@ func (rc *releaseClient) uploadFiles(id int, files []string) error {
|
||||
return fmt.Errorf("Failed to fetch existing assets: %s", err)
|
||||
}
|
||||
|
||||
var uploadFiles []string
|
||||
files:
|
||||
for _, file := range files {
|
||||
for _, asset := range assets {
|
||||
if *asset.Name == path.Base(file) {
|
||||
switch rc.FileExists {
|
||||
case "overwrite":
|
||||
// do nothing
|
||||
case "fail":
|
||||
return fmt.Errorf("Asset file %s already exists", path.Base(file))
|
||||
case "skip":
|
||||
fmt.Printf("Skipping pre-existing %s artifact\n", *asset.Name)
|
||||
continue files
|
||||
default:
|
||||
return fmt.Errorf("Internal error, unkown file_exist value %s", rc.FileExists)
|
||||
}
|
||||
}
|
||||
}
|
||||
uploadFiles = append(uploadFiles, file)
|
||||
}
|
||||
|
||||
for _, file := range uploadFiles {
|
||||
handle, err := os.Open(file)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Failed to read %s artifact: %s", file, err)
|
||||
|
Loading…
Reference in New Issue
Block a user