Skip to content

Commit 68eec69

Browse files
Norwinnoerw
authored andcommitted
Add DeleteRepoTag function (#461)
add DeleteRepoTag() fixes #441 add test didnt run them yet 🙃 Co-authored-by: Norwin Roosen <[email protected]> Reviewed-on: https://gitea.com/gitea/go-sdk/pulls/461 Reviewed-by: 6543 <[email protected]> Reviewed-by: khmarbaise <[email protected]> Co-Authored-By: Norwin <[email protected]> Co-Committed-By: Norwin <[email protected]>
1 parent fa7edc6 commit 68eec69

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
lines changed

gitea/release.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,14 +124,25 @@ func (c *Client) EditRelease(user, repo string, id int64, form EditReleaseOption
124124
return r, resp, err
125125
}
126126

127-
// DeleteRelease delete a release from a repository
127+
// DeleteRelease delete a release from a repository, keeping its tag
128128
func (c *Client) DeleteRelease(user, repo string, id int64) (*Response, error) {
129129
_, resp, err := c.getResponse("DELETE",
130130
fmt.Sprintf("/repos/%s/%s/releases/%d", user, repo, id),
131131
nil, nil)
132132
return resp, err
133133
}
134134

135+
// DeleteReleaseTag deletes a tag from a repository, if no release refers to it.
136+
func (c *Client) DeleteReleaseTag(user, repo string, tag string) (*Response, error) {
137+
if err := c.checkServerVersionGreaterThanOrEqual(version1_14_0); err != nil {
138+
return nil, err
139+
}
140+
_, resp, err := c.getResponse("DELETE",
141+
fmt.Sprintf("/repos/%s/%s/releases/tags/%s", user, repo, tag),
142+
nil, nil)
143+
return resp, err
144+
}
145+
135146
// fallbackGetReleaseByTag is fallback for old gitea installations ( < 1.13.0 )
136147
func (c *Client) fallbackGetReleaseByTag(user, repo string, tag string) (*Release, *Response, error) {
137148
for i := 1; ; i++ {

gitea/release_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,16 @@ func TestRelease(t *testing.T) {
7474
assert.NoError(t, err)
7575
rl, _, _ = c.ListReleases(repo.Owner.UserName, repo.Name, ListReleasesOptions{})
7676
assert.Len(t, rl, 0)
77+
tags, _, err := c.ListRepoTags(repo.Owner.UserName, repo.Name, ListRepoTagsOptions{})
78+
assert.NoError(t, err)
79+
assert.Len(t, tags, 1)
80+
81+
// DeleteReleaseTag
82+
_, err = c.DeleteReleaseTag(repo.Owner.UserName, repo.Name, r.TagName)
83+
assert.NoError(t, err)
84+
tags, _, err = c.ListRepoTags(repo.Owner.UserName, repo.Name, ListRepoTagsOptions{})
85+
assert.NoError(t, err)
86+
assert.Len(t, tags, 0)
7787

7888
// Test Response if try to get not existing release
7989
_, resp, err := c.GetRelease(repo.Owner.UserName, repo.Name, 1234)

gitea/version.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ var (
4141
version1_11_0, _ = version.NewVersion("1.11.0")
4242
version1_12_0, _ = version.NewVersion("1.12.0")
4343
version1_13_0, _ = version.NewVersion("1.13.0")
44+
version1_14_0, _ = version.NewVersion("1.14.0")
4445
)
4546

4647
// checkServerVersionGreaterThanOrEqual is internally used to speed up things and ignore issues with prerelease

0 commit comments

Comments
 (0)