diff --git a/Makefile b/Makefile index 35801b2..c0df18c 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,7 @@ LDFLAGS := -s -w \ # beyond switching net/dns to the pure-Go resolver. export CGO_ENABLED := 0 -.PHONY: help all build build-amd64 build-arm64 test pkg-deb fmt vet lint check clean +.PHONY: help all build build-amd64 build-arm64 test pkg-deb fmt fixstyle vet lint check clean help: ## Show this help @printf "Usage: make \n\nTargets:\n" @@ -45,6 +45,9 @@ pkg-deb: build-amd64 build-arm64 ## Build .deb packages for amd64 and arm64 fmt: ## go fmt everything go fmt ./... +fixstyle: ## Reformat the entire tree with gofmt + gofmt -w . + vet: ## go vet everything go vet ./... diff --git a/internal/indexgen/indexgen.go b/internal/indexgen/indexgen.go index 323ddf6..6c22890 100644 --- a/internal/indexgen/indexgen.go +++ b/internal/indexgen/indexgen.go @@ -245,12 +245,13 @@ func ProcessDir(topDir string, opts *Options) error { if err != nil { return fmt.Errorf("cannot create file %s: %w", indexPath, err) } - defer file.Close() - - err = GetHTMLTemplate().Execute(file, templateData) - if err != nil { + if err := GetHTMLTemplate().Execute(file, templateData); err != nil { + _ = file.Close() return fmt.Errorf("failed to execute template: %w", err) } + if err := file.Close(); err != nil { + return fmt.Errorf("failed to close file %s: %w", indexPath, err) + } } if opts.Recursive { diff --git a/internal/indexgen/indexgen_test.go b/internal/indexgen/indexgen_test.go index 0189eb8..81eba7d 100644 --- a/internal/indexgen/indexgen_test.go +++ b/internal/indexgen/indexgen_test.go @@ -271,7 +271,7 @@ func TestReadDirEntries(t *testing.T) { if err != nil { t.Fatalf("Failed to write to file: %v", err) } - f.Close() + _ = f.Close() } // Create a subdirectory @@ -328,7 +328,7 @@ func TestReadDirEntriesWithHidden(t *testing.T) { if err != nil { t.Fatalf("Failed to create test file %s: %v", file, err) } - f.Close() + _ = f.Close() } opts := &Options{ @@ -365,7 +365,7 @@ func TestReadDirEntriesWithRegexExclusion(t *testing.T) { if err != nil { t.Fatalf("Failed to create test file %s: %v", file, err) } - f.Close() + _ = f.Close() } regex := regexp.MustCompile("(build|node_modules)") diff --git a/internal/indexgen/integration_test.go b/internal/indexgen/integration_test.go index 1cdd81e..1df1879 100644 --- a/internal/indexgen/integration_test.go +++ b/internal/indexgen/integration_test.go @@ -22,7 +22,7 @@ func TestProcessDirBasic(t *testing.T) { if err != nil { t.Fatalf("Failed to write to file: %v", err) } - f.Close() + _ = f.Close() } opts := &Options{ @@ -85,7 +85,7 @@ func TestProcessDirRecursive(t *testing.T) { if err != nil { t.Fatalf("Failed to create root file: %v", err) } - f.Close() + _ = f.Close() // Create subdirectory with files subDir := filepath.Join(tempDir, "subdir") @@ -98,7 +98,7 @@ func TestProcessDirRecursive(t *testing.T) { if err != nil { t.Fatalf("Failed to create sub file: %v", err) } - subFile.Close() + _ = subFile.Close() // Create nested subdirectory nestedDir := filepath.Join(subDir, "nested") @@ -111,7 +111,7 @@ func TestProcessDirRecursive(t *testing.T) { if err != nil { t.Fatalf("Failed to create nested file: %v", err) } - nestedFile.Close() + _ = nestedFile.Close() opts := &Options{ TopDir: tempDir, @@ -174,7 +174,7 @@ func TestProcessDirWithExcludeRegex(t *testing.T) { if err != nil { t.Fatalf("Failed to create test file %s: %v", file, err) } - f.Close() + _ = f.Close() } regex := regexp.MustCompile("(tmp|node_modules)") @@ -259,7 +259,7 @@ func TestProcessDirVerbose(t *testing.T) { if err != nil { t.Fatalf("Failed to create test file: %v", err) } - f.Close() + _ = f.Close() opts := &Options{ TopDir: tempDir, @@ -308,7 +308,7 @@ func TestProcessDirWithSymlinks(t *testing.T) { if err != nil { t.Fatalf("Failed to write to file: %v", err) } - f.Close() + _ = f.Close() // Create a symlink to the file (skip on Windows) symlinkFile := filepath.Join(tempDir, "symlink.txt")