clean up pointerisms, fix building real client
google github library returns *Foo in singular case and []Foo if there are many results. seems like the best approach is to pass them around by-value, since *Foo seems to only be so that they can return 'nil' instead of a zero-value.
This commit is contained in:
@@ -14,14 +14,14 @@ type FakeGitHub struct {
|
||||
ListReleasesStub func() ([]github.RepositoryRelease, error)
|
||||
listReleasesMutex sync.RWMutex
|
||||
listReleasesArgsForCall []struct{}
|
||||
listReleasesReturns struct {
|
||||
listReleasesReturns struct {
|
||||
result1 []github.RepositoryRelease
|
||||
result2 error
|
||||
}
|
||||
LatestReleaseStub func() (*github.RepositoryRelease, error)
|
||||
latestReleaseMutex sync.RWMutex
|
||||
latestReleaseArgsForCall []struct{}
|
||||
latestReleaseReturns struct {
|
||||
latestReleaseReturns struct {
|
||||
result1 *github.RepositoryRelease
|
||||
result2 error
|
||||
}
|
||||
@@ -34,19 +34,19 @@ type FakeGitHub struct {
|
||||
result1 *github.RepositoryRelease
|
||||
result2 error
|
||||
}
|
||||
CreateReleaseStub func(release *github.RepositoryRelease) (*github.RepositoryRelease, error)
|
||||
CreateReleaseStub func(release github.RepositoryRelease) (*github.RepositoryRelease, error)
|
||||
createReleaseMutex sync.RWMutex
|
||||
createReleaseArgsForCall []struct {
|
||||
release *github.RepositoryRelease
|
||||
release github.RepositoryRelease
|
||||
}
|
||||
createReleaseReturns struct {
|
||||
result1 *github.RepositoryRelease
|
||||
result2 error
|
||||
}
|
||||
UpdateReleaseStub func(release *github.RepositoryRelease) (*github.RepositoryRelease, error)
|
||||
UpdateReleaseStub func(release github.RepositoryRelease) (*github.RepositoryRelease, error)
|
||||
updateReleaseMutex sync.RWMutex
|
||||
updateReleaseArgsForCall []struct {
|
||||
release *github.RepositoryRelease
|
||||
release github.RepositoryRelease
|
||||
}
|
||||
updateReleaseReturns struct {
|
||||
result1 *github.RepositoryRelease
|
||||
@@ -61,10 +61,10 @@ type FakeGitHub struct {
|
||||
result1 []github.ReleaseAsset
|
||||
result2 error
|
||||
}
|
||||
UploadReleaseAssetStub func(release *github.RepositoryRelease, name string, file *os.File) error
|
||||
UploadReleaseAssetStub func(release github.RepositoryRelease, name string, file *os.File) error
|
||||
uploadReleaseAssetMutex sync.RWMutex
|
||||
uploadReleaseAssetArgsForCall []struct {
|
||||
release *github.RepositoryRelease
|
||||
release github.RepositoryRelease
|
||||
name string
|
||||
file *os.File
|
||||
}
|
||||
@@ -79,10 +79,10 @@ type FakeGitHub struct {
|
||||
deleteReleaseAssetReturns struct {
|
||||
result1 error
|
||||
}
|
||||
DownloadReleaseAssetStub func(asset *github.ReleaseAsset) (io.ReadCloser, error)
|
||||
DownloadReleaseAssetStub func(asset github.ReleaseAsset) (io.ReadCloser, error)
|
||||
downloadReleaseAssetMutex sync.RWMutex
|
||||
downloadReleaseAssetArgsForCall []struct {
|
||||
asset *github.ReleaseAsset
|
||||
asset github.ReleaseAsset
|
||||
}
|
||||
downloadReleaseAssetReturns struct {
|
||||
result1 io.ReadCloser
|
||||
@@ -173,10 +173,10 @@ func (fake *FakeGitHub) GetReleaseByTagReturns(result1 *github.RepositoryRelease
|
||||
}{result1, result2}
|
||||
}
|
||||
|
||||
func (fake *FakeGitHub) CreateRelease(release *github.RepositoryRelease) (*github.RepositoryRelease, error) {
|
||||
func (fake *FakeGitHub) CreateRelease(release github.RepositoryRelease) (*github.RepositoryRelease, error) {
|
||||
fake.createReleaseMutex.Lock()
|
||||
fake.createReleaseArgsForCall = append(fake.createReleaseArgsForCall, struct {
|
||||
release *github.RepositoryRelease
|
||||
release github.RepositoryRelease
|
||||
}{release})
|
||||
fake.createReleaseMutex.Unlock()
|
||||
if fake.CreateReleaseStub != nil {
|
||||
@@ -192,7 +192,7 @@ func (fake *FakeGitHub) CreateReleaseCallCount() int {
|
||||
return len(fake.createReleaseArgsForCall)
|
||||
}
|
||||
|
||||
func (fake *FakeGitHub) CreateReleaseArgsForCall(i int) *github.RepositoryRelease {
|
||||
func (fake *FakeGitHub) CreateReleaseArgsForCall(i int) github.RepositoryRelease {
|
||||
fake.createReleaseMutex.RLock()
|
||||
defer fake.createReleaseMutex.RUnlock()
|
||||
return fake.createReleaseArgsForCall[i].release
|
||||
@@ -206,10 +206,10 @@ func (fake *FakeGitHub) CreateReleaseReturns(result1 *github.RepositoryRelease,
|
||||
}{result1, result2}
|
||||
}
|
||||
|
||||
func (fake *FakeGitHub) UpdateRelease(release *github.RepositoryRelease) (*github.RepositoryRelease, error) {
|
||||
func (fake *FakeGitHub) UpdateRelease(release github.RepositoryRelease) (*github.RepositoryRelease, error) {
|
||||
fake.updateReleaseMutex.Lock()
|
||||
fake.updateReleaseArgsForCall = append(fake.updateReleaseArgsForCall, struct {
|
||||
release *github.RepositoryRelease
|
||||
release github.RepositoryRelease
|
||||
}{release})
|
||||
fake.updateReleaseMutex.Unlock()
|
||||
if fake.UpdateReleaseStub != nil {
|
||||
@@ -225,7 +225,7 @@ func (fake *FakeGitHub) UpdateReleaseCallCount() int {
|
||||
return len(fake.updateReleaseArgsForCall)
|
||||
}
|
||||
|
||||
func (fake *FakeGitHub) UpdateReleaseArgsForCall(i int) *github.RepositoryRelease {
|
||||
func (fake *FakeGitHub) UpdateReleaseArgsForCall(i int) github.RepositoryRelease {
|
||||
fake.updateReleaseMutex.RLock()
|
||||
defer fake.updateReleaseMutex.RUnlock()
|
||||
return fake.updateReleaseArgsForCall[i].release
|
||||
@@ -272,10 +272,10 @@ func (fake *FakeGitHub) ListReleaseAssetsReturns(result1 []github.ReleaseAsset,
|
||||
}{result1, result2}
|
||||
}
|
||||
|
||||
func (fake *FakeGitHub) UploadReleaseAsset(release *github.RepositoryRelease, name string, file *os.File) error {
|
||||
func (fake *FakeGitHub) UploadReleaseAsset(release github.RepositoryRelease, name string, file *os.File) error {
|
||||
fake.uploadReleaseAssetMutex.Lock()
|
||||
fake.uploadReleaseAssetArgsForCall = append(fake.uploadReleaseAssetArgsForCall, struct {
|
||||
release *github.RepositoryRelease
|
||||
release github.RepositoryRelease
|
||||
name string
|
||||
file *os.File
|
||||
}{release, name, file})
|
||||
@@ -293,7 +293,7 @@ func (fake *FakeGitHub) UploadReleaseAssetCallCount() int {
|
||||
return len(fake.uploadReleaseAssetArgsForCall)
|
||||
}
|
||||
|
||||
func (fake *FakeGitHub) UploadReleaseAssetArgsForCall(i int) (*github.RepositoryRelease, string, *os.File) {
|
||||
func (fake *FakeGitHub) UploadReleaseAssetArgsForCall(i int) (github.RepositoryRelease, string, *os.File) {
|
||||
fake.uploadReleaseAssetMutex.RLock()
|
||||
defer fake.uploadReleaseAssetMutex.RUnlock()
|
||||
return fake.uploadReleaseAssetArgsForCall[i].release, fake.uploadReleaseAssetArgsForCall[i].name, fake.uploadReleaseAssetArgsForCall[i].file
|
||||
@@ -338,10 +338,10 @@ func (fake *FakeGitHub) DeleteReleaseAssetReturns(result1 error) {
|
||||
}{result1}
|
||||
}
|
||||
|
||||
func (fake *FakeGitHub) DownloadReleaseAsset(asset *github.ReleaseAsset) (io.ReadCloser, error) {
|
||||
func (fake *FakeGitHub) DownloadReleaseAsset(asset github.ReleaseAsset) (io.ReadCloser, error) {
|
||||
fake.downloadReleaseAssetMutex.Lock()
|
||||
fake.downloadReleaseAssetArgsForCall = append(fake.downloadReleaseAssetArgsForCall, struct {
|
||||
asset *github.ReleaseAsset
|
||||
asset github.ReleaseAsset
|
||||
}{asset})
|
||||
fake.downloadReleaseAssetMutex.Unlock()
|
||||
if fake.DownloadReleaseAssetStub != nil {
|
||||
@@ -357,7 +357,7 @@ func (fake *FakeGitHub) DownloadReleaseAssetCallCount() int {
|
||||
return len(fake.downloadReleaseAssetArgsForCall)
|
||||
}
|
||||
|
||||
func (fake *FakeGitHub) DownloadReleaseAssetArgsForCall(i int) *github.ReleaseAsset {
|
||||
func (fake *FakeGitHub) DownloadReleaseAssetArgsForCall(i int) github.ReleaseAsset {
|
||||
fake.downloadReleaseAssetMutex.RLock()
|
||||
defer fake.downloadReleaseAssetMutex.RUnlock()
|
||||
return fake.downloadReleaseAssetArgsForCall[i].asset
|
||||
|
20
github.go
20
github.go
@@ -17,13 +17,13 @@ type GitHub interface {
|
||||
ListReleases() ([]github.RepositoryRelease, error)
|
||||
LatestRelease() (*github.RepositoryRelease, error)
|
||||
GetReleaseByTag(tag string) (*github.RepositoryRelease, error)
|
||||
CreateRelease(release *github.RepositoryRelease) (*github.RepositoryRelease, error)
|
||||
UpdateRelease(release *github.RepositoryRelease) (*github.RepositoryRelease, error)
|
||||
CreateRelease(release github.RepositoryRelease) (*github.RepositoryRelease, error)
|
||||
UpdateRelease(release github.RepositoryRelease) (*github.RepositoryRelease, error)
|
||||
|
||||
ListReleaseAssets(release github.RepositoryRelease) ([]github.ReleaseAsset, error)
|
||||
UploadReleaseAsset(release *github.RepositoryRelease, name string, file *os.File) error
|
||||
UploadReleaseAsset(release github.RepositoryRelease, name string, file *os.File) error
|
||||
DeleteReleaseAsset(asset github.ReleaseAsset) error
|
||||
DownloadReleaseAsset(asset *github.ReleaseAsset) (io.ReadCloser, error)
|
||||
DownloadReleaseAsset(asset github.ReleaseAsset) (io.ReadCloser, error)
|
||||
}
|
||||
|
||||
type GitHubClient struct {
|
||||
@@ -105,8 +105,8 @@ func (g *GitHubClient) GetReleaseByTag(tag string) (*github.RepositoryRelease, e
|
||||
return release, nil
|
||||
}
|
||||
|
||||
func (g *GitHubClient) CreateRelease(release *github.RepositoryRelease) (*github.RepositoryRelease, error) {
|
||||
createdRelease, res, err := g.client.Repositories.CreateRelease(g.user, g.repository, release)
|
||||
func (g *GitHubClient) CreateRelease(release github.RepositoryRelease) (*github.RepositoryRelease, error) {
|
||||
createdRelease, res, err := g.client.Repositories.CreateRelease(g.user, g.repository, &release)
|
||||
if err != nil {
|
||||
return &github.RepositoryRelease{}, err
|
||||
}
|
||||
@@ -119,12 +119,12 @@ func (g *GitHubClient) CreateRelease(release *github.RepositoryRelease) (*github
|
||||
return createdRelease, nil
|
||||
}
|
||||
|
||||
func (g *GitHubClient) UpdateRelease(release *github.RepositoryRelease) (*github.RepositoryRelease, error) {
|
||||
func (g *GitHubClient) UpdateRelease(release github.RepositoryRelease) (*github.RepositoryRelease, error) {
|
||||
if release.ID == nil {
|
||||
return nil, errors.New("release did not have an ID: has it been saved yet?")
|
||||
}
|
||||
|
||||
updatedRelease, res, err := g.client.Repositories.EditRelease(g.user, g.repository, *release.ID, release)
|
||||
updatedRelease, res, err := g.client.Repositories.EditRelease(g.user, g.repository, *release.ID, &release)
|
||||
if err != nil {
|
||||
return &github.RepositoryRelease{}, err
|
||||
}
|
||||
@@ -137,7 +137,7 @@ func (g *GitHubClient) UpdateRelease(release *github.RepositoryRelease) (*github
|
||||
return updatedRelease, nil
|
||||
}
|
||||
|
||||
func (g *GitHubClient) ListReleaseAssets(release *github.RepositoryRelease) ([]github.ReleaseAsset, error) {
|
||||
func (g *GitHubClient) ListReleaseAssets(release github.RepositoryRelease) ([]github.ReleaseAsset, error) {
|
||||
assets, res, err := g.client.Repositories.ListReleaseAssets(g.user, g.repository, *release.ID, nil)
|
||||
if err != nil {
|
||||
return []github.ReleaseAsset{}, nil
|
||||
@@ -151,7 +151,7 @@ func (g *GitHubClient) ListReleaseAssets(release *github.RepositoryRelease) ([]g
|
||||
return assets, nil
|
||||
}
|
||||
|
||||
func (g *GitHubClient) UploadReleaseAsset(release *github.RepositoryRelease, name string, file *os.File) error {
|
||||
func (g *GitHubClient) UploadReleaseAsset(release github.RepositoryRelease, name string, file *os.File) error {
|
||||
_, res, err := g.client.Repositories.UploadReleaseAsset(
|
||||
g.user,
|
||||
g.repository,
|
||||
|
@@ -95,8 +95,7 @@ func (c *InCommand) Run(destDir string, request InRequest) (InResponse, error) {
|
||||
|
||||
fmt.Fprintf(c.writer, "downloading asset: %s\n", *asset.Name)
|
||||
|
||||
assetToDownload := asset
|
||||
err := c.downloadFile(&assetToDownload, path)
|
||||
err := c.downloadFile(asset, path)
|
||||
if err != nil {
|
||||
return InResponse{}, err
|
||||
}
|
||||
@@ -110,7 +109,7 @@ func (c *InCommand) Run(destDir string, request InRequest) (InResponse, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *InCommand) downloadFile(asset *github.ReleaseAsset, destPath string) error {
|
||||
func (c *InCommand) downloadFile(asset github.ReleaseAsset, destPath string) error {
|
||||
out, err := os.Create(destPath)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@@ -109,8 +109,8 @@ var _ = Describe("In Command", func() {
|
||||
})
|
||||
|
||||
It("downloads only the files that match the globs", func() {
|
||||
Ω(*githubClient.DownloadReleaseAssetArgsForCall(0)).Should(Equal(buildAsset(0, "example.txt")))
|
||||
Ω(*githubClient.DownloadReleaseAssetArgsForCall(1)).Should(Equal(buildAsset(1, "example.rtf")))
|
||||
Ω(githubClient.DownloadReleaseAssetArgsForCall(0)).Should(Equal(buildAsset(0, "example.txt")))
|
||||
Ω(githubClient.DownloadReleaseAssetArgsForCall(1)).Should(Equal(buildAsset(1, "example.rtf")))
|
||||
})
|
||||
})
|
||||
|
||||
@@ -151,9 +151,9 @@ var _ = Describe("In Command", func() {
|
||||
})
|
||||
|
||||
It("downloads all of the files", func() {
|
||||
Ω(*githubClient.DownloadReleaseAssetArgsForCall(0)).Should(Equal(buildAsset(0, "example.txt")))
|
||||
Ω(*githubClient.DownloadReleaseAssetArgsForCall(1)).Should(Equal(buildAsset(1, "example.rtf")))
|
||||
Ω(*githubClient.DownloadReleaseAssetArgsForCall(2)).Should(Equal(buildAsset(2, "example.wtf")))
|
||||
Ω(githubClient.DownloadReleaseAssetArgsForCall(0)).Should(Equal(buildAsset(0, "example.txt")))
|
||||
Ω(githubClient.DownloadReleaseAssetArgsForCall(1)).Should(Equal(buildAsset(1, "example.rtf")))
|
||||
Ω(githubClient.DownloadReleaseAssetArgsForCall(2)).Should(Equal(buildAsset(2, "example.wtf")))
|
||||
})
|
||||
})
|
||||
|
||||
@@ -232,7 +232,7 @@ var _ = Describe("In Command", func() {
|
||||
})
|
||||
|
||||
It("fetches from the latest release", func() {
|
||||
Ω(*githubClient.DownloadReleaseAssetArgsForCall(0)).Should(Equal(buildAsset(0, "something.tgz")))
|
||||
Ω(githubClient.DownloadReleaseAssetArgsForCall(0)).Should(Equal(buildAsset(0, "something.tgz")))
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@@ -88,10 +88,10 @@ func (c *OutCommand) Run(sourceDir string, request OutRequest) (OutResponse, err
|
||||
|
||||
fmt.Fprintf(c.writer, "updating release %s\n", name)
|
||||
|
||||
release, err = c.github.UpdateRelease(existingRelease)
|
||||
release, err = c.github.UpdateRelease(*existingRelease)
|
||||
} else {
|
||||
fmt.Fprintf(c.writer, "creating release %s\n", name)
|
||||
release, err = c.github.CreateRelease(release)
|
||||
release, err = c.github.CreateRelease(*release)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
@@ -117,7 +117,7 @@ func (c *OutCommand) Run(sourceDir string, request OutRequest) (OutResponse, err
|
||||
fmt.Fprintf(c.writer, "uploading %s\n", filePath)
|
||||
|
||||
name := filepath.Base(filePath)
|
||||
err = c.github.UploadReleaseAsset(release, name, file)
|
||||
err = c.github.UploadReleaseAsset(*release, name, file)
|
||||
if err != nil {
|
||||
return OutResponse{}, err
|
||||
}
|
||||
|
@@ -38,8 +38,8 @@ var _ = Describe("Out Command", func() {
|
||||
sourcesDir, err = ioutil.TempDir("", "github-release")
|
||||
Ω(err).ShouldNot(HaveOccurred())
|
||||
|
||||
githubClient.CreateReleaseStub = func(gh *github.RepositoryRelease) (*github.RepositoryRelease, error) {
|
||||
createdRel := *gh
|
||||
githubClient.CreateReleaseStub = func(gh github.RepositoryRelease) (*github.RepositoryRelease, error) {
|
||||
createdRel := gh
|
||||
createdRel.ID = github.Int(112)
|
||||
createdRel.HTMLURL = github.String("http://google.com")
|
||||
createdRel.Name = github.String("release-name")
|
||||
@@ -47,8 +47,8 @@ var _ = Describe("Out Command", func() {
|
||||
return &createdRel, nil
|
||||
}
|
||||
|
||||
githubClient.UpdateReleaseStub = func(gh *github.RepositoryRelease) (*github.RepositoryRelease, error) {
|
||||
return gh, nil
|
||||
githubClient.UpdateReleaseStub = func(gh github.RepositoryRelease) (*github.RepositoryRelease, error) {
|
||||
return &gh, nil
|
||||
}
|
||||
})
|
||||
|
||||
|
Reference in New Issue
Block a user