Fix out bugs

This commit is contained in:
Ed
2018-12-18 00:02:07 -05:00
parent 44f8ef502d
commit 7688a7faf8

View File

@@ -29,12 +29,12 @@ func (c *OutCommand) Run(sourceDir string, request OutRequest) (OutResponse, err
// return OutResponse{}, err // return OutResponse{}, err
// } // }
tag, err := c.fileContents(filepath.Join(sourceDir, request.Params.TagPath)) tag_name, err := c.fileContents(filepath.Join(sourceDir, request.Params.TagPath))
if err != nil { if err != nil {
return OutResponse{}, err return OutResponse{}, err
} }
tag = request.Params.TagPrefix + tag tag_name = request.Params.TagPrefix + tag_name
targetCommitish, err := c.fileContents(filepath.Join(sourceDir, request.Params.CommitishPath)) targetCommitish, err := c.fileContents(filepath.Join(sourceDir, request.Params.CommitishPath))
if err != nil { if err != nil {
@@ -48,26 +48,25 @@ func (c *OutCommand) Run(sourceDir string, request OutRequest) (OutResponse, err
// } // }
// } // }
tagExists := false tagExists := true
_, err = c.gitlab.GetTag(tag) tag, err := c.gitlab.GetTag(tag_name)
if err != nil { if err != nil {
//TODO: improve the check to be based on the specific error //TODO: improve the check to be based on the specific error
tagExists = true tagExists = false
} }
// create the tag first, as next sections assume the tag exists // create the tag first, as next sections assume the tag exists
if !tagExists { if !tagExists {
_, err := c.gitlab.CreateTag(targetCommitish, tag) tag, err = c.gitlab.CreateTag(targetCommitish, tag_name)
if err != nil { if err != nil {
return OutResponse{}, err return OutResponse{}, err
} }
} }
// create a new release // create a new release if it doesn't exist yet
_, err = c.gitlab.CreateRelease(tag, "Auto-generated from Concourse GitLab Release Resource") if tag.Release == nil {
if err != nil { _, err = c.gitlab.CreateRelease(tag_name, "Auto-generated from Concourse GitLab Release Resource")
// if 409 error occurs, this means the release already existed, so just skip to the next section (update the release) if err != nil {
if err.Error() != "release already exists" {
return OutResponse{}, err return OutResponse{}, err
} }
} }
@@ -94,17 +93,14 @@ func (c *OutCommand) Run(sourceDir string, request OutRequest) (OutResponse, err
} }
// update the release // update the release
_, err = c.gitlab.UpdateRelease(tag, strings.Join(fileLinks, "\n")) _, err = c.gitlab.UpdateRelease(tag_name, strings.Join(fileLinks, "\n"))
// get tag
savedTag, err := c.gitlab.GetTag(tag)
if err != nil { if err != nil {
return OutResponse{}, errors.New("could not get saved tag") return OutResponse{}, errors.New("could not get saved tag")
} }
return OutResponse{ return OutResponse{
Version: Version{Tag: tag}, Version: Version{Tag: tag_name},
Metadata: metadataFromTag(savedTag), Metadata: metadataFromTag(tag),
}, nil }, nil
} }