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")
}