remove ProjectFile stuff

This commit is contained in:
2022-02-19 18:09:51 +05:30
parent 67f60bae11
commit 03c02caefb
7 changed files with 20 additions and 280 deletions

View File

@@ -3,8 +3,8 @@ package resource
import ( import (
"sort" "sort"
"github.com/cppforlife/go-semi-semantic/version"
"code.gitea.io/sdk/gitea" "code.gitea.io/sdk/gitea"
"github.com/cppforlife/go-semi-semantic/version"
) )
type CheckCommand struct { type CheckCommand struct {
@@ -47,9 +47,9 @@ func (c *CheckCommand) Run(request CheckRequest) ([]Version, error) {
continue continue
} }
/* if tag.Release == nil { /* if tag.Release == nil {
continue continue
}*/ }*/
filteredTags = append(filteredTags, tag) filteredTags = append(filteredTags, tag)
} }

View File

@@ -37,18 +37,6 @@ type FakeGitea struct {
result1 *gitea.Tag result1 *gitea.Tag
result2 error result2 error
} }
DownloadProjectFileStub func(string, string) error
downloadProjectFileMutex sync.RWMutex
downloadProjectFileArgsForCall []struct {
arg1 string
arg2 string
}
downloadProjectFileReturns struct {
result1 error
}
downloadProjectFileReturnsOnCall map[int]struct {
result1 error
}
GetTagStub func(string) (*gitea.Tag, error) GetTagStub func(string) (*gitea.Tag, error)
getTagMutex sync.RWMutex getTagMutex sync.RWMutex
getTagArgsForCall []struct { getTagArgsForCall []struct {
@@ -101,19 +89,6 @@ type FakeGitea struct {
result1 *gitea.Release result1 *gitea.Release
result2 error result2 error
} }
UploadProjectFileStub func(string) (*gitea.ProjectFile, error)
uploadProjectFileMutex sync.RWMutex
uploadProjectFileArgsForCall []struct {
arg1 string
}
uploadProjectFileReturns struct {
result1 *gitea.ProjectFile
result2 error
}
uploadProjectFileReturnsOnCall map[int]struct {
result1 *gitea.ProjectFile
result2 error
}
invocations map[string][][]interface{} invocations map[string][][]interface{}
invocationsMutex sync.RWMutex invocationsMutex sync.RWMutex
} }
@@ -246,67 +221,6 @@ func (fake *FakeGitea) CreateTagReturnsOnCall(i int, result1 *gitea.Tag, result2
}{result1, result2} }{result1, result2}
} }
func (fake *FakeGitea) DownloadProjectFile(arg1 string, arg2 string) error {
fake.downloadProjectFileMutex.Lock()
ret, specificReturn := fake.downloadProjectFileReturnsOnCall[len(fake.downloadProjectFileArgsForCall)]
fake.downloadProjectFileArgsForCall = append(fake.downloadProjectFileArgsForCall, struct {
arg1 string
arg2 string
}{arg1, arg2})
fake.recordInvocation("DownloadProjectFile", []interface{}{arg1, arg2})
fake.downloadProjectFileMutex.Unlock()
if fake.DownloadProjectFileStub != nil {
return fake.DownloadProjectFileStub(arg1, arg2)
}
if specificReturn {
return ret.result1
}
fakeReturns := fake.downloadProjectFileReturns
return fakeReturns.result1
}
func (fake *FakeGitea) DownloadProjectFileCallCount() int {
fake.downloadProjectFileMutex.RLock()
defer fake.downloadProjectFileMutex.RUnlock()
return len(fake.downloadProjectFileArgsForCall)
}
func (fake *FakeGitea) DownloadProjectFileCalls(stub func(string, string) error) {
fake.downloadProjectFileMutex.Lock()
defer fake.downloadProjectFileMutex.Unlock()
fake.DownloadProjectFileStub = stub
}
func (fake *FakeGitea) DownloadProjectFileArgsForCall(i int) (string, string) {
fake.downloadProjectFileMutex.RLock()
defer fake.downloadProjectFileMutex.RUnlock()
argsForCall := fake.downloadProjectFileArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2
}
func (fake *FakeGitea) DownloadProjectFileReturns(result1 error) {
fake.downloadProjectFileMutex.Lock()
defer fake.downloadProjectFileMutex.Unlock()
fake.DownloadProjectFileStub = nil
fake.downloadProjectFileReturns = struct {
result1 error
}{result1}
}
func (fake *FakeGitea) DownloadProjectFileReturnsOnCall(i int, result1 error) {
fake.downloadProjectFileMutex.Lock()
defer fake.downloadProjectFileMutex.Unlock()
fake.DownloadProjectFileStub = nil
if fake.downloadProjectFileReturnsOnCall == nil {
fake.downloadProjectFileReturnsOnCall = make(map[int]struct {
result1 error
})
}
fake.downloadProjectFileReturnsOnCall[i] = struct {
result1 error
}{result1}
}
func (fake *FakeGitea) GetTag(arg1 string) (*gitea.Tag, error) { func (fake *FakeGitea) GetTag(arg1 string) (*gitea.Tag, error) {
fake.getTagMutex.Lock() fake.getTagMutex.Lock()
ret, specificReturn := fake.getTagReturnsOnCall[len(fake.getTagArgsForCall)] ret, specificReturn := fake.getTagReturnsOnCall[len(fake.getTagArgsForCall)]
@@ -552,69 +466,6 @@ func (fake *FakeGitea) UpdateReleaseReturnsOnCall(i int, result1 *gitea.Release,
}{result1, result2} }{result1, result2}
} }
func (fake *FakeGitea) UploadProjectFile(arg1 string) (*gitea.ProjectFile, error) {
fake.uploadProjectFileMutex.Lock()
ret, specificReturn := fake.uploadProjectFileReturnsOnCall[len(fake.uploadProjectFileArgsForCall)]
fake.uploadProjectFileArgsForCall = append(fake.uploadProjectFileArgsForCall, struct {
arg1 string
}{arg1})
fake.recordInvocation("UploadProjectFile", []interface{}{arg1})
fake.uploadProjectFileMutex.Unlock()
if fake.UploadProjectFileStub != nil {
return fake.UploadProjectFileStub(arg1)
}
if specificReturn {
return ret.result1, ret.result2
}
fakeReturns := fake.uploadProjectFileReturns
return fakeReturns.result1, fakeReturns.result2
}
func (fake *FakeGitea) UploadProjectFileCallCount() int {
fake.uploadProjectFileMutex.RLock()
defer fake.uploadProjectFileMutex.RUnlock()
return len(fake.uploadProjectFileArgsForCall)
}
func (fake *FakeGitea) UploadProjectFileCalls(stub func(string) (*gitea.ProjectFile, error)) {
fake.uploadProjectFileMutex.Lock()
defer fake.uploadProjectFileMutex.Unlock()
fake.UploadProjectFileStub = stub
}
func (fake *FakeGitea) UploadProjectFileArgsForCall(i int) string {
fake.uploadProjectFileMutex.RLock()
defer fake.uploadProjectFileMutex.RUnlock()
argsForCall := fake.uploadProjectFileArgsForCall[i]
return argsForCall.arg1
}
func (fake *FakeGitea) UploadProjectFileReturns(result1 *gitea.ProjectFile, result2 error) {
fake.uploadProjectFileMutex.Lock()
defer fake.uploadProjectFileMutex.Unlock()
fake.UploadProjectFileStub = nil
fake.uploadProjectFileReturns = struct {
result1 *gitea.ProjectFile
result2 error
}{result1, result2}
}
func (fake *FakeGitea) UploadProjectFileReturnsOnCall(i int, result1 *gitea.ProjectFile, result2 error) {
fake.uploadProjectFileMutex.Lock()
defer fake.uploadProjectFileMutex.Unlock()
fake.UploadProjectFileStub = nil
if fake.uploadProjectFileReturnsOnCall == nil {
fake.uploadProjectFileReturnsOnCall = make(map[int]struct {
result1 *gitea.ProjectFile
result2 error
})
}
fake.uploadProjectFileReturnsOnCall[i] = struct {
result1 *gitea.ProjectFile
result2 error
}{result1, result2}
}
func (fake *FakeGitea) Invocations() map[string][][]interface{} { func (fake *FakeGitea) Invocations() map[string][][]interface{} {
fake.invocationsMutex.RLock() fake.invocationsMutex.RLock()
defer fake.invocationsMutex.RUnlock() defer fake.invocationsMutex.RUnlock()
@@ -622,8 +473,6 @@ func (fake *FakeGitea) Invocations() map[string][][]interface{} {
defer fake.createReleaseMutex.RUnlock() defer fake.createReleaseMutex.RUnlock()
fake.createTagMutex.RLock() fake.createTagMutex.RLock()
defer fake.createTagMutex.RUnlock() defer fake.createTagMutex.RUnlock()
fake.downloadProjectFileMutex.RLock()
defer fake.downloadProjectFileMutex.RUnlock()
fake.getTagMutex.RLock() fake.getTagMutex.RLock()
defer fake.getTagMutex.RUnlock() defer fake.getTagMutex.RUnlock()
fake.listTagsMutex.RLock() fake.listTagsMutex.RLock()
@@ -632,8 +481,6 @@ func (fake *FakeGitea) Invocations() map[string][][]interface{} {
defer fake.listTagsUntilMutex.RUnlock() defer fake.listTagsUntilMutex.RUnlock()
fake.updateReleaseMutex.RLock() fake.updateReleaseMutex.RLock()
defer fake.updateReleaseMutex.RUnlock() defer fake.updateReleaseMutex.RUnlock()
fake.uploadProjectFileMutex.RLock()
defer fake.uploadProjectFileMutex.RUnlock()
copiedInvocations := map[string][][]interface{}{} copiedInvocations := map[string][][]interface{}{}
for key, value := range fake.invocations { for key, value := range fake.invocations {
copiedInvocations[key] = value copiedInvocations[key] = value

View File

@@ -3,22 +3,16 @@ package resource
import ( import (
"crypto/tls" "crypto/tls"
"errors" "errors"
"fmt"
"io"
"net/http" "net/http"
"net/url" "net/url"
"os"
"path/filepath"
"strings"
"golang.org/x/oauth2" "golang.org/x/oauth2"
"context" "context"
"code.gitea.io/sdk/gitea" "code.gitea.io/sdk/gitea"
) )
//go:generate counterfeiter . Gitea
type Gitea interface { type Gitea interface {
ListTags() ([]*gitea.Tag, error) ListTags() ([]*gitea.Tag, error)
@@ -27,8 +21,6 @@ type Gitea interface {
CreateTag(tag_name string, ref string) (*gitea.Tag, error) CreateTag(tag_name string, ref string) (*gitea.Tag, error)
CreateRelease(tag_name string, description string) (*gitea.Release, error) CreateRelease(tag_name string, description string) (*gitea.Release, error)
UpdateRelease(tag_name string, description string) (*gitea.Release, error) UpdateRelease(tag_name string, description string) (*gitea.Release, error)
UploadProjectFile(file string) (*gitea.ProjectFile, error)
DownloadProjectFile(url, file string) error
} }
type GiteaClient struct { type GiteaClient struct {
@@ -42,6 +34,11 @@ func NewGiteaClient(source Source) (*GiteaClient, error) {
var httpClient = &http.Client{} var httpClient = &http.Client{}
var ctx = context.TODO() var ctx = context.TODO()
baseUrl, err := url.Parse(source.GiteaAPIURL)
if err != nil {
return nil, err
}
if source.Insecure { if source.Insecure {
httpClient.Transport = &http.Transport{ httpClient.Transport = &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
@@ -49,15 +46,9 @@ func NewGiteaClient(source Source) (*GiteaClient, error) {
ctx = context.WithValue(ctx, oauth2.HTTPClient, httpClient) ctx = context.WithValue(ctx, oauth2.HTTPClient, httpClient)
} }
client := gitea.NewClient(httpClient, source.AccessToken) client, err := gitea.NewClient(baseUrl.String(), gitea.SetHTTPClient(httpClient), gitea.SetToken(source.AccessToken))
if err != nil {
if source.GiteaAPIURL != "" { return nil, err
var err error
baseUrl, err := url.Parse(source.GiteaAPIURL)
if err != nil {
return nil, err
}
client.SetBaseURL(baseUrl.String())
} }
return &GiteaClient{ return &GiteaClient{
@@ -242,64 +233,3 @@ func (g *GiteaClient) UpdateRelease(tag_name string, description string) (*gitea
return release, nil return release, nil
} }
func (g *GiteaClient) UploadProjectFile(file string) (*gitea.ProjectFile, error) {
projectFile, res, err := g.client.Projects.UploadFile(g.repository, file)
if err != nil {
return &gitea.ProjectFile{}, err
}
err = res.Body.Close()
if err != nil {
return nil, err
}
return projectFile, nil
}
func (g *GiteaClient) DownloadProjectFile(filePath, destPath string) error {
out, err := os.Create(destPath)
if err != nil {
return err
}
defer out.Close()
// e.g. (group/project) + (/uploads/hash/filename)
filePathRef, err := url.Parse(g.repository + filePath)
if err != nil {
return err
}
// e.g. (https://gitea-instance/api/v4) + (/group/project/uploads/hash/filename)
projectFileUrl := g.client.BaseURL().ResolveReference(filePathRef)
// https://gitea.com/gitea-org/gitea-ce/issues/51447
nonApiUrl := strings.Replace(projectFileUrl.String(), "/api/v4", "", 1)
projectFileUrl, err = url.Parse(nonApiUrl)
if err != nil {
return err
}
client := &http.Client{}
req, err := http.NewRequest("GET", projectFileUrl.String(), nil)
if err != nil {
return err
}
req.Header.Add("Private-Token", g.accessToken)
resp, err := client.Do(req)
if err != nil {
return err
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
return fmt.Errorf("failed to download file `%s`: HTTP status %d", filepath.Base(destPath), resp.StatusCode)
}
_, err = io.Copy(out, resp.Body)
if err != nil {
return err
}
return nil
}

View File

@@ -12,7 +12,7 @@ import (
) )
type InCommand struct { type InCommand struct {
gitea Gitea gitea Gitea
writer io.Writer writer io.Writer
} }
@@ -23,7 +23,7 @@ type attachment struct {
func NewInCommand(gitea Gitea, writer io.Writer) *InCommand { func NewInCommand(gitea Gitea, writer io.Writer) *InCommand {
return &InCommand{ return &InCommand{
gitea: gitea, gitea: gitea,
writer: writer, writer: writer,
} }
} }
@@ -108,7 +108,7 @@ func (c *InCommand) Run(destDir string, request InRequest) (InResponse, error) {
continue continue
} }
err := c.gitea.DownloadProjectFile(attachment.URL, path) err := gitea.GetReleaseAttachment(attachment.URL, path)
if err != nil { if err != nil {
return InResponse{}, err return InResponse{}, err
} }

View File

@@ -43,8 +43,6 @@ var _ = Describe("In Command", func() {
destDir = filepath.Join(tmpDir, "destination") destDir = filepath.Join(tmpDir, "destination")
giteaClient.DownloadProjectFileReturns(nil)
inRequest = resource.InRequest{} inRequest = resource.InRequest{}
}) })
@@ -105,19 +103,6 @@ var _ = Describe("In Command", func() {
Ω(giteaClient.GetTagArgsForCall(0)).Should(Equal("v0.35.0")) Ω(giteaClient.GetTagArgsForCall(0)).Should(Equal("v0.35.0"))
}) })
It("downloads only the files that match the globs", func() {
inResponse, inErr = command.Run(destDir, inRequest)
Expect(giteaClient.DownloadProjectFileCallCount()).To(Equal(2))
arg1, arg2 := giteaClient.DownloadProjectFileArgsForCall(0)
Ω(arg1).Should(Equal("example.txt"))
Ω(arg2).Should(Equal("path"))
arg1, arg2 = giteaClient.DownloadProjectFileArgsForCall(1)
Ω(arg1).Should(Equal("example.rtf"))
Ω(arg2).Should(Equal("path"))
})
It("does create the body, tag and version files", func() { It("does create the body, tag and version files", func() {
inResponse, inErr = command.Run(destDir, inRequest) inResponse, inErr = command.Run(destDir, inRequest)
@@ -192,30 +177,6 @@ var _ = Describe("In Command", func() {
)) ))
}) })
It("downloads all of the files", func() {
arg1, arg2 := giteaClient.DownloadProjectFileArgsForCall(0)
Ω(arg1).Should(Equal("example.txt"))
Ω(arg2).Should(Equal("path"))
arg1, arg2 = giteaClient.DownloadProjectFileArgsForCall(1)
Ω(arg1).Should(Equal("example.rtf"))
Ω(arg2).Should(Equal("path"))
arg1, arg2 = giteaClient.DownloadProjectFileArgsForCall(2)
Ω(arg1).Should(Equal("example.rtf"))
Ω(arg2).Should(Equal("path"))
})
})
Context("when downloading an asset fails", func() {
BeforeEach(func() {
giteaClient.DownloadProjectFileReturns(errors.New("not this time"))
inResponse, inErr = command.Run(destDir, inRequest)
})
It("returns an error", func() {
Ω(inErr).Should(HaveOccurred())
})
}) })
}) })
}) })

View File

@@ -2,7 +2,7 @@ package resource
import "code.gitea.io/sdk/gitea" import "code.gitea.io/sdk/gitea"
func metadataFromTag(tag *gitlab.Tag) []MetadataPair { func metadataFromTag(tag *gitea.Tag) []MetadataPair {
metadata := []MetadataPair{} metadata := []MetadataPair{}
if tag.Name != "" { if tag.Name != "" {

View File

@@ -7,6 +7,8 @@ import (
"io/ioutil" "io/ioutil"
"path/filepath" "path/filepath"
"strings" "strings"
"code.gitea.io/sdk/gitea"
) )
type OutCommand struct { type OutCommand struct {
@@ -83,7 +85,7 @@ func (c *OutCommand) Run(sourceDir string, request OutRequest) (OutResponse, err
} }
for _, filePath := range matches { for _, filePath := range matches {
projectFile, err := c.gitea.UploadProjectFile(filePath) projectFile, err := gitea.CreateReleaseAttachment(filePath)
if err != nil { if err != nil {
return OutResponse{}, err return OutResponse{}, err
} }