Fix nolintlint spacing, goconst issues, and git package exhaustive cases

copilot-swe-agent[bot] and andreynering created

Co-authored-by: andreynering <7011819+andreynering@users.noreply.github.com>

Change summary

cmd/soft/main.go                     |  2 +-
cmd/soft/serve/serve.go              |  6 +++---
cmd/soft/serve/server.go             |  4 ++--
git/attr.go                          |  4 ++--
git/config.go                        |  4 ++--
git/patch.go                         |  4 ++++
git/tree.go                          |  2 ++
pkg/access/access.go                 |  2 +-
pkg/backend/lfs.go                   |  2 +-
pkg/backend/repo.go                  |  2 +-
pkg/config/config.go                 |  6 +++---
pkg/config/file.go                   |  2 +-
pkg/daemon/conn.go                   |  6 +++---
pkg/daemon/daemon.go                 | 10 +++++-----
pkg/daemon/daemon_test.go            |  2 +-
pkg/db/migrate/0001_create_tables.go | 11 ++++++++---
pkg/db/migrate/migrate.go            |  8 ++++----
pkg/git/service.go                   |  2 +-
pkg/lfs/basic_transfer.go            |  2 +-
pkg/lfs/client.go                    |  9 ++++++++-
pkg/lfs/http_client.go               |  4 ++--
pkg/lfs/scanner.go                   | 16 ++++++++--------
pkg/ssh/cmd/git.go                   |  2 +-
pkg/ssh/cmd/webhooks.go              | 28 ++++++++++++++--------------
pkg/ssh/middleware.go                |  2 +-
pkg/ssh/session_test.go              |  2 +-
pkg/ssh/ssh.go                       |  2 +-
pkg/storage/local.go                 |  2 +-
pkg/ui/pages/repo/filesitem.go       |  5 ++---
pkg/ui/pages/repo/logitem.go         |  2 +-
pkg/ui/pages/repo/refsitem.go        |  2 +-
pkg/ui/pages/repo/repo.go            |  2 +-
pkg/ui/pages/repo/stashitem.go       |  2 +-
pkg/ui/pages/selection/item.go       |  2 +-
pkg/web/git.go                       | 10 +++++-----
pkg/web/git_lfs.go                   | 10 +++++-----
pkg/web/logging.go                   |  4 ++--
pkg/web/util.go                      |  2 +-
pkg/webhook/webhook.go               |  6 +++---
testscript/script_test.go            |  2 +-
40 files changed, 107 insertions(+), 90 deletions(-)

Detailed changes

cmd/soft/main.go 🔗

@@ -118,7 +118,7 @@ func main() {
 
 	ctx = log.WithContext(ctx, logger)
 	if f != nil {
-		defer f.Close() // nolint: errcheck
+		defer f.Close() //nolint:errcheck
 	}
 
 	// Set global logger

cmd/soft/serve/serve.go 🔗

@@ -50,10 +50,10 @@ var (
 			// Create custom hooks directory if it doesn't exist
 			customHooksPath := filepath.Join(cfg.DataPath, "hooks")
 			if _, err := os.Stat(customHooksPath); err != nil && os.IsNotExist(err) {
-				os.MkdirAll(customHooksPath, os.ModePerm) // nolint: errcheck
+				os.MkdirAll(customHooksPath, os.ModePerm) //nolint:errcheck
 				// Generate update hook example without executable permissions
 				hookPath := filepath.Join(customHooksPath, "update.sample")
-				// nolint: gosec
+				//nolint:gosec
 				if err := os.WriteFile(hookPath, []byte(updateHookExample), 0o744); err != nil {
 					return fmt.Errorf("failed to generate update hook example: %w", err)
 				}
@@ -62,7 +62,7 @@ var (
 			// Create log directory if it doesn't exist
 			logPath := filepath.Join(cfg.DataPath, "log")
 			if _, err := os.Stat(logPath); err != nil && os.IsNotExist(err) {
-				os.MkdirAll(logPath, os.ModePerm) // nolint: errcheck
+				os.MkdirAll(logPath, os.ModePerm) //nolint:errcheck
 			}
 
 			db := db.FromContext(ctx)

cmd/soft/serve/server.go 🔗

@@ -167,7 +167,7 @@ func (s *Server) Shutdown(ctx context.Context) error {
 		s.Cron.Stop()
 		return nil
 	})
-	// defer s.DB.Close() // nolint: errcheck
+	// defer s.DB.Close() //nolint: errcheck
 	return errg.Wait()
 }
 
@@ -182,6 +182,6 @@ func (s *Server) Close() error {
 		s.Cron.Stop()
 		return nil
 	})
-	// defer s.DB.Close() // nolint: errcheck
+	// defer s.DB.Close() //nolint: errcheck
 	return errg.Wait()
 }

git/attr.go 🔗

@@ -18,10 +18,10 @@ type Attribute struct {
 // CheckAttributes checks the attributes of the given ref and path.
 func (r *Repository) CheckAttributes(ref *Reference, path string) ([]Attribute, error) {
 	rnd := rand.NewSource(time.Now().UnixNano())
-	fn := "soft-serve-index-" + strconv.Itoa(rand.New(rnd).Int()) // nolint: gosec
+	fn := "soft-serve-index-" + strconv.Itoa(rand.New(rnd).Int()) //nolint: gosec
 	tmpindex := filepath.Join(os.TempDir(), fn)
 
-	defer os.Remove(tmpindex) // nolint: errcheck
+	defer os.Remove(tmpindex) //nolint: errcheck
 
 	readTree := NewCommand("read-tree", "--reset", "-i", ref.Name().String()).
 		AddEnvs("GIT_INDEX_FILE=" + tmpindex)

git/config.go 🔗

@@ -15,7 +15,7 @@ func (r *Repository) Config() (*gcfg.Config, error) {
 		return nil, err
 	}
 
-	defer f.Close() // nolint: errcheck
+	defer f.Close() //nolint: errcheck
 	d := gcfg.NewDecoder(f)
 	cfg := gcfg.New()
 	if err := d.Decode(cfg); err != nil {
@@ -33,7 +33,7 @@ func (r *Repository) SetConfig(cfg *gcfg.Config) error {
 		return err
 	}
 
-	defer f.Close() // nolint: errcheck
+	defer f.Close() //nolint: errcheck
 	e := gcfg.NewEncoder(f)
 	return e.Encode(cfg)
 }

git/patch.go 🔗

@@ -45,6 +45,8 @@ func (s *DiffSection) diffFor(line *git.DiffLine) string {
 		diff1 = line.Content
 		diff2 = compareLine.Content
 
+	case git.DiffLinePlain, git.DiffLineSection:
+		return fallback
 	default:
 		return fallback
 	}
@@ -69,6 +71,8 @@ func diffsToString(diffs []diffmatchpatch.Diff, lineType git.DiffLineType) strin
 		buf.WriteByte('+')
 	case git.DiffLineDelete:
 		buf.WriteByte('-')
+	case git.DiffLinePlain, git.DiffLineSection:
+		// No prefix for these line types
 	}
 
 	for i := range diffs {

git/tree.go 🔗

@@ -169,6 +169,8 @@ func (e *TreeEntry) Mode() fs.FileMode {
 	switch m {
 	case git.EntryTree:
 		return fs.ModeDir | fs.ModePerm
+	case git.EntryBlob, git.EntryExec, git.EntrySymlink, git.EntryCommit:
+		return fs.FileMode(m) //nolint:gosec
 	default:
 		return fs.FileMode(m) //nolint:gosec
 	}

pkg/access/access.go 🔗

@@ -6,7 +6,7 @@ import (
 )
 
 // AccessLevel is the level of access allowed to a repo.
-type AccessLevel int // nolint: revive
+type AccessLevel int //nolint: revive
 
 const (
 	// NoAccess does not allow access to the repo.

pkg/backend/lfs.go 🔗

@@ -39,7 +39,7 @@ func StoreRepoMissingLFSObjects(ctx context.Context, repo proto.Repository, dbx
 				return objectError
 			}
 
-			defer content.Close() // nolint: errcheck
+			defer content.Close() //nolint: errcheck
 			return dbx.TransactionContext(ctx, func(tx *db.Tx) error {
 				if err := store.CreateLFSObject(ctx, tx, repo.ID(), p.Oid, p.Size); err != nil {
 					return db.WrapError(err)

pkg/backend/repo.go 🔗

@@ -751,7 +751,7 @@ func readOneline(path string) (string, error) {
 		return "", err
 	}
 
-	defer f.Close() // nolint: errcheck
+	defer f.Close() //nolint: errcheck
 	s := bufio.NewScanner(f)
 	s.Scan()
 	return s.Text(), s.Err()

pkg/config/config.go 🔗

@@ -231,7 +231,7 @@ func parseFile(cfg *Config, path string) error {
 		return err
 	}
 
-	defer f.Close() // nolint: errcheck
+	defer f.Close() //nolint: errcheck
 	if err := yaml.NewDecoder(f).Decode(cfg); err != nil {
 		return fmt.Errorf("decode config: %w", err)
 	}
@@ -286,7 +286,7 @@ func writeConfig(cfg *Config, path string) error {
 	if err := os.MkdirAll(filepath.Dir(path), os.ModePerm); err != nil {
 		return err
 	}
-	return os.WriteFile(path, []byte(newConfigFile(cfg)), 0o644) // nolint: errcheck, gosec
+	return os.WriteFile(path, []byte(newConfigFile(cfg)), 0o644) //nolint: errcheck, gosec
 }
 
 // WriteConfig writes the configuration to the default file.
@@ -307,7 +307,7 @@ func DefaultDataPath() string {
 }
 
 // ConfigPath returns the path to the config file.
-func (c *Config) ConfigPath() string { // nolint:revive
+func (c *Config) ConfigPath() string { //nolint:revive
 	// If we have a custom config location set, then use that.
 	if path := os.Getenv("SOFT_SERVE_CONFIG_LOCATION"); exist(path) {
 		return path

pkg/config/file.go 🔗

@@ -125,6 +125,6 @@ jobs:
 
 func newConfigFile(cfg *Config) string {
 	var b bytes.Buffer
-	configFileTmpl.Execute(&b, cfg) // nolint: errcheck
+	configFileTmpl.Execute(&b, cfg) //nolint: errcheck
 	return b.String()
 }

pkg/daemon/conn.go 🔗

@@ -91,15 +91,15 @@ func (c *serverConn) updateDeadline() {
 		initTimeout := time.Now().Add(c.initTimeout)
 		c.initTimeout = 0
 		if initTimeout.Unix() < c.maxDeadline.Unix() || c.maxDeadline.IsZero() {
-			c.Conn.SetDeadline(initTimeout) // nolint: errcheck
+			c.Conn.SetDeadline(initTimeout) //nolint: errcheck
 			return
 		}
 	case c.idleTimeout > 0:
 		idleDeadline := time.Now().Add(c.idleTimeout)
 		if idleDeadline.Unix() < c.maxDeadline.Unix() || c.maxDeadline.IsZero() {
-			c.Conn.SetDeadline(idleDeadline) // nolint: errcheck
+			c.Conn.SetDeadline(idleDeadline) //nolint: errcheck
 			return
 		}
 	}
-	c.Conn.SetDeadline(c.maxDeadline) // nolint: errcheck
+	c.Conn.SetDeadline(c.maxDeadline) //nolint: errcheck
 }

pkg/daemon/daemon.go 🔗

@@ -108,7 +108,7 @@ func (d *GitDaemon) Serve(listener net.Listener) error {
 			default:
 				d.logger.Debugf("git: error accepting connection: %v", err)
 			}
-			if ne, ok := err.(net.Error); ok && ne.Temporary() { // nolint: staticcheck
+			if ne, ok := err.(net.Error); ok && ne.Temporary() { //nolint: staticcheck
 				if tempDelay == 0 {
 					tempDelay = 5 * time.Millisecond
 				} else {
@@ -139,7 +139,7 @@ func (d *GitDaemon) Serve(listener net.Listener) error {
 }
 
 func (d *GitDaemon) fatal(c net.Conn, err error) {
-	git.WritePktlineErr(c, err) // nolint: errcheck
+	git.WritePktlineErr(c, err) //nolint: errcheck
 	if err := c.Close(); err != nil {
 		d.logger.Debugf("git: error closing connection: %v", err)
 	}
@@ -160,7 +160,7 @@ func (d *GitDaemon) handleClient(conn net.Conn) {
 	}
 	d.conns.Add(c)
 	defer func() {
-		d.conns.Close(c) // nolint: errcheck
+		d.conns.Close(c) //nolint: errcheck
 	}()
 
 	errc := make(chan error, 1)
@@ -213,7 +213,7 @@ func (d *GitDaemon) handleClient(conn net.Conn) {
 
 		opts := bytes.SplitN(split[1], []byte{0}, 3)
 		if len(opts) < 2 {
-			d.fatal(c, git.ErrInvalidRequest) // nolint: errcheck
+			d.fatal(c, git.ErrInvalidRequest) //nolint: errcheck
 			return
 		}
 
@@ -317,7 +317,7 @@ func (d *GitDaemon) handleClient(conn net.Conn) {
 // Close closes the underlying listener.
 func (d *GitDaemon) Close() error {
 	err := d.closeListener()
-	d.conns.CloseAll() // nolint: errcheck
+	d.conns.CloseAll() //nolint: errcheck
 	return err
 }
 

pkg/daemon/daemon_test.go 🔗

@@ -45,7 +45,7 @@ func TestMain(m *testing.M) {
 	if err != nil {
 		log.Fatal(err)
 	}
-	defer dbx.Close() // nolint: errcheck
+	defer dbx.Close() //nolint: errcheck
 	if err := migrate.Migrate(ctx, dbx); err != nil {
 		log.Fatal(err)
 	}

pkg/db/migrate/0001_create_tables.go 🔗

@@ -15,6 +15,11 @@ import (
 const (
 	createTablesName    = "create tables"
 	createTablesVersion = 1
+	
+	// Database driver names
+	driverSQLite3 = "sqlite3"
+	driverSQLite = "sqlite"
+	driverPostgres = "postgres"
 )
 
 var createTables = Migration{
@@ -28,7 +33,7 @@ var createTables = Migration{
 		// Alter old tables (if exist)
 		// This is to support prior versions of Soft Serve v0.6
 		switch tx.DriverName() {
-		case "sqlite3", "sqlite":
+		case driverSQLite3, driverSQLite:
 			insert += "OR IGNORE "
 
 			hasUserTable := hasTable(tx, "user")
@@ -62,7 +67,7 @@ var createTables = Migration{
 		}
 
 		switch tx.DriverName() {
-		case "sqlite3", "sqlite":
+		case driverSQLite3, driverSQLite:
 
 			if _, err := tx.ExecContext(ctx, "PRAGMA foreign_keys = OFF"); err != nil {
 				return err
@@ -140,7 +145,7 @@ var createTables = Migration{
 
 		for _, k := range cfg.AdminKeys() {
 			query := insert + "INTO public_keys (user_id, public_key, updated_at) VALUES (?, ?, CURRENT_TIMESTAMP)"
-			if tx.DriverName() == "postgres" {
+			if tx.DriverName() == driverPostgres {
 				query += " ON CONFLICT DO NOTHING"
 			}
 

pkg/db/migrate/migrate.go 🔗

@@ -11,7 +11,7 @@ import (
 )
 
 // MigrateFunc is a function that executes a migration.
-type MigrateFunc func(ctx context.Context, tx *db.Tx) error // nolint:revive
+type MigrateFunc func(ctx context.Context, tx *db.Tx) error //nolint:revive
 
 // Migration is a struct that contains the name of the migration and the
 // function to execute it.
@@ -31,7 +31,7 @@ type Migrations struct {
 
 func (Migrations) schema(driverName string) string {
 	switch driverName {
-	case "sqlite3", "sqlite":
+	case driverSQLite3, driverSQLite:
 		return `CREATE TABLE IF NOT EXISTS migrations (
 				id INTEGER PRIMARY KEY AUTOINCREMENT,
 				name TEXT NOT NULL,
@@ -127,9 +127,9 @@ func Rollback(ctx context.Context, dbx *db.DB) error {
 func hasTable(tx *db.Tx, tableName string) bool {
 	var query string
 	switch tx.DriverName() {
-	case "sqlite3", "sqlite":
+	case driverSQLite3, driverSQLite:
 		query = "SELECT name FROM sqlite_master WHERE type='table' AND name=?"
-	case "postgres":
+	case driverPostgres:
 		fallthrough
 	case "mysql":
 		query = "SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' AND table_name = ?"

pkg/git/service.go 🔗

@@ -124,7 +124,7 @@ func gitServiceHandler(ctx context.Context, svc Service, scmd ServiceCommand) er
 	// stdin
 	if scmd.Stdin != nil {
 		go func() {
-			defer stdin.Close() // nolint: errcheck
+			defer stdin.Close() //nolint: errcheck
 			if _, err := io.Copy(stdin, scmd.Stdin); err != nil {
 				log.Errorf("gitServiceHandler: failed to copy stdin: %v", err)
 			}

pkg/lfs/basic_transfer.go 🔗

@@ -105,7 +105,7 @@ func (a *BasicTransferAdapter) performRequest(ctx context.Context, method string
 }
 
 func handleErrorResponse(resp *http.Response) error {
-	defer resp.Body.Close() // nolint: errcheck
+	defer resp.Body.Close() //nolint: errcheck
 
 	er, err := decodeResponseError(resp.Body)
 	if err != nil {

pkg/lfs/client.go 🔗

@@ -5,6 +5,13 @@ import (
 	"io"
 )
 
+const (
+	// SchemeHTTP represents the HTTP protocol scheme
+	SchemeHTTP = "http"
+	// SchemeHTTPS represents the HTTPS protocol scheme
+	SchemeHTTPS = "https"
+)
+
 // DownloadCallback gets called for every requested LFS object to process its content
 type DownloadCallback func(p Pointer, content io.ReadCloser, objectError error) error
 
@@ -19,7 +26,7 @@ type Client interface {
 
 // NewClient returns a new Git LFS client.
 func NewClient(e Endpoint) Client {
-	if e.Scheme == "http" || e.Scheme == "https" {
+	if e.Scheme == SchemeHTTP || e.Scheme == SchemeHTTPS {
 		return newHTTPClient(e)
 	}
 	// TODO: support ssh client

pkg/lfs/http_client.go 🔗

@@ -86,7 +86,7 @@ func (c *httpClient) batch(ctx context.Context, operation string, objects []Poin
 		logger.Errorf("Error while processing request: %v", err)
 		return nil, err
 	}
-	defer res.Body.Close() // nolint: errcheck
+	defer res.Body.Close() //nolint: errcheck
 
 	if res.StatusCode != http.StatusOK {
 		return nil, fmt.Errorf("Unexpected server response: %s", res.Status)
@@ -162,7 +162,7 @@ func (c *httpClient) performOperation(ctx context.Context, objects []Pointer, dc
 
 			err = transferAdapter.Upload(ctx, object.Pointer, content, link)
 
-			content.Close() // nolint: errcheck
+			content.Close() //nolint: errcheck
 
 			if err != nil {
 				return err

pkg/lfs/scanner.go 🔗

@@ -51,7 +51,7 @@ func SearchPointerBlobs(ctx context.Context, repo *git.Repository, pointerChan c
 
 func createPointerResultsFromCatFileBatch(ctx context.Context, catFileBatchReader *io.PipeReader, wg *sync.WaitGroup, pointerChan chan<- PointerBlob) {
 	defer wg.Done()
-	defer catFileBatchReader.Close() // nolint: errcheck
+	defer catFileBatchReader.Close() //nolint: errcheck
 
 	bufferedReader := bufio.NewReader(catFileBatchReader)
 	buf := make([]byte, 1025)
@@ -104,8 +104,8 @@ loop:
 
 func catFileBatch(ctx context.Context, shasToBatchReader *io.PipeReader, catFileBatchWriter *io.PipeWriter, wg *sync.WaitGroup, basePath string) {
 	defer wg.Done()
-	defer shasToBatchReader.Close()  // nolint: errcheck
-	defer catFileBatchWriter.Close() // nolint: errcheck
+	defer shasToBatchReader.Close()  //nolint: errcheck
+	defer catFileBatchWriter.Close() //nolint: errcheck
 
 	stderr := new(bytes.Buffer)
 	var errbuf strings.Builder
@@ -122,7 +122,7 @@ func catFileBatch(ctx context.Context, shasToBatchReader *io.PipeReader, catFile
 
 func blobsLessThan1024FromCatFileBatchCheck(catFileCheckReader *io.PipeReader, shasToBatchWriter *io.PipeWriter, wg *sync.WaitGroup) {
 	defer wg.Done()
-	defer catFileCheckReader.Close() // nolint: errcheck
+	defer catFileCheckReader.Close() //nolint: errcheck
 	scanner := bufio.NewScanner(catFileCheckReader)
 	defer func() {
 		_ = shasToBatchWriter.CloseWithError(scanner.Err())
@@ -154,8 +154,8 @@ func blobsLessThan1024FromCatFileBatchCheck(catFileCheckReader *io.PipeReader, s
 
 func catFileBatchCheck(ctx context.Context, shasToCheckReader *io.PipeReader, catFileCheckWriter *io.PipeWriter, wg *sync.WaitGroup, basePath string) {
 	defer wg.Done()
-	defer shasToCheckReader.Close()  // nolint: errcheck
-	defer catFileCheckWriter.Close() // nolint: errcheck
+	defer shasToCheckReader.Close()  //nolint: errcheck
+	defer catFileCheckWriter.Close() //nolint: errcheck
 
 	stderr := new(bytes.Buffer)
 	var errbuf strings.Builder
@@ -172,7 +172,7 @@ func catFileBatchCheck(ctx context.Context, shasToCheckReader *io.PipeReader, ca
 
 func blobsFromRevListObjects(revListReader *io.PipeReader, shasToCheckWriter *io.PipeWriter, wg *sync.WaitGroup) {
 	defer wg.Done()
-	defer revListReader.Close() // nolint: errcheck
+	defer revListReader.Close() //nolint: errcheck
 	scanner := bufio.NewScanner(revListReader)
 	defer func() {
 		_ = shasToCheckWriter.CloseWithError(scanner.Err())
@@ -201,7 +201,7 @@ func blobsFromRevListObjects(revListReader *io.PipeReader, shasToCheckWriter *io
 
 func revListAllObjects(ctx context.Context, revListWriter *io.PipeWriter, wg *sync.WaitGroup, basePath string, errChan chan<- error) {
 	defer wg.Done()
-	defer revListWriter.Close() // nolint: errcheck
+	defer revListWriter.Close() //nolint: errcheck
 
 	stderr := new(bytes.Buffer)
 	var errbuf strings.Builder

pkg/ssh/cmd/git.go 🔗

@@ -250,7 +250,7 @@ func gitRunE(cmd *cobra.Command, args []string) error {
 			defer func() {
 				if repo == nil {
 					// If the repo was created, but the request failed, delete it.
-					be.DeleteRepository(ctx, name) // nolint: errcheck
+					be.DeleteRepository(ctx, name) //nolint: errcheck
 				}
 			}()
 

pkg/ssh/cmd/webhooks.go 🔗

@@ -361,34 +361,34 @@ func webhookDeliveriesGetCommand() *cobra.Command {
 			}
 
 			out := cmd.OutOrStdout()
-			fmt.Fprintf(out, "ID: %s\n", del.ID)                             //nolint:errcheck
-			fmt.Fprintf(out, "Event: %s\n", del.Event)                       //nolint:errcheck
-			fmt.Fprintf(out, "Request URL: %s\n", del.RequestURL)            //nolint:errcheck
-			fmt.Fprintf(out, "Request Method: %s\n", del.RequestMethod)      //nolint:errcheck
-			fmt.Fprintf(out, "Request Error: %s\n", del.RequestError.String) //nolint:errcheck
-			fmt.Fprintf(out, "Request Headers:\n")                           //nolint:errcheck
+			fmt.Fprintf(out, "ID: %s\n", del.ID)
+			fmt.Fprintf(out, "Event: %s\n", del.Event)
+			fmt.Fprintf(out, "Request URL: %s\n", del.RequestURL)
+			fmt.Fprintf(out, "Request Method: %s\n", del.RequestMethod)
+			fmt.Fprintf(out, "Request Error: %s\n", del.RequestError.String)
+			fmt.Fprintf(out, "Request Headers:\n")
 			reqHeaders := strings.Split(del.RequestHeaders, "\n")
 			for _, h := range reqHeaders {
-				fmt.Fprintf(out, "  %s\n", h) //nolint:errcheck
+				fmt.Fprintf(out, "  %s\n", h)
 			}
 
-			fmt.Fprintf(out, "Request Body:\n") //nolint:errcheck
+			fmt.Fprintf(out, "Request Body:\n")
 			reqBody := strings.Split(del.RequestBody, "\n")
 			for _, b := range reqBody {
-				fmt.Fprintf(out, "  %s\n", b) //nolint:errcheck
+				fmt.Fprintf(out, "  %s\n", b)
 			}
 
-			fmt.Fprintf(out, "Response Status: %d\n", del.ResponseStatus) //nolint:errcheck
-			fmt.Fprintf(out, "Response Headers:\n")                       //nolint:errcheck
+			fmt.Fprintf(out, "Response Status: %d\n", del.ResponseStatus)
+			fmt.Fprintf(out, "Response Headers:\n")
 			resHeaders := strings.Split(del.ResponseHeaders, "\n")
 			for _, h := range resHeaders {
-				fmt.Fprintf(out, "  %s\n", h) //nolint:errcheck
+				fmt.Fprintf(out, "  %s\n", h)
 			}
 
-			fmt.Fprintf(out, "Response Body:\n") //nolint:errcheck
+			fmt.Fprintf(out, "Response Body:\n")
 			resBody := strings.Split(del.ResponseBody, "\n")
 			for _, b := range resBody {
-				fmt.Fprintf(out, "  %s\n", b) //nolint:errcheck
+				fmt.Fprintf(out, "  %s\n", b)
 			}
 
 			return nil

pkg/ssh/middleware.go 🔗

@@ -135,7 +135,7 @@ func CommandMiddleware(sh ssh.Handler) ssh.Handler {
 		rootCmd.SetContext(ctx)
 
 		if err := rootCmd.ExecuteContext(ctx); err != nil {
-			s.Exit(1) // nolint: errcheck
+			s.Exit(1) //nolint:errcheck
 			return
 		}
 	}

pkg/ssh/session_test.go 🔗

@@ -36,7 +36,7 @@ func TestSession(t *testing.T) {
 		go func() {
 			time.Sleep(1 * time.Second)
 			// s.Signal(gossh.SIGTERM)
-			s.Close() // nolint: errcheck
+			s.Close() //nolint: errcheck
 		}()
 		t.Log("waiting for session to exit")
 		_, err = s.Output("test")

pkg/ssh/ssh.go 🔗

@@ -41,7 +41,7 @@ var (
 )
 
 // SSHServer is a SSH server that implements the git protocol.
-type SSHServer struct { // nolint: revive
+type SSHServer struct { //nolint:revive
 	srv    *ssh.Server
 	cfg    *config.Config
 	be     *backend.Backend

pkg/storage/local.go 🔗

@@ -51,7 +51,7 @@ func (l *LocalStorage) Put(name string, r io.Reader) (int64, error) {
 	if err != nil {
 		return 0, err
 	}
-	defer f.Close() // nolint: errcheck
+	defer f.Close() //nolint: errcheck
 	return io.Copy(f, r)
 }
 

pkg/ui/pages/repo/filesitem.go 🔗

@@ -118,12 +118,12 @@ func (d FileItemDelegate) Render(w io.Writer, m list.Model, index int, listItem
 		nameStyle = s.Active.FileName
 		sizeStyle = s.Active.FileSize
 		modeStyle = s.Active.FileMode
-		fmt.Fprint(w, s.Selector.Render(">")) //nolint:errcheck
+		fmt.Fprint(w, s.Selector.Render(">"))
 	} else {
 		nameStyle = s.Normal.FileName
 		sizeStyle = s.Normal.FileSize
 		modeStyle = s.Normal.FileMode
-		fmt.Fprint(w, s.Selector.Render(" ")) //nolint:errcheck
+		fmt.Fprint(w, s.Selector.Render(" "))
 	}
 	sizeStyle = sizeStyle.
 		Width(8).
@@ -142,7 +142,6 @@ func (d FileItemDelegate) Render(w io.Writer, m list.Model, index int, listItem
 	truncate := lipgloss.NewStyle().MaxWidth(m.Width() -
 		s.Selector.GetHorizontalFrameSize() -
 		s.Selector.GetWidth())
-	//nolint:errcheck
 	fmt.Fprint(w,
 		d.common.Zone.Mark(
 			i.ID(),

pkg/ui/pages/repo/logitem.go 🔗

@@ -130,7 +130,7 @@ func (d LogItemDelegate) Render(w io.Writer, m list.Model, index int, listItem l
 	}
 	who += styles.Desc.Render("on ") + styles.Keyword.Render(date)
 	who = common.TruncateString(who, m.Width()-horizontalFrameSize)
-	fmt.Fprint(w, //nolint:errcheck
+	fmt.Fprint(w,
 		d.common.Zone.Mark(
 			i.ID(),
 			styles.Base.Render(

pkg/ui/pages/repo/refsitem.go 🔗

@@ -191,7 +191,7 @@ func (d RefItemDelegate) Render(w io.Writer, m list.Model, index int, listItem l
 			PaddingLeft(1).
 			Render(sha)
 	}
-	fmt.Fprint(w, //nolint:errcheck
+	fmt.Fprint(w,
 		d.common.Zone.Mark(
 			i.ID(),
 			st.Base.Render(

pkg/ui/pages/repo/repo.go 🔗

@@ -32,7 +32,7 @@ type EmptyRepoMsg struct{}
 type CopyURLMsg struct{}
 
 // RepoMsg is a message that contains a git.Repository.
-type RepoMsg proto.Repository // nolint:revive
+type RepoMsg proto.Repository //nolint:revive
 
 // GoBackMsg is a message to go back to the previous view.
 type GoBackMsg struct{}

pkg/ui/pages/repo/stashitem.go 🔗

@@ -93,7 +93,7 @@ func (d StashItemDelegate) Render(w io.Writer, m list.Model, index int, listItem
 
 	selector = s.Selector.Render(selector)
 	title := st.Render(item.Title())
-	fmt.Fprint(w, d.common.Zone.Mark( //nolint:errcheck
+	fmt.Fprint(w, d.common.Zone.Mark(
 		item.ID(),
 		common.TruncateString(fmt.Sprintf("%s%s",
 			selector,

pkg/ui/pages/selection/item.go 🔗

@@ -214,7 +214,7 @@ func (d *ItemDelegate) Render(w io.Writer, m list.Model, index int, listItem lis
 	}
 	cmd = common.TruncateString(cmd, m.Width()-styles.Base.GetHorizontalFrameSize())
 	s.WriteString(cmdStyler(cmd))
-	fmt.Fprint(w, //nolint:errcheck
+	fmt.Fprint(w,
 		d.common.Zone.Mark(i.ID(),
 			styles.Base.Render(s.String()),
 		),

pkg/web/git.go 🔗

@@ -434,7 +434,7 @@ func serviceRpc(w http.ResponseWriter, r *http.Request) {
 			renderInternalServerError(w, r)
 			return
 		}
-		defer reader.Close() // nolint: errcheck
+		defer reader.Close() //nolint: errcheck
 	}
 
 	cmd.Stdin = reader
@@ -459,7 +459,7 @@ type flushResponseWriter struct {
 }
 
 func (f *flushResponseWriter) ReadFrom(r io.Reader) (int64, error) {
-	flusher := http.NewResponseController(f.ResponseWriter) // nolint: bodyclose
+	flusher := http.NewResponseController(f.ResponseWriter) //nolint: bodyclose
 
 	var n int64
 	p := make([]byte, 1024)
@@ -537,12 +537,12 @@ func getInfoRefs(w http.ResponseWriter, r *http.Request) {
 		w.Header().Set("Content-Type", fmt.Sprintf("application/x-%s-advertisement", service))
 		w.WriteHeader(http.StatusOK)
 		if version < 2 {
-			git.WritePktline(w, "# service="+service.String()) // nolint: errcheck
+			git.WritePktline(w, "# service="+service.String()) //nolint: errcheck
 		}
-		w.Write(refs.Bytes()) // nolint: errcheck
+		w.Write(refs.Bytes()) //nolint: errcheck
 	} else {
 		// Dumb HTTP
-		updateServerInfo(ctx, dir) // nolint: errcheck
+		updateServerInfo(ctx, dir) //nolint: errcheck
 		hdrNocache(w)
 		sendFile("text/plain; charset=utf-8", w, r)
 	}

pkg/web/git_lfs.go 🔗

@@ -41,7 +41,7 @@ func serviceLfsBatch(w http.ResponseWriter, r *http.Request) {
 	}
 
 	var batchRequest lfs.BatchRequest
-	defer r.Body.Close() // nolint: errcheck
+	defer r.Body.Close() //nolint: errcheck
 	if err := json.NewDecoder(r.Body).Decode(&batchRequest); err != nil {
 		logger.Errorf("error decoding json: %s", err)
 		renderJSON(w, http.StatusUnprocessableEntity, lfs.ErrorResponse{
@@ -282,7 +282,7 @@ func serviceLfsBasicDownload(w http.ResponseWriter, r *http.Request) {
 
 	w.Header().Set("Content-Type", "application/octet-stream")
 	w.Header().Set("Content-Length", strconv.FormatInt(obj.Size, 10))
-	defer f.Close() // nolint: errcheck
+	defer f.Close() //nolint: errcheck
 	if _, err := io.Copy(w, f); err != nil {
 		logger.Error("error copying object to response", "oid", oid, "err", err)
 		renderJSON(w, http.StatusInternalServerError, lfs.ErrorResponse{
@@ -313,7 +313,7 @@ func serviceLfsBasicUpload(w http.ResponseWriter, r *http.Request) {
 	strg := storage.NewLocalStorage(filepath.Join(cfg.DataPath, "lfs", repoID))
 	name := mux.Vars(r)["repo"]
 
-	defer r.Body.Close() // nolint: errcheck
+	defer r.Body.Close() //nolint: errcheck
 	repo, err := be.Repository(ctx, name)
 	if err != nil {
 		renderJSON(w, http.StatusNotFound, lfs.ErrorResponse{
@@ -326,7 +326,7 @@ func serviceLfsBasicUpload(w http.ResponseWriter, r *http.Request) {
 	// partial error, so we need to skip existing objects.
 	if _, err := datastore.GetLFSObjectByOid(ctx, dbx, repo.ID(), oid); err == nil {
 		// Object exists, skip request
-		io.Copy(io.Discard, r.Body) // nolint: errcheck
+		io.Copy(io.Discard, r.Body) //nolint: errcheck
 		renderStatus(http.StatusOK)(w, nil)
 		return
 	} else if !errors.Is(err, db.ErrRecordNotFound) {
@@ -385,7 +385,7 @@ func serviceLfsBasicVerify(w http.ResponseWriter, r *http.Request) {
 		return
 	}
 
-	defer r.Body.Close() // nolint: errcheck
+	defer r.Body.Close() //nolint: errcheck
 	if err := json.NewDecoder(r.Body).Decode(&pointer); err != nil {
 		logger.Error("error decoding json", "err", err)
 		renderJSON(w, http.StatusBadRequest, lfs.ErrorResponse{

pkg/web/logging.go 🔗

@@ -24,7 +24,7 @@ var _ http.Flusher = (*logWriter)(nil)
 
 var _ http.Hijacker = (*logWriter)(nil)
 
-var _ http.CloseNotifier = (*logWriter)(nil) // nolint: staticcheck
+var _ http.CloseNotifier = (*logWriter)(nil) //nolint: staticcheck
 
 // Write implements http.ResponseWriter.
 func (r *logWriter) Write(p []byte) (int, error) {
@@ -54,7 +54,7 @@ func (r *logWriter) Flush() {
 
 // CloseNotify implements http.CloseNotifier.
 func (r *logWriter) CloseNotify() <-chan bool {
-	if cn, ok := r.ResponseWriter.(http.CloseNotifier); ok { // nolint: staticcheck
+	if cn, ok := r.ResponseWriter.(http.CloseNotifier); ok { //nolint: staticcheck
 		return cn.CloseNotify()
 	}
 	return nil

pkg/web/util.go 🔗

@@ -9,6 +9,6 @@ import (
 func renderStatus(code int) http.HandlerFunc {
 	return func(w http.ResponseWriter, _ *http.Request) {
 		w.WriteHeader(code)
-		io.WriteString(w, fmt.Sprintf("%d %s", code, http.StatusText(code))) // nolint: errcheck
+		io.WriteString(w, fmt.Sprintf("%d %s", code, http.StatusText(code))) //nolint: errcheck
 	}
 }

pkg/webhook/webhook.go 🔗

@@ -70,7 +70,7 @@ func SendWebhook(ctx context.Context, w models.Webhook, event Event, payload int
 		if err != nil {
 			return err
 		}
-		buf.WriteString(v.Encode()) // nolint: errcheck
+		buf.WriteString(v.Encode()) //nolint: errcheck
 	default:
 		return ErrInvalidContentType
 	}
@@ -90,7 +90,7 @@ func SendWebhook(ctx context.Context, w models.Webhook, event Event, payload int
 	reqBody := buf.String()
 	if w.Secret != "" {
 		sig := hmac.New(sha256.New, []byte(w.Secret))
-		sig.Write([]byte(reqBody)) // nolint: errcheck
+		sig.Write([]byte(reqBody)) //nolint: errcheck
 		headers.Add("X-SoftServe-Signature", "sha256="+hex.EncodeToString(sig.Sum(nil)))
 	}
 
@@ -111,7 +111,7 @@ func SendWebhook(ctx context.Context, w models.Webhook, event Event, payload int
 		}
 
 		if res.Body != nil {
-			defer res.Body.Close() // nolint: errcheck
+			defer res.Body.Close() //nolint: errcheck
 			b, err := io.ReadAll(res.Body)
 			if err != nil {
 				return err

testscript/script_test.go 🔗

@@ -263,7 +263,7 @@ func cmdUI(key ssh.Signer) func(ts *testscript.TestScript, neg bool, args []stri
 					break
 				}
 				check(ts, err, neg)
-				stdin.Write([]byte(string(r))) // nolint: errcheck
+				stdin.Write([]byte(string(r))) //nolint: errcheck
 
 				// Wait for the UI to process the input
 				time.Sleep(100 * time.Millisecond)