From d2c9a5e136e29ea6d0d4e17b10aece0af497724a Mon Sep 17 00:00:00 2001 From: Alex Suraci Date: Sat, 8 Aug 2015 11:22:43 -0700 Subject: [PATCH] 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. --- fakes/fake_git_hub.go | 44 +++++++++++++++++++++---------------------- github.go | 20 ++++++++++---------- in_command.go | 5 ++--- in_command_test.go | 12 ++++++------ out_command.go | 6 +++--- out_command_test.go | 8 ++++---- 6 files changed, 47 insertions(+), 48 deletions(-) diff --git a/fakes/fake_git_hub.go b/fakes/fake_git_hub.go index 1d7f67f..79e50e2 100644 --- a/fakes/fake_git_hub.go +++ b/fakes/fake_git_hub.go @@ -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 diff --git a/github.go b/github.go index ea9986b..aeddba2 100644 --- a/github.go +++ b/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, diff --git a/in_command.go b/in_command.go index 17743f9..c6840df 100644 --- a/in_command.go +++ b/in_command.go @@ -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 diff --git a/in_command_test.go b/in_command_test.go index 7d49b3f..8609ded 100644 --- a/in_command_test.go +++ b/in_command_test.go @@ -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"))) }) }) }) diff --git a/out_command.go b/out_command.go index d478de0..dd05e39 100644 --- a/out_command.go +++ b/out_command.go @@ -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 } diff --git a/out_command_test.go b/out_command_test.go index 75f1dfd..b401ca2 100644 --- a/out_command_test.go +++ b/out_command_test.go @@ -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 } })