Add functionality to support Release and Prerelease together

This commit is contained in:
Adham Helal
2016-09-15 16:31:32 +02:00
parent cc5e9dc7f5
commit ee96e0d46b
6 changed files with 29 additions and 9 deletions

View File

@@ -23,16 +23,22 @@ Fetches and creates versioned GitHub resources.
for uploading. If `github_api_url` is set, this value defaults to the same for uploading. If `github_api_url` is set, this value defaults to the same
value, but if you have your own endpoint, this field will override it. value, but if you have your own endpoint, this field will override it.
* `release`: *Optional. Default `true`.* When set to `true`, `put` produces
release and `check` will detects releases. If `false`, `put` and `check` will ignore releases.
Note that releases must have semver compliant tags to be detected.
* `pre_release`: *Optional. Default `false`.* When set to `true`, `put` produces
pre-release and `check` detects prereleases. If `false`, only non-prerelease releases
will be detected and published. Note that releases must have semver compliant
tags to be detected.
If `release` and `pre_release` are set to `true` `put` produces
release and `check` will detects prereleases and releases.
* `drafts`: *Optional. Default `false`.* When set to `true`, `put` produces * `drafts`: *Optional. Default `false`.* When set to `true`, `put` produces
drafts and `check` only detects drafts. If `false`, only non-draft releases drafts and `check` only detects drafts. If `false`, only non-draft releases
will be detected and published. Note that releases must have semver compliant will be detected and published. Note that releases must have semver compliant
tags to be detected, even if they're drafts. tags to be detected, even if they're drafts.
* `pre_release`: *Optional. Default `false`.* When set to `true`, `put` produces
pre-release and `check` only detects prereleases. If `false`, only non-prerelease releases
will be detected and published. Note that releases must have semver compliant
tags to be detected.
### Example ### Example
``` yaml ``` yaml

View File

@@ -35,7 +35,11 @@ func (c *CheckCommand) Run(request CheckRequest) ([]Version, error) {
if request.Source.Drafts != *release.Draft { if request.Source.Drafts != *release.Draft {
continue continue
} }
if request.Source.PreRelease != *release.Prerelease {
// Should we skip this release
// a- prerelease condition dont match our source config
// b- release condition match prerealse in github since github has true/false to describe release/prerelase
if request.Source.PreRelease != *release.Prerelease && request.Source.Release == *release.Prerelease {
continue continue
} }

View File

@@ -8,7 +8,7 @@ import (
) )
func main() { func main() {
var request resource.CheckRequest request := resource.NewCheckRequest()
inputRequest(&request) inputRequest(&request)
github, err := resource.NewGitHubClient(request.Source) github, err := resource.NewGitHubClient(request.Source)

View File

@@ -13,7 +13,7 @@ func main() {
os.Exit(1) os.Exit(1)
} }
var request resource.OutRequest request := resource.NewCheckRequest()
inputRequest(&request) inputRequest(&request)
sourceDir := os.Args[1] sourceDir := os.Args[1]

View File

@@ -58,7 +58,10 @@ func (c *OutCommand) Run(sourceDir string, request OutRequest) (OutResponse, err
} }
draft := request.Source.Drafts draft := request.Source.Drafts
prerelease := request.Source.PreRelease prerelease := false
if request.Source.PreRelease == true && request.Source.Release == false {
prerelease = request.Source.PreRelease
}
release := &github.RepositoryRelease{ release := &github.RepositoryRelease{
Name: github.String(name), Name: github.String(name),

View File

@@ -9,6 +9,7 @@ type Source struct {
AccessToken string `json:"access_token"` AccessToken string `json:"access_token"`
Drafts bool `json:"drafts"` Drafts bool `json:"drafts"`
PreRelease bool `json:"pre_release"` PreRelease bool `json:"pre_release"`
Release bool `json:"release"`
} }
type CheckRequest struct { type CheckRequest struct {
@@ -16,6 +17,12 @@ type CheckRequest struct {
Version Version `json:"version"` Version Version `json:"version"`
} }
func NewCheckRequest() CheckRequest {
res := CheckRequest{}
res.Source.Release = true
return res
}
type InRequest struct { type InRequest struct {
Source Source `json:"source"` Source Source `json:"source"`
Version *Version `json:"version"` Version *Version `json:"version"`