From e543d932650c0b72b0c621c10eaaa1935048e4d4 Mon Sep 17 00:00:00 2001 From: natto1784 Date: Sun, 20 Feb 2022 02:44:50 +0530 Subject: [PATCH] add proper title --- README.md | 7 +++++-- check_command.go | 10 +++++----- gitea.go | 16 ++++++++-------- in_command.go | 4 ++-- metadata.go | 2 +- out_command.go | 28 +++++++++++++++++++++------- resources.go | 1 + versions.go | 2 +- 8 files changed, 44 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 9f8e6c3..ba6dc07 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![Concourse CI](https://ci.weirdnatto.in/api/v1/teams/main/pipelines/gitea-release-resource/badge)](https://ci.weirdnatto.in/teams/main/pipelines/gitea-release-resource) [![Docker](https://img.shields.io/docker/image-size/natto17/gitea-release-resource.svg)](https://hub.docker.com/repository/docker/natto17/gitea-release-resource) # WIP Forked from https://github.com/edtan/gitlab-release-resource - +*please help ;-;* # Gitea Releases Resource @@ -109,10 +109,13 @@ matching the patterns in `globs` to the release. * `tag`: *Required.* A path to a file containing the name of the Git tag to use for the release. +* `title`: *Optional.* A path to a file containing the name of the title + for the release. (Defaults to tag name) + * `tag_prefix`: *Optional.* If specified, the tag read from the file will be prepended with this string. This is useful for adding v in front of version numbers. -* ~~`body`: *Optional.* A path to a file containing the body text of the release.~~ (Not yet supported) +* `body`: *Optional.* A path to a file containing the body text of the release. * `globs`: *Optional.* A list of globs for files that will be uploaded alongside the created release. diff --git a/check_command.go b/check_command.go index 2048a9e..66f6a25 100644 --- a/check_command.go +++ b/check_command.go @@ -72,17 +72,17 @@ func (c *CheckCommand) Run(request CheckRequest) ([]Version, error) { return []Version{}, nil } latestTag := filteredTags[len(filteredTags)-1] - latestResource, err := c.gitea.GetReleaseByTag(latestTag.Name) + latestRelease, err := c.gitea.GetReleaseByTag(latestTag.Name) if err != nil { return []Version{}, err } if (request.Version == Version{}) { - return []Version{versionFromTag(latestResource)}, nil + return []Version{versionFromRelease(latestRelease)}, nil } if latestTag.Name == request.Version.Tag { - return []Version{versionFromTag(latestResource)}, nil + return []Version{versionFromRelease(latestRelease)}, nil } upToLatest := false @@ -101,13 +101,13 @@ 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) + release, err := c.gitea.GetReleaseByTag(filteredTags[len(filteredTags)-1].Name) if err != nil { return []Version{}, err } nextVersions = append( nextVersions, - versionFromTag(resource), + versionFromRelease(release), ) } diff --git a/gitea.go b/gitea.go index 6fc1749..10c93f8 100644 --- a/gitea.go +++ b/gitea.go @@ -24,8 +24,8 @@ type Gitea interface { GetTag(tag_name string) (*gitea.Tag, error) CreateTag(tag_name string, ref string) (*gitea.Tag, 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) + CreateRelease(title string, tag_name string, body string) (*gitea.Release, error) + EditRelease(title string, tag_name string, release_id int64, body string) (*gitea.Release, error) CreateAttachment(filePath string, release_id int64) (*gitea.Attachment, error) GetAttachment(filePath, destPath string) error } @@ -214,11 +214,11 @@ func (g *GiteaClient) GetReleaseByTag(tag_name string) (*gitea.Release, error) { return release, nil } -func (g *GiteaClient) CreateRelease(tag_name string, description string) (*gitea.Release, error) { +func (g *GiteaClient) CreateRelease(title string, tag_name string, body string) (*gitea.Release, error) { opt := gitea.CreateReleaseOption{ - Note: description, + Note: body, TagName: tag_name, - Title: "cock and balls full HD", + Title: title, } release, res, err := g.client.CreateRelease(g.user, g.repository, opt) @@ -238,12 +238,12 @@ func (g *GiteaClient) CreateRelease(tag_name string, description string) (*gitea return release, nil } -func (g *GiteaClient) EditRelease(tag_name string, release_id int64, description string) (*gitea.Release, error) { +func (g *GiteaClient) EditRelease(title string, tag_name string, release_id int64, body string) (*gitea.Release, error) { opt := gitea.EditReleaseOption{ - Note: description, + Note: body, TagName: tag_name, - Title: "cock and balls full HD", + Title: title, } release, res, err := g.client.EditRelease(g.user, g.repository, release_id, opt) diff --git a/in_command.go b/in_command.go index 90fb418..b59fe0b 100644 --- a/in_command.go +++ b/in_command.go @@ -116,8 +116,8 @@ func (c *InCommand) Run(destDir string, request InRequest) (InResponse, error) { } return InResponse{ - Version: versionFromTag(release), - Metadata: metadataFromTag(release), + Version: versionFromRelease(release), + Metadata: metadataFromRelease(release), }, nil } diff --git a/metadata.go b/metadata.go index 01bd6ce..3344aad 100644 --- a/metadata.go +++ b/metadata.go @@ -2,7 +2,7 @@ package resource import "code.gitea.io/sdk/gitea" -func metadataFromTag(release *gitea.Release) []MetadataPair { +func metadataFromRelease(release *gitea.Release) []MetadataPair { metadata := []MetadataPair{} if release.TagName != "" { diff --git a/out_command.go b/out_command.go index 7feda9c..868fe19 100644 --- a/out_command.go +++ b/out_command.go @@ -31,17 +31,32 @@ func (c *OutCommand) Run(sourceDir string, request OutRequest) (OutResponse, err tag_name = request.Params.TagPrefix + tag_name + title := tag_name + if request.Params.TitlePath != "" { + title, err = c.fileContents(filepath.Join(sourceDir, request.Params.TitlePath)) + if err != nil { + return OutResponse{}, err + } + } + + body := "Auto-generated from Concourse Gitea Release Resource" + if request.Params.BodyPath != "" { + body, err = c.fileContents(filepath.Join(sourceDir, request.Params.TitlePath)) + if err != nil { + return OutResponse{}, err + } + } + release, err := c.gitea.GetReleaseByTag(tag_name) if release == nil { - release, err = c.gitea.CreateRelease(tag_name, "Auto-generated from Concourse Gitea Release Resource") + release, err = c.gitea.CreateRelease(title, tag_name, body) if err != nil { return OutResponse{}, err } } // upload files - var fileLinks []string for _, fileGlob := range params.Globs { matches, err := filepath.Glob(filepath.Join(sourceDir, fileGlob)) if err != nil { @@ -53,23 +68,22 @@ func (c *OutCommand) Run(sourceDir string, request OutRequest) (OutResponse, err } for _, filePath := range matches { - attachment, err := c.gitea.CreateAttachment(filePath, release.ID) + _, err := c.gitea.CreateAttachment(filePath, release.ID) if err != nil { return OutResponse{}, err } - fileLinks = append(fileLinks, attachment.Name) } } // update the release - _, err = c.gitea.EditRelease(tag_name, release.ID, strings.Join(fileLinks, "\n")) + _, err = c.gitea.EditRelease(title, tag_name, release.ID, body) if err != nil { return OutResponse{}, errors.New("could not get saved tag") } return OutResponse{ - Version: versionFromTag(release), - Metadata: metadataFromTag(release), + Version: versionFromRelease(release), + Metadata: metadataFromRelease(release), }, nil } diff --git a/resources.go b/resources.go index 15c8bae..1c089e4 100644 --- a/resources.go +++ b/resources.go @@ -56,6 +56,7 @@ type OutParams struct { NamePath string `json:"name"` BodyPath string `json:"body"` TagPath string `json:"tag"` + TitlePath string `json:"title"` CommitishPath string `json:"commitish"` TagPrefix string `json:"tag_prefix"` diff --git a/versions.go b/versions.go index 02f0f43..c2847fe 100644 --- a/versions.go +++ b/versions.go @@ -31,7 +31,7 @@ func (vp *versionParser) parse(tag string) string { return "" } -func versionFromTag(release *gitea.Release) Version { +func versionFromRelease(release *gitea.Release) Version { return Version{ Tag: release.TagName, CommitSHA: release.Target,