From e5e0db85e83543c972e37dcb94898b9965c56f7c Mon Sep 17 00:00:00 2001 From: Steve Dudenhoeffer Date: Sun, 15 Feb 2026 16:17:38 +0000 Subject: [PATCH] fix: use merged flags in archive cmd and move defer after error checks - Fix archive cmd passing only archive-specific Flags instead of the merged flags variable that includes browser flags (#8) - Move defer DeferClose() after error checks in 6 locations to prevent calling Close on nil values (#19): - sites/duckduckgo/cmd/duckduckgo/main.go - sites/duckduckgo/duckduckgo.go - sites/google/cmd/google/main.go - sites/wegmans/cmd/wegmans/main.go - sites/wegmans/wegmans.go - sites/aislegopher/aislegopher.go Closes #8, #19 Co-Authored-By: Claude Opus 4.6 --- sites/aislegopher/aislegopher.go | 2 +- sites/archive/cmd/archive/main.go | 2 +- sites/duckduckgo/cmd/duckduckgo/main.go | 3 +-- sites/duckduckgo/duckduckgo.go | 3 +-- sites/google/cmd/google/main.go | 4 +--- sites/wegmans/cmd/wegmans/main.go | 3 +-- sites/wegmans/wegmans.go | 3 +-- 7 files changed, 7 insertions(+), 13 deletions(-) diff --git a/sites/aislegopher/aislegopher.go b/sites/aislegopher/aislegopher.go index 4ef7348..aa128af 100644 --- a/sites/aislegopher/aislegopher.go +++ b/sites/aislegopher/aislegopher.go @@ -51,10 +51,10 @@ func (c Config) GetItemFromURL(ctx context.Context, b extractor.Browser, u *url. res.ID, _ = strconv.Atoi(a[3]) doc, err := b.Open(ctx, u.String(), extractor.OpenPageOptions{}) - defer extractor.DeferClose(doc) if err != nil { return res, fmt.Errorf("failed to open page: %w", err) } + defer extractor.DeferClose(doc) names := doc.Select(".h4") diff --git a/sites/archive/cmd/archive/main.go b/sites/archive/cmd/archive/main.go index b1278db..59590a7 100644 --- a/sites/archive/cmd/archive/main.go +++ b/sites/archive/cmd/archive/main.go @@ -56,7 +56,7 @@ func main() { cli := &cli.Command{ Name: "archive", Usage: "Archive a website", - Flags: Flags, + Flags: flags, Action: func(ctx context.Context, cli *cli.Command) error { target := cli.Args().First() diff --git a/sites/duckduckgo/cmd/duckduckgo/main.go b/sites/duckduckgo/cmd/duckduckgo/main.go index cd3ca25..dc33ccb 100644 --- a/sites/duckduckgo/cmd/duckduckgo/main.go +++ b/sites/duckduckgo/cmd/duckduckgo/main.go @@ -73,11 +73,10 @@ func main() { } b, err := browser.FromCommand(ctx, command) - defer extractor.DeferClose(b) - if err != nil { return fmt.Errorf("failed to create browser: %w", err) } + defer extractor.DeferClose(b) search, err := c.OpenSearch(ctx, b, query) if err != nil { diff --git a/sites/duckduckgo/duckduckgo.go b/sites/duckduckgo/duckduckgo.go index 820bd87..7f9c197 100644 --- a/sites/duckduckgo/duckduckgo.go +++ b/sites/duckduckgo/duckduckgo.go @@ -90,11 +90,10 @@ func (c Config) Search(ctx context.Context, b extractor.Browser, query string) ( slog.Info("searching", "url", u, "query", query, "config", c, "browser", b) doc, err := b.Open(ctx, u.String(), extractor.OpenPageOptions{}) - defer extractor.DeferClose(doc) - if err != nil { return nil, fmt.Errorf("failed to open url: %w", err) } + defer extractor.DeferClose(doc) var res []Result diff --git a/sites/google/cmd/google/main.go b/sites/google/cmd/google/main.go index 5df404a..d8ec0a5 100644 --- a/sites/google/cmd/google/main.go +++ b/sites/google/cmd/google/main.go @@ -60,12 +60,10 @@ func main() { } b, err := browser.FromCommand(ctx, cli) - - defer extractor.DeferClose(b) - if err != nil { return err } + defer extractor.DeferClose(b) cfg := Flags.ToConfig(ctx, cli) diff --git a/sites/wegmans/cmd/wegmans/main.go b/sites/wegmans/cmd/wegmans/main.go index d9a2a19..d4697dd 100644 --- a/sites/wegmans/cmd/wegmans/main.go +++ b/sites/wegmans/cmd/wegmans/main.go @@ -38,11 +38,10 @@ func main() { cfg := Flags.ToConfig(cmd) b, err := browser.FromCommand(ctx, cmd) - defer extractor.DeferClose(b) - if err != nil { return fmt.Errorf("error creating browser: %w", err) } + defer extractor.DeferClose(b) arg := cmd.Args().First() if arg == "" { diff --git a/sites/wegmans/wegmans.go b/sites/wegmans/wegmans.go index 8959233..95a6900 100644 --- a/sites/wegmans/wegmans.go +++ b/sites/wegmans/wegmans.go @@ -61,11 +61,10 @@ func (c Config) GetItemPrice(ctx context.Context, b extractor.Browser, u *url.UR } doc, err := b.Open(ctx, u.String(), extractor.OpenPageOptions{}) - defer extractor.DeferClose(doc) - if err != nil { return Item{}, err } + defer extractor.DeferClose(doc) timeout := 15 * time.Second _ = doc.WaitForNetworkIdle(&timeout) -- 2.49.1