diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 21bab99..96ffb45 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -291,11 +291,11 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v6 with: go-version-file: go.mod - name: golangci-lint - uses: golangci/golangci-lint-action@v6 + uses: golangci/golangci-lint-action@v9 with: version: latest @@ -310,7 +310,7 @@ jobs: os: [ubuntu-latest] steps: - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v6 with: go-version-file: go.mod cache: true @@ -324,7 +324,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v6 with: go-version-file: go.mod cache: true @@ -340,7 +340,7 @@ jobs: - name: Setup Go (if needed) if: ${{ needs.discover.outputs.has_go == 'true' }} - uses: actions/setup-go@v5 + uses: actions/setup-go@v6 with: go-version-file: go.mod @@ -410,7 +410,7 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v6 with: go-version-file: go.mod diff --git a/.golangci.yml b/.golangci.yml deleted file mode 100644 index c10cbc0..0000000 --- a/.golangci.yml +++ /dev/null @@ -1,13 +0,0 @@ -run: - timeout: 5m - -linters: - enable: - - govet - - staticcheck - - errcheck - - ineffassign - - revive - -issues: - exclude-use-default: false diff --git a/authHandlers.go b/authHandlers.go index ddfb755..82c4df0 100644 --- a/authHandlers.go +++ b/authHandlers.go @@ -29,7 +29,7 @@ func UserLogoutAction(w http.ResponseWriter, r *http.Request) error { return fmt.Errorf("session.Save Error: %w", err) } - data.CoreData.UserRef = "" + data.UserRef = "" return nil } @@ -106,11 +106,6 @@ func LoginWithProvider(w http.ResponseWriter, r *http.Request) error { func Oauth2CallbackPage(w http.ResponseWriter, r *http.Request) error { - type ErrorData struct { - *CoreData - Error string - } - session, err := getSession(w, r) if session, err = sanitizeSession(w, r, session, err); err != nil { return fmt.Errorf("session error: %w", err) diff --git a/autoRefreshPage.go b/autoRefreshPage.go index e80036e..1cc9ca6 100644 --- a/autoRefreshPage.go +++ b/autoRefreshPage.go @@ -23,9 +23,3 @@ func TaskDoneAutoRefreshPage(w http.ResponseWriter, r *http.Request) error { } return nil } - -func taskRedirectWithoutQueryArgs(w http.ResponseWriter, r *http.Request) { - u := r.URL - u.RawQuery = "" - http.Redirect(w, r, u.String(), http.StatusSeeOther) -} diff --git a/bookmarkTabEdit.go b/bookmarkTabEdit.go index 5402aae..91f7e19 100644 --- a/bookmarkTabEdit.go +++ b/bookmarkTabEdit.go @@ -101,7 +101,7 @@ func ReplaceTabByIndex(bookmarks string, idx int, newName, newText string) (stri end := starts[idx+1] var replacement []string - includeHeader := !(idx == 0 && newName == "") + includeHeader := idx != 0 || newName != "" if includeHeader { if newName != "" { replacement = append(replacement, "Tab: "+newName) diff --git a/bookmarkTabEdit_test.go b/bookmarkTabEdit_test.go index 5f1ec7e..0e09963 100644 --- a/bookmarkTabEdit_test.go +++ b/bookmarkTabEdit_test.go @@ -27,20 +27,20 @@ func TestExtractTab(t *testing.T) { } func TestExtractTabError(t *testing.T) { - if _, err := ExtractTab(tabBookmarkText, "X"); err == nil { - t.Fatalf("expected error") - } + if _, err := ExtractTab(tabBookmarkText, "X"); err == nil { + t.Fatalf("expected error") + } } func TestExtractTabByIndex(t *testing.T) { - got, err := ExtractTabByIndex(tabBookmarkWithoutHeader, 0) - if err != nil { - t.Fatalf("unexpected err: %v", err) - } - expected := "Category: A\n--" - if got != expected { - t.Fatalf("expected %q got %q", expected, got) - } + got, err := ExtractTabByIndex(tabBookmarkWithoutHeader, 0) + if err != nil { + t.Fatalf("unexpected err: %v", err) + } + expected := "Category: A\n--" + if got != expected { + t.Fatalf("expected %q got %q", expected, got) + } } func TestReplaceTab(t *testing.T) { @@ -55,20 +55,20 @@ func TestReplaceTab(t *testing.T) { } func TestAppendTab(t *testing.T) { - updated := AppendTab("Category: X", "New", "Category: Y") - expected := "Category: X\nTab: New\nCategory: Y\n" - if updated != expected { - t.Fatalf("expected %q got %q", expected, updated) - } + updated := AppendTab("Category: X", "New", "Category: Y") + expected := "Category: X\nTab: New\nCategory: Y\n" + if updated != expected { + t.Fatalf("expected %q got %q", expected, updated) + } } func TestReplaceTabByIndex(t *testing.T) { - updated, err := ReplaceTabByIndex(tabBookmarkWithoutHeader, 0, "", "Category: Z") - if err != nil { - t.Fatalf("unexpected err: %v", err) - } - expected := "Category: Z\nTab: Two\nCategory: B\n" - if updated != expected { - t.Fatalf("expected %q got %q", expected, updated) - } + updated, err := ReplaceTabByIndex(tabBookmarkWithoutHeader, 0, "", "Category: Z") + if err != nil { + t.Fatalf("unexpected err: %v", err) + } + expected := "Category: Z\nTab: Two\nCategory: B\n" + if updated != expected { + t.Fatalf("expected %q got %q", expected, updated) + } } diff --git a/bookmark_methods_test.go b/bookmark_methods_test.go index 99b8237..b51af39 100644 --- a/bookmark_methods_test.go +++ b/bookmark_methods_test.go @@ -119,7 +119,7 @@ func TestAddTab(t *testing.T) { p := &BookmarkPage{Blocks: []*BookmarkBlock{{Columns: []*BookmarkColumn{{}}}}} p.Blocks[0].Columns[0].AddCategory(&BookmarkCategory{Name: "C"}) nl.AddPage(p) - var list BookmarkList = tabs + list := tabs list.AddTab(nl) got := list.String() if got != addTabExpected { @@ -133,7 +133,7 @@ func TestInsertTab(t *testing.T) { p := &BookmarkPage{Blocks: []*BookmarkBlock{{Columns: []*BookmarkColumn{{}}}}} p.Blocks[0].Columns[0].AddCategory(&BookmarkCategory{Name: "X"}) nl.AddPage(p) - var list BookmarkList = tabs + list := tabs list.InsertTab(1, nl) got := list.String() if got != insertTabExpected { @@ -143,7 +143,7 @@ func TestInsertTab(t *testing.T) { func TestSwitchTab(t *testing.T) { tabs := ParseBookmarks(switchTabInput) - var list BookmarkList = tabs + list := tabs list.SwitchTabs(0, 1) got := list.String() if got != switchTabExpected { @@ -153,7 +153,7 @@ func TestSwitchTab(t *testing.T) { func TestMoveTab(t *testing.T) { tabs := ParseBookmarks(switchTabInput) - var list BookmarkList = tabs + list := tabs list.MoveTab(0, 1) got := list.String() if got != switchTabExpected { diff --git a/bookmark_model.go b/bookmark_model.go index 9504c08..d31e861 100644 --- a/bookmark_model.go +++ b/bookmark_model.go @@ -185,7 +185,7 @@ type BookmarkTab struct { func (t *BookmarkTab) stringWithContext(first bool) string { var sb strings.Builder - if !(first && t.Name == "") { + if !first || t.Name != "" { if t.Name != "" { sb.WriteString("Tab: ") sb.WriteString(t.Name) @@ -562,21 +562,3 @@ func FindPageBySha(tabs BookmarkList, sha string) *BookmarkPage { } return nil } - -// indexAfterColumn returns the global index after the last category in the specified column. -func indexAfterColumn(tabs BookmarkList, page *BookmarkPage, colIdx int) int { - idx := 0 - for _, t := range tabs { - for _, p := range t.Pages { - for _, b := range p.Blocks { - for ci, col := range b.Columns { - idx += len(col.Categories) - if p == page && ci == colIdx { - return idx - } - } - } - } - } - return idx -} diff --git a/cmd/gobookmarks/db_reset_password_command.go b/cmd/gobookmarks/db_reset_password_command.go index 86665d0..73ece7f 100644 --- a/cmd/gobookmarks/db_reset_password_command.go +++ b/cmd/gobookmarks/db_reset_password_command.go @@ -5,7 +5,7 @@ import ( "flag" "fmt" - . "github.com/arran4/gobookmarks" + . "github.com/arran4/gobookmarks" //nolint:staticcheck ) type DbResetPasswordCommand struct { diff --git a/cmd/gobookmarks/db_users_command.go b/cmd/gobookmarks/db_users_command.go index 89005d5..57de7ec 100644 --- a/cmd/gobookmarks/db_users_command.go +++ b/cmd/gobookmarks/db_users_command.go @@ -4,7 +4,7 @@ import ( "flag" "fmt" - . "github.com/arran4/gobookmarks" + . "github.com/arran4/gobookmarks" //nolint:staticcheck ) type DbUsersCommand struct { @@ -57,7 +57,7 @@ func (c *DbUsersCommand) Execute(args []string) error { printHelp(c, err) return err } - defer db.Close() + defer func() { _ = db.Close() }() rows, err := db.Query("SELECT user FROM passwords") if err != nil { diff --git a/cmd/gobookmarks/help_command.go b/cmd/gobookmarks/help_command.go index 1386593..d901ca1 100644 --- a/cmd/gobookmarks/help_command.go +++ b/cmd/gobookmarks/help_command.go @@ -40,7 +40,7 @@ func (c *HelpCommand) Execute(args []string) error { } } } - c.FlagSet().Parse(args) + _ = c.FlagSet().Parse(args) c.FlagSet().Usage = func() {} printHelp(target, nil) return nil diff --git a/cmd/gobookmarks/main.go b/cmd/gobookmarks/main.go index ce06b64..3171d73 100644 --- a/cmd/gobookmarks/main.go +++ b/cmd/gobookmarks/main.go @@ -6,7 +6,7 @@ import ( "log" "os" - . "github.com/arran4/gobookmarks" + . "github.com/arran4/gobookmarks" //nolint:staticcheck ) var ( diff --git a/cmd/gobookmarks/serve.go b/cmd/gobookmarks/serve.go index dc1e3ae..a2aca69 100644 --- a/cmd/gobookmarks/serve.go +++ b/cmd/gobookmarks/serve.go @@ -37,28 +37,28 @@ type ServeCommand struct { parent Command Flags *flag.FlagSet - GithubClientID stringFlag - GithubSecret stringFlag - GitlabClientID stringFlag - GitlabSecret stringFlag - ExternalURL stringFlag - Namespace stringFlag - Title stringFlag + GithubClientID stringFlag + GithubSecret stringFlag + GitlabClientID stringFlag + GitlabSecret stringFlag + ExternalURL stringFlag + Namespace stringFlag + Title stringFlag FaviconCacheDir stringFlag FaviconCacheSize stringFlag FaviconMaxCacheCount stringFlag CommitsPerPage stringFlag GithubServer stringFlag - GitlabServer stringFlag - LocalGitPath stringFlag - DbProvider stringFlag - DbConn stringFlag - SessionKey stringFlag - ProviderOrder stringFlag - CssColumns boolFlag - NoFooter boolFlag - DevMode boolFlag - DumpConfig boolFlag + GitlabServer stringFlag + LocalGitPath stringFlag + DbProvider stringFlag + DbConn stringFlag + SessionKey stringFlag + ProviderOrder stringFlag + CssColumns boolFlag + NoFooter boolFlag + DevMode boolFlag + DumpConfig boolFlag } func (rc *RootCommand) NewServeCommand() (*ServeCommand, error) { @@ -452,7 +452,7 @@ func CreatePEMFiles() { if err != nil { log.Fatalf("Failed to create cert.pem file: %v", err) } - defer certFile.Close() + defer func() { _ = certFile.Close() }() if err := pem.Encode(certFile, &pem.Block{Type: "CERTIFICATE", Bytes: derBytes}); err != nil { log.Fatalf("Failed to write data to cert.pem: %v", err) } @@ -461,7 +461,7 @@ func CreatePEMFiles() { if err != nil { log.Fatalf("Failed to create key.pem file: %v", err) } - defer keyFile.Close() + defer func() { _ = keyFile.Close() }() privBytes, err := x509.MarshalECPrivateKey(priv) if err != nil { log.Fatalf("Failed to marshal private key: %v", err) @@ -477,8 +477,6 @@ func runHandlerChain(chain ...any) func(http.ResponseWriter, *http.Request) { switch each := each.(type) { case http.Handler: each.ServeHTTP(w, r) - case http.HandlerFunc: - each(w, r) case func(http.ResponseWriter, *http.Request): each(w, r) case func(http.ResponseWriter, *http.Request) error: diff --git a/cmd/gobookmarks/test_verification_template_command.go b/cmd/gobookmarks/test_verification_template_command.go index 23f9b3f..46d6404 100644 --- a/cmd/gobookmarks/test_verification_template_command.go +++ b/cmd/gobookmarks/test_verification_template_command.go @@ -149,9 +149,6 @@ https://example.com Example Link if input.Bookmarks != "" { bookmarksStr = input.Bookmarks } - } else { - // Just to debug if set is true or not - // fmt.Println("DEBUG: DataFromJsonFile is NOT set") } // Create a dummy request to build the context @@ -198,16 +195,16 @@ https://example.com Example Link } if indexName != "" { href := TabHref(i, "") // No ref in static mode - lastSha := "" // No SHA in static mode + lastSha := "" // No SHA in static mode if len(t.Pages) > 0 { lastSha = t.Pages[len(t.Pages)-1].Sha() } tabs = append(tabs, TabInfo{ - Index: i, - Name: t.Name, - IndexName: indexName, - Href: href, - EditHref: AppendQueryParams(href, "edit", "1"), + Index: i, + Name: t.Name, + IndexName: indexName, + Href: href, + EditHref: AppendQueryParams(href, "edit", "1"), LastPageSha: lastSha, }) } @@ -230,14 +227,14 @@ https://example.com Example Link } tabs = append(tabs, TabWithPages{ TabInfo: TabInfo{ - Index: i, - Name: t.Name, - IndexName: indexName, - Href: href, - EditHref: AppendQueryParams(href, "edit", "1"), + Index: i, + Name: t.Name, + IndexName: indexName, + Href: href, + EditHref: AppendQueryParams(href, "edit", "1"), LastPageSha: lastSha, }, - Pages: t.Pages, + Pages: t.Pages, }) } } @@ -262,7 +259,6 @@ https://example.com Example Link funcs["loggedIn"] = func() (bool, error) { return true, nil } funcs["showPages"] = func() bool { return true } - // Override additional functions for edit pages funcs["bookmarksOrEditBookmarks"] = func() (string, error) { return bookmarksStr, nil @@ -303,7 +299,7 @@ https://example.com Example Link // For serving, we need to handle main.css and favicon too, otherwise the page looks broken mux := http.NewServeMux() mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { - w.Write(output) + _, _ = w.Write(output) }) mux.HandleFunc("/main.css", func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "text/css") diff --git a/config.go b/config.go index 4f365a8..0dbcaef 100644 --- a/config.go +++ b/config.go @@ -4,7 +4,7 @@ import ( "bufio" "encoding/json" "fmt" - "io/ioutil" + "log" "os" "path/filepath" @@ -84,7 +84,6 @@ func (c Configuration) GetSessionName() string { return "gobookmarks" } - // LoadConfigFile loads configuration from the given path. // It returns the loaded Configuration, a boolean indicating if the file existed, // and any error that occurred while reading or parsing the file. @@ -93,7 +92,7 @@ func LoadConfigFile(path string) (Configuration, bool, error) { log.Printf("attempting to load config from %s", path) - data, err := ioutil.ReadFile(path) + data, err := os.ReadFile(path) if err != nil { if os.IsNotExist(err) { log.Printf("config file %s not found", path) @@ -280,7 +279,7 @@ func LoadEnvFile(path string) error { } return err } - defer f.Close() + defer func() { _ = f.Close() }() scanner := bufio.NewScanner(f) for scanner.Scan() { @@ -295,7 +294,7 @@ func LoadEnvFile(path string) error { key := strings.TrimSpace(parts[0]) val := strings.TrimSpace(parts[1]) if os.Getenv(key) == "" { - os.Setenv(key, val) + _ = os.Setenv(key, val) } } return scanner.Err() diff --git a/core.go b/core.go index 53e9f2b..e786c1e 100644 --- a/core.go +++ b/core.go @@ -48,11 +48,11 @@ func CoreAdderMiddleware(next http.Handler) http.Handler { } type CoreData struct { - Title string - AutoRefresh bool - UserRef string - EditMode bool - Tab int + Title string + AutoRefresh bool + UserRef string + EditMode bool + Tab int requestCache *requestCache } diff --git a/db.go b/db.go index 76f54fb..6eaba64 100644 --- a/db.go +++ b/db.go @@ -20,12 +20,12 @@ func OpenDB() (*sql.DB, error) { } if err := db.Ping(); err != nil { - db.Close() + _ = db.Close() return nil, NewSystemError("Database error", err) } if err := ensureSQLSchema(db); err != nil { - db.Close() + _ = db.Close() return nil, NewSystemError("Database error", fmt.Errorf("failed to ensure schema: %w", err)) } return db, nil diff --git a/favicon_proxy_test.go b/favicon_proxy_test.go index a26ec33..25112e7 100644 --- a/favicon_proxy_test.go +++ b/favicon_proxy_test.go @@ -12,13 +12,13 @@ func newFaviconServer(t *testing.T, icon []byte) (*httptest.Server, *int) { hits := 0 mux := http.NewServeMux() mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { - w.Write([]byte("")) + _, _ = w.Write([]byte("")) }) mux.HandleFunc("/favicon.ico", func(w http.ResponseWriter, r *http.Request) { hits++ w.Header().Set("Cache-Control", "max-age=1") w.Header().Set("Content-Type", "image/png") - w.Write(icon) + _, _ = w.Write(icon) }) return httptest.NewServer(mux), &hits } diff --git a/funcs.go b/funcs.go index d703c54..785a198 100644 --- a/funcs.go +++ b/funcs.go @@ -221,7 +221,7 @@ func NewFuncs(r *http.Request) template.FuncMap { ref := r.URL.Query().Get("ref") bookmarks, _, err := GetBookmarks(r.Context(), login, ref, token) - var bookmark = defaultBookmarks + var bookmark string if err != nil { if errors.Is(err, ErrRepoNotFound) { bookmark = "" @@ -250,7 +250,7 @@ func NewFuncs(r *http.Request) template.FuncMap { ref := r.URL.Query().Get("ref") bookmarks, _, err := GetBookmarks(r.Context(), login, ref, token) - var bookmark = defaultBookmarks + var bookmark string if err != nil { if errors.Is(err, ErrRepoNotFound) { bookmark = "" @@ -290,7 +290,7 @@ func NewFuncs(r *http.Request) template.FuncMap { ref := r.URL.Query().Get("ref") bookmarks, _, err := GetBookmarks(r.Context(), login, ref, token) - var bookmark = defaultBookmarks + var bookmark string if err != nil { if errors.Is(err, ErrRepoNotFound) { bookmark = "" @@ -332,7 +332,7 @@ func NewFuncs(r *http.Request) template.FuncMap { } bookmarks, _, err := GetBookmarks(r.Context(), login, r.URL.Query().Get("ref"), token) - var bookmark = defaultBookmarks + var bookmark string if err != nil { if errors.Is(err, ErrRepoNotFound) { bookmark = "" @@ -364,7 +364,7 @@ func NewFuncs(r *http.Request) template.FuncMap { } bookmarks, _, err := GetBookmarks(r.Context(), login, r.URL.Query().Get("ref"), token) - var bookmark = defaultBookmarks + var bookmark string if err != nil { if errors.Is(err, ErrRepoNotFound) { bookmark = "" diff --git a/provider_access.go b/provider_access.go index ac7a8e7..b6788e9 100644 --- a/provider_access.go +++ b/provider_access.go @@ -52,13 +52,6 @@ func getCachedBookmarks(user, ref string) (string, string, bool) { return entry.bookmarks, entry.sha, true } -func setCachedBookmarks(user, ref, bookmarks, sha string) { - key := cacheKey(user, ref) - bookmarksCache.Lock() - bookmarksCache.data[key] = &bookmarkCacheEntry{bookmarks: bookmarks, sha: sha, expiry: time.Now().Add(time.Minute)} - bookmarksCache.Unlock() -} - func invalidateBookmarkCache(user string) { bookmarksCache.Lock() for k := range bookmarksCache.data { diff --git a/provider_github.go b/provider_github.go index 5078def..a3d1c01 100644 --- a/provider_github.go +++ b/provider_github.go @@ -50,7 +50,7 @@ func (GitHubProvider) client(ctx context.Context, token *oauth2.Token) *github.C if server == "" || server == "https://github.com" { return github.NewClient(httpClient) } - c, err := github.NewEnterpriseClient(server+"/api/v3/", server+"/upload/v3/", httpClient) + c, err := github.NewEnterpriseClient(server+"/api/v3/", server+"/upload/v3/", httpClient) //nolint:staticcheck if err != nil { return github.NewClient(httpClient) } @@ -150,7 +150,7 @@ func (p GitHubProvider) GetBookmarks(ctx context.Context, user, ref string, toke var commitAuthor = &github.CommitAuthor{Name: SP("Gobookmarks"), Email: SP("Gobookmarks@arran.net.au")} -func (p GitHubProvider) getDefaultBranch(ctx context.Context, user string, client *github.Client, branch string) (string, error) { +func (p GitHubProvider) getDefaultBranch(ctx context.Context, user string, client *github.Client) (string, error) { rep, resp, err := client.Repositories.Get(ctx, user, Config.GetRepoName()) if resp != nil && resp.StatusCode == 404 { return "", ErrRepoNotFound @@ -160,11 +160,9 @@ func (p GitHubProvider) getDefaultBranch(ctx context.Context, user string, clien return "", fmt.Errorf("Repositories.Get: %w", err) } if rep.DefaultBranch != nil { - branch = *rep.DefaultBranch - } else { - branch = "main" + return *rep.DefaultBranch, nil } - return branch, nil + return "main", nil } func (p GitHubProvider) CreateRepo(ctx context.Context, user string, token *oauth2.Token, name string) error { @@ -228,7 +226,7 @@ func (p GitHubProvider) createRef(ctx context.Context, user string, client *gith func (p GitHubProvider) UpdateBookmarks(ctx context.Context, user string, token *oauth2.Token, sourceRef, branch, text, expectSHA string) error { client := p.client(ctx, token) - defaultBranch, err := p.getDefaultBranch(ctx, user, client, branch) + defaultBranch, err := p.getDefaultBranch(ctx, user, client) if err != nil { return err } @@ -283,7 +281,7 @@ func (p GitHubProvider) CreateBookmarks(ctx context.Context, user string, token client := p.client(ctx, token) if branch == "" { var err error - branch, err = p.getDefaultBranch(ctx, user, client, branch) + branch, err = p.getDefaultBranch(ctx, user, client) if err != nil { log.Printf("github CreateBookmarks default branch: %v", err) return err diff --git a/provider_gitlab.go b/provider_gitlab.go index 9d95a7d..ce952af 100644 --- a/provider_gitlab.go +++ b/provider_gitlab.go @@ -53,12 +53,12 @@ func (GitLabProvider) Config(clientID, clientSecret, redirectURL string) *oauth2 } } -func (GitLabProvider) client(token *oauth2.Token) (*gitlab.Client, error) { +func (GitLabProvider) client(token *oauth2.Token) (*gitlab.Client, error) { //nolint:staticcheck server := Config.GitlabServer if server == "" { server = "https://gitlab.com" } - return gitlab.NewOAuthClient(token.AccessToken, gitlab.WithBaseURL(server)) + return gitlab.NewOAuthClient(token.AccessToken, gitlab.WithBaseURL(server)) //nolint:staticcheck } func (GitLabProvider) CurrentUser(ctx context.Context, token *oauth2.Token) (*User, error) { @@ -182,7 +182,7 @@ func (GitLabProvider) GetBookmarks(ctx context.Context, user, ref string, token return string(data), f.LastCommitID, nil } -func (GitLabProvider) getDefaultBranch(ctx context.Context, user string, client *gitlab.Client, branch string) (string, error) { +func (GitLabProvider) getDefaultBranch(ctx context.Context, user string, client *gitlab.Client) (string, error) { //nolint:staticcheck p, _, err := client.Projects.GetProject(user+"/"+Config.GetRepoName(), nil) if err != nil { if respErr, ok := err.(*gitlab.ErrorResponse); ok { @@ -200,11 +200,9 @@ func (GitLabProvider) getDefaultBranch(ctx context.Context, user string, client return "", err } if p.DefaultBranch != "" { - branch = p.DefaultBranch - } else { - branch = "main" + return p.DefaultBranch, nil } - return branch, nil + return "main", nil } func (GitLabProvider) UpdateBookmarks(ctx context.Context, user string, token *oauth2.Token, sourceRef, branch, text, expectSHA string) error { c, err := GitLabProvider{}.client(token) @@ -213,7 +211,7 @@ func (GitLabProvider) UpdateBookmarks(ctx context.Context, user string, token *o return err } if branch == "" { - branch, err = GitLabProvider{}.getDefaultBranch(ctx, user, c, branch) + branch, err = GitLabProvider{}.getDefaultBranch(ctx, user, c) if err != nil { log.Printf("gitlab UpdateBookmarks default branch: %v", err) return err @@ -259,7 +257,7 @@ func (GitLabProvider) CreateBookmarks(ctx context.Context, user string, token *o return err } if branch == "" { - branch, err = GitLabProvider{}.getDefaultBranch(ctx, user, c, branch) + branch, err = GitLabProvider{}.getDefaultBranch(ctx, user, c) if err != nil { log.Printf("gitlab CreateBookmarks default branch: %v", err) return err diff --git a/provider_sql.go b/provider_sql.go index f604cce..c155318 100644 --- a/provider_sql.go +++ b/provider_sql.go @@ -65,7 +65,7 @@ func (p *SQLProvider) GetTags(ctx context.Context, user string, token *oauth2.To if err != nil { return nil, err } - defer rows.Close() + defer func() { _ = rows.Close() }() var tags []*Tag for rows.Next() { @@ -88,7 +88,7 @@ func (p *SQLProvider) GetBranches(ctx context.Context, user string, token *oauth if err != nil { return nil, err } - defer rows.Close() + defer func() { _ = rows.Close() }() var branches []*Branch for rows.Next() { @@ -120,7 +120,7 @@ func (p *SQLProvider) GetCommits(ctx context.Context, user string, token *oauth2 if err != nil { return nil, fmt.Errorf("failed to query history: %v", err) } - defer rows.Close() + defer func() { _ = rows.Close() }() var commits []*Commit for rows.Next() { @@ -226,11 +226,11 @@ func (p *SQLProvider) UpdateBookmarks(ctx context.Context, user string, token *o var curSha sql.NullString err = tx.QueryRowContext(ctx, "SELECT sha FROM branches WHERE user=? AND name=?", user, branch).Scan(&curSha) if err != nil && err != sql.ErrNoRows { - tx.Rollback() + _ = tx.Rollback() return err } if expectSHA != "" && curSha.Valid && curSha.String != expectSHA { - tx.Rollback() + _ = tx.Rollback() return errors.New("sha mismatch") } @@ -241,14 +241,14 @@ func (p *SQLProvider) UpdateBookmarks(ctx context.Context, user string, token *o "INSERT INTO history(user, sha, message, text, date) VALUES(?,?,?,?,?)", user, newSha, "update", text, time.Now(), ); err != nil { - tx.Rollback() + _ = tx.Rollback() return err } if _, err := tx.ExecContext(ctx, "UPDATE bookmarks SET list=? WHERE user=?", text, user, ); err != nil { - tx.Rollback() + _ = tx.Rollback() return err } @@ -260,7 +260,7 @@ func (p *SQLProvider) UpdateBookmarks(ctx context.Context, user string, token *o VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE sha = VALUES(sha) `, user, branch, newSha); err != nil { - tx.Rollback() + _ = tx.Rollback() return err } case "sqlite3": @@ -269,11 +269,11 @@ func (p *SQLProvider) UpdateBookmarks(ctx context.Context, user string, token *o VALUES (?, ?, ?) ON CONFLICT(user, name) DO UPDATE SET sha = excluded.sha `, user, branch, newSha); err != nil { - tx.Rollback() + _ = tx.Rollback() return err } default: - tx.Rollback() + _ = tx.Rollback() return errors.New("unsupported connection provider") } @@ -301,7 +301,7 @@ func (p *SQLProvider) CreateBookmarks(ctx context.Context, user string, token *o "INSERT INTO bookmarks(user, list) VALUES(?, '') ON DUPLICATE KEY UPDATE list=list", user, ); err != nil { - tx.Rollback() + _ = tx.Rollback() return err } case "sqlite3": @@ -309,11 +309,11 @@ func (p *SQLProvider) CreateBookmarks(ctx context.Context, user string, token *o "INSERT OR IGNORE INTO bookmarks(user, list) VALUES(?, '')", user, ); err != nil { - tx.Rollback() + _ = tx.Rollback() return err } default: - tx.Rollback() + _ = tx.Rollback() return errors.New("unsupported connection provider") } @@ -324,14 +324,14 @@ func (p *SQLProvider) CreateBookmarks(ctx context.Context, user string, token *o "INSERT INTO history(user, sha, message, text, date) VALUES(?,?,?,?,?)", user, newSha, "create", text, time.Now(), ); err != nil { - tx.Rollback() + _ = tx.Rollback() return err } if _, err := tx.ExecContext(ctx, "UPDATE bookmarks SET list=? WHERE user=?", text, user, ); err != nil { - tx.Rollback() + _ = tx.Rollback() return err } @@ -343,7 +343,7 @@ func (p *SQLProvider) CreateBookmarks(ctx context.Context, user string, token *o VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE sha=VALUES(sha) `, user, branch, newSha); err != nil { - tx.Rollback() + _ = tx.Rollback() return err } case "sqlite3": @@ -352,11 +352,11 @@ func (p *SQLProvider) CreateBookmarks(ctx context.Context, user string, token *o VALUES (?, ?, ?) ON CONFLICT(user, name) DO UPDATE SET sha = excluded.sha `, user, branch, newSha); err != nil { - tx.Rollback() + _ = tx.Rollback() return err } default: - tx.Rollback() + _ = tx.Rollback() return errors.New("unsupported connection provider") } @@ -381,7 +381,7 @@ func (p *SQLProvider) CreateRepo(ctx context.Context, user string, token *oauth2 "INSERT INTO bookmarks(user, list) VALUES(?, '') ON DUPLICATE KEY UPDATE list=list", user, ); err != nil { - tx.Rollback() + _ = tx.Rollback() return err } // default branch @@ -389,7 +389,7 @@ func (p *SQLProvider) CreateRepo(ctx context.Context, user string, token *oauth2 "INSERT INTO branches(user, name, sha) VALUES(?, 'main', '') ON DUPLICATE KEY UPDATE sha=sha", user, ); err != nil { - tx.Rollback() + _ = tx.Rollback() return err } case "sqlite3": @@ -397,18 +397,18 @@ func (p *SQLProvider) CreateRepo(ctx context.Context, user string, token *oauth2 "INSERT OR IGNORE INTO bookmarks(user, list) VALUES(?, '')", user, ); err != nil { - tx.Rollback() + _ = tx.Rollback() return err } if _, err := tx.ExecContext(ctx, "INSERT OR IGNORE INTO branches(user, name, sha) VALUES(?, 'main', '')", user, ); err != nil { - tx.Rollback() + _ = tx.Rollback() return err } default: - tx.Rollback() + _ = tx.Rollback() return errors.New("unsupported connection provider") }