From eaf0c23f5f2ef408fca494e5b596479ed08a037c Mon Sep 17 00:00:00 2001 From: Damian Kobylinski Date: Tue, 2 Aug 2022 14:39:59 +1200 Subject: [PATCH 1/6] Add LFS feature control for repos --- github/repos_lfs.go | 49 ++++++++++++++++++++++++++++++ github/repos_lfs_test.go | 64 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 github/repos_lfs.go create mode 100644 github/repos_lfs_test.go diff --git a/github/repos_lfs.go b/github/repos_lfs.go new file mode 100644 index 00000000000..dfc076a9a5c --- /dev/null +++ b/github/repos_lfs.go @@ -0,0 +1,49 @@ +// Copyright 2013 The go-github AUTHORS. All rights reserved. +// +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package github + +import ( + "context" + "fmt" +) + +// EnableLfs turns the LFS feature ON for selected repo. +// +// GitHub API docs: https://docs.github.com/en/rest/repos/lfs#enable-git-lfs-for-a-repository +func (s *RepositoriesService) EnableLfs(ctx context.Context, owner string, repo string) (*Response, error) { + u := fmt.Sprintf("repos/%v/%v/lfs", owner, repo) + + req, err := s.client.NewRequest("PUT", u, nil) + if err != nil { + return nil, err + } + + resp, err := s.client.Do(ctx, req, nil) + if err != nil { + return resp, err + } + + return resp, nil +} + +// DisableLfs turns the LFS feature OFF for selected repo. +// +// Github API docs: https://docs.github.com/en/rest/repos/lfs#disable-git-lfs-for-a-repository +func (s *RepositoriesService) DisableLfs(ctx context.Context, owner string, repo string) (*Response, error) { + u := fmt.Sprintf("repos/%v/%v/lfs", owner, repo) + + req, err := s.client.NewRequest("DELETE", u, nil) + if err != nil { + return nil, err + } + + resp, err := s.client.Do(ctx, req, nil) + if err != nil { + return resp, err + } + + return resp, nil +} diff --git a/github/repos_lfs_test.go b/github/repos_lfs_test.go new file mode 100644 index 00000000000..1b92fc18ccf --- /dev/null +++ b/github/repos_lfs_test.go @@ -0,0 +1,64 @@ +// Copyright 2013 The go-github AUTHORS. All rights reserved. +// +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package github + +import ( + "context" + "net/http" + "testing" +) + +func TestRepositoriesService_EnableLfs(t *testing.T) { + client, mux, _, teardown := setup() + defer teardown() + + mux.HandleFunc("/repos/o/r/lfs", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "PUT") + + w.WriteHeader(http.StatusNoContent) + }) + + ctx := context.Background() + if _, err := client.Repositories.EnableLfs(ctx, "o", "r"); err != nil { + t.Errorf("Repositories.EnableLfs returned error: %v", err) + } + + const methodName = "EnableLfs" + testBadOptions(t, methodName, func() (err error) { + _, err = client.Repositories.EnableLfs(ctx, "\n", "\n") + return err + }) + + testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { + return client.Repositories.EnableLfs(ctx, "o", "r") + }) +} + +func TestRepositoriesService_DisableLfs(t *testing.T) { + client, mux, _, teardown := setup() + defer teardown() + + mux.HandleFunc("/repos/o/r/lfs", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "DELETE") + + w.WriteHeader(http.StatusNoContent) + }) + + ctx := context.Background() + if _, err := client.Repositories.DisableLfs(ctx, "o", "r"); err != nil { + t.Errorf("Repositories.DisableLfs returned error: %v", err) + } + + const methodName = "DisableLfs" + testBadOptions(t, methodName, func() (err error) { + _, err = client.Repositories.DisableLfs(ctx, "\n", "\n") + return err + }) + + testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { + return client.Repositories.DisableLfs(ctx, "o", "r") + }) +} From 7f3e0a13eaa0011585f5062994914d10ec82c07b Mon Sep 17 00:00:00 2001 From: Damian Kobylinski Date: Tue, 2 Aug 2022 14:56:55 +1200 Subject: [PATCH 2/6] Update for local testing --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 4c29e19843b..50eef86c9fd 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/google/go-github/v45 +module github.com/dsm-kb/go-github/v45 require ( github.com/google/go-cmp v0.5.8 From a14e43ee050a3cd0d648e112c9b38db27eeda2be Mon Sep 17 00:00:00 2001 From: Damian Kobylinski Date: Tue, 2 Aug 2022 14:58:53 +1200 Subject: [PATCH 3/6] Revert to google --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 50eef86c9fd..4c29e19843b 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/dsm-kb/go-github/v45 +module github.com/google/go-github/v45 require ( github.com/google/go-cmp v0.5.8 From ecb1ef5d4a3c5e12a71849ce0be2d91af8faa9f2 Mon Sep 17 00:00:00 2001 From: Damian Kobylinski Date: Wed, 3 Aug 2022 13:21:53 +1200 Subject: [PATCH 4/6] Adding suggestions from gmlewis --- github/repos_lfs.go | 10 +++++----- github/repos_lfs_test.go | 26 +++++++++++++------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/github/repos_lfs.go b/github/repos_lfs.go index dfc076a9a5c..fe9db84f7ed 100644 --- a/github/repos_lfs.go +++ b/github/repos_lfs.go @@ -1,4 +1,4 @@ -// Copyright 2013 The go-github AUTHORS. All rights reserved. +// Copyright 2022 The go-github AUTHORS. All rights reserved. // // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. @@ -10,10 +10,10 @@ import ( "fmt" ) -// EnableLfs turns the LFS feature ON for selected repo. +// EnableLFS turns the LFS (Large File Storage) feature ON for the selected repo. // // GitHub API docs: https://docs.github.com/en/rest/repos/lfs#enable-git-lfs-for-a-repository -func (s *RepositoriesService) EnableLfs(ctx context.Context, owner string, repo string) (*Response, error) { +func (s *RepositoriesService) EnableLFS(ctx context.Context, owner string, repo string) (*Response, error) { u := fmt.Sprintf("repos/%v/%v/lfs", owner, repo) req, err := s.client.NewRequest("PUT", u, nil) @@ -29,10 +29,10 @@ func (s *RepositoriesService) EnableLfs(ctx context.Context, owner string, repo return resp, nil } -// DisableLfs turns the LFS feature OFF for selected repo. +// DisableLFS turns the LFS (Large File Storage) feature OFF for the selected repo // // Github API docs: https://docs.github.com/en/rest/repos/lfs#disable-git-lfs-for-a-repository -func (s *RepositoriesService) DisableLfs(ctx context.Context, owner string, repo string) (*Response, error) { +func (s *RepositoriesService) DisableLFS(ctx context.Context, owner string, repo string) (*Response, error) { u := fmt.Sprintf("repos/%v/%v/lfs", owner, repo) req, err := s.client.NewRequest("DELETE", u, nil) diff --git a/github/repos_lfs_test.go b/github/repos_lfs_test.go index 1b92fc18ccf..f171b6e36af 100644 --- a/github/repos_lfs_test.go +++ b/github/repos_lfs_test.go @@ -1,4 +1,4 @@ -// Copyright 2013 The go-github AUTHORS. All rights reserved. +// Copyright 2022 The go-github AUTHORS. All rights reserved. // // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. @@ -11,7 +11,7 @@ import ( "testing" ) -func TestRepositoriesService_EnableLfs(t *testing.T) { +func TestRepositoriesService_EnableLFS(t *testing.T) { client, mux, _, teardown := setup() defer teardown() @@ -22,22 +22,22 @@ func TestRepositoriesService_EnableLfs(t *testing.T) { }) ctx := context.Background() - if _, err := client.Repositories.EnableLfs(ctx, "o", "r"); err != nil { - t.Errorf("Repositories.EnableLfs returned error: %v", err) + if _, err := client.Repositories.EnableLFS(ctx, "o", "r"); err != nil { + t.Errorf("Repositories.EnableLFS returned error: %v", err) } - const methodName = "EnableLfs" + const methodName = "EnableLFS" testBadOptions(t, methodName, func() (err error) { - _, err = client.Repositories.EnableLfs(ctx, "\n", "\n") + _, err = client.Repositories.EnableLFS(ctx, "\n", "\n") return err }) testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { - return client.Repositories.EnableLfs(ctx, "o", "r") + return client.Repositories.EnableLFS(ctx, "o", "r") }) } -func TestRepositoriesService_DisableLfs(t *testing.T) { +func TestRepositoriesService_DisableLFS(t *testing.T) { client, mux, _, teardown := setup() defer teardown() @@ -48,17 +48,17 @@ func TestRepositoriesService_DisableLfs(t *testing.T) { }) ctx := context.Background() - if _, err := client.Repositories.DisableLfs(ctx, "o", "r"); err != nil { - t.Errorf("Repositories.DisableLfs returned error: %v", err) + if _, err := client.Repositories.DisableLFS(ctx, "o", "r"); err != nil { + t.Errorf("Repositories.DisableLFS returned error: %v", err) } - const methodName = "DisableLfs" + const methodName = "DisableLFS" testBadOptions(t, methodName, func() (err error) { - _, err = client.Repositories.DisableLfs(ctx, "\n", "\n") + _, err = client.Repositories.DisableLFS(ctx, "\n", "\n") return err }) testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { - return client.Repositories.DisableLfs(ctx, "o", "r") + return client.Repositories.DisableLFS(ctx, "o", "r") }) } From ba0331091147d2ed7667c3f63d11978afbdaecd2 Mon Sep 17 00:00:00 2001 From: Damian Kobylinski Date: Wed, 3 Aug 2022 13:25:13 +1200 Subject: [PATCH 5/6] signature updates --- github/repos_lfs.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/github/repos_lfs.go b/github/repos_lfs.go index fe9db84f7ed..dc88e8e9014 100644 --- a/github/repos_lfs.go +++ b/github/repos_lfs.go @@ -13,7 +13,7 @@ import ( // EnableLFS turns the LFS (Large File Storage) feature ON for the selected repo. // // GitHub API docs: https://docs.github.com/en/rest/repos/lfs#enable-git-lfs-for-a-repository -func (s *RepositoriesService) EnableLFS(ctx context.Context, owner string, repo string) (*Response, error) { +func (s *RepositoriesService) EnableLFS(ctx context.Context, owner, repo string) (*Response, error) { u := fmt.Sprintf("repos/%v/%v/lfs", owner, repo) req, err := s.client.NewRequest("PUT", u, nil) @@ -32,7 +32,7 @@ func (s *RepositoriesService) EnableLFS(ctx context.Context, owner string, repo // DisableLFS turns the LFS (Large File Storage) feature OFF for the selected repo // // Github API docs: https://docs.github.com/en/rest/repos/lfs#disable-git-lfs-for-a-repository -func (s *RepositoriesService) DisableLFS(ctx context.Context, owner string, repo string) (*Response, error) { +func (s *RepositoriesService) DisableLFS(ctx context.Context, owner, repo string) (*Response, error) { u := fmt.Sprintf("repos/%v/%v/lfs", owner, repo) req, err := s.client.NewRequest("DELETE", u, nil) From df9431b60fd3dc1e5f9f78466872c252ca9b2ac1 Mon Sep 17 00:00:00 2001 From: Damian Kobylinski Date: Wed, 3 Aug 2022 13:43:56 +1200 Subject: [PATCH 6/6] Additional review items by gmlewis --- github/repos_lfs.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/github/repos_lfs.go b/github/repos_lfs.go index dc88e8e9014..6ac2e5a8778 100644 --- a/github/repos_lfs.go +++ b/github/repos_lfs.go @@ -29,9 +29,9 @@ func (s *RepositoriesService) EnableLFS(ctx context.Context, owner, repo string) return resp, nil } -// DisableLFS turns the LFS (Large File Storage) feature OFF for the selected repo +// DisableLFS turns the LFS (Large File Storage) feature OFF for the selected repo. // -// Github API docs: https://docs.github.com/en/rest/repos/lfs#disable-git-lfs-for-a-repository +// GitHub API docs: https://docs.github.com/en/rest/repos/lfs#disable-git-lfs-for-a-repository func (s *RepositoriesService) DisableLFS(ctx context.Context, owner, repo string) (*Response, error) { u := fmt.Sprintf("repos/%v/%v/lfs", owner, repo)