diff --git a/check_command.go b/check_command.go index 392668b..2048a9e 100644 --- a/check_command.go +++ b/check_command.go @@ -72,7 +72,7 @@ func (c *CheckCommand) Run(request CheckRequest) ([]Version, error) { return []Version{}, nil } latestTag := filteredTags[len(filteredTags)-1] - latestResource, _, err := c.gitea.GetReleaseByTag(latestTag.Name) + latestResource, err := c.gitea.GetReleaseByTag(latestTag.Name) if err != nil { return []Version{}, err } @@ -101,7 +101,7 @@ func (c *CheckCommand) Run(request CheckRequest) ([]Version, error) { if !upToLatest { // current version was removed; start over from latest - resource, _, err := c.gitea.GetReleaseByTag(filteredTags[len(filteredTags)-1].Name) + resource, err := c.gitea.GetReleaseByTag(filteredTags[len(filteredTags)-1].Name) if err != nil { return []Version{}, err } diff --git a/gitea.go b/gitea.go index b84ee31..6fc1749 100644 --- a/gitea.go +++ b/gitea.go @@ -2,7 +2,6 @@ package resource import ( "crypto/tls" - "encoding/json" "errors" "fmt" "io" @@ -24,8 +23,8 @@ type Gitea interface { ListTagsUntil(tag_name string) ([]*gitea.Tag, error) GetTag(tag_name string) (*gitea.Tag, error) CreateTag(tag_name string, ref string) (*gitea.Tag, error) - GetReleaseByTag(tag_name string) (*gitea.Release, int64, error) - CreateRelease(tag_name string, description string) (*gitea.Release, int64, error) + GetReleaseByTag(tag_name string) (*gitea.Release, error) + CreateRelease(tag_name string, description string) (*gitea.Release, error) EditRelease(tag_name string, release_id int64, description string) (*gitea.Release, error) CreateAttachment(filePath string, release_id int64) (*gitea.Attachment, error) GetAttachment(filePath, destPath string) error @@ -196,43 +195,47 @@ func (g *GiteaClient) CreateTag(ref string, tag_name string) (*gitea.Tag, error) return tag, nil } -type ReleaseResp struct { - id int64 `json:"id"` -} - -func (g *GiteaClient) GetReleaseByTag(tag_name string) (*gitea.Release, int64, error) { +func (g *GiteaClient) GetReleaseByTag(tag_name string) (*gitea.Release, error) { release, res, err := g.client.GetReleaseByTag(g.user, g.repository, tag_name) - if err != nil { - return &gitea.Release{}, 0, err + if res.StatusCode == http.StatusNotFound { + return nil, nil } - defer res.Body.Close() - response := ReleaseResp{} - json.NewDecoder(res.Body).Decode(response) - return release, response.id, nil + err = res.Body.Close() + if err != nil { + return nil, err + } + + if err != nil { + return &gitea.Release{}, err + } + + return release, nil } -func (g *GiteaClient) CreateRelease(tag_name string, description string) (*gitea.Release, int64, error) { +func (g *GiteaClient) CreateRelease(tag_name string, description string) (*gitea.Release, error) { opt := gitea.CreateReleaseOption{ Note: description, TagName: tag_name, + Title: "cock and balls full HD", } release, res, err := g.client.CreateRelease(g.user, g.repository, opt) if err != nil { - return &gitea.Release{}, 0, err + return &gitea.Release{}, err + } + + err = res.Body.Close() + if err != nil { + return nil, err } if res.StatusCode == http.StatusConflict { - return nil, 0, errors.New("release already exists") + return nil, errors.New("release already exists") } - defer res.Body.Close() - - response := ReleaseResp{} - json.NewDecoder(res.Body).Decode(response) - return release, response.id, nil + return release, nil } func (g *GiteaClient) EditRelease(tag_name string, release_id int64, description string) (*gitea.Release, error) { @@ -240,6 +243,7 @@ func (g *GiteaClient) EditRelease(tag_name string, release_id int64, description opt := gitea.EditReleaseOption{ Note: description, TagName: tag_name, + Title: "cock and balls full HD", } release, res, err := g.client.EditRelease(g.user, g.repository, release_id, opt) @@ -273,7 +277,7 @@ func (g *GiteaClient) GetAttachment(filePath, destPath string) error { } defer out.Close() - filePathRef, err := url.Parse(g.repository + filePath) + filePathRef, err := url.Parse(filePath) if err != nil { return err } diff --git a/in_command.go b/in_command.go index d654dfa..90fb418 100644 --- a/in_command.go +++ b/in_command.go @@ -68,7 +68,7 @@ func (c *InCommand) Run(destDir string, request InRequest) (InResponse, error) { return InResponse{}, err } var release *gitea.Release - release, _, err = c.gitea.GetReleaseByTag(request.Version.Tag) + release, err = c.gitea.GetReleaseByTag(request.Version.Tag) if err != nil { return InResponse{}, err diff --git a/out_command.go b/out_command.go index 54ef1be..7feda9c 100644 --- a/out_command.go +++ b/out_command.go @@ -24,11 +24,6 @@ func NewOutCommand(gitea Gitea, writer io.Writer) *OutCommand { func (c *OutCommand) Run(sourceDir string, request OutRequest) (OutResponse, error) { params := request.Params - // name, err := c.fileContents(filepath.Join(sourceDir, request.Params.NamePath)) - // if err != nil { - // return OutResponse{}, err - // } - tag_name, err := c.fileContents(filepath.Join(sourceDir, request.Params.TagPath)) if err != nil { return OutResponse{}, err @@ -36,17 +31,10 @@ func (c *OutCommand) Run(sourceDir string, request OutRequest) (OutResponse, err tag_name = request.Params.TagPrefix + tag_name - // if request.Params.BodyPath != "" { - // _, err := c.fileContents(filepath.Join(sourceDir, request.Params.BodyPath)) - // if err != nil { - // return OutResponse{}, err - // } - // } - - release, release_id, err := c.gitea.GetReleaseByTag(tag_name) + release, err := c.gitea.GetReleaseByTag(tag_name) if release == nil { - _, release_id, err = c.gitea.CreateRelease(tag_name, "Auto-generated from Concourse Gitea Release Resource") + release, err = c.gitea.CreateRelease(tag_name, "Auto-generated from Concourse Gitea Release Resource") if err != nil { return OutResponse{}, err } @@ -65,7 +53,7 @@ func (c *OutCommand) Run(sourceDir string, request OutRequest) (OutResponse, err } for _, filePath := range matches { - attachment, err := c.gitea.CreateAttachment(filePath, release_id) + attachment, err := c.gitea.CreateAttachment(filePath, release.ID) if err != nil { return OutResponse{}, err } @@ -74,7 +62,7 @@ func (c *OutCommand) Run(sourceDir string, request OutRequest) (OutResponse, err } // update the release - _, err = c.gitea.EditRelease(tag_name, release_id, strings.Join(fileLinks, "\n")) + _, err = c.gitea.EditRelease(tag_name, release.ID, strings.Join(fileLinks, "\n")) if err != nil { return OutResponse{}, errors.New("could not get saved tag") }