fix: use merged flags in archive cmd and move defer after error checks
All checks were successful
CI / vet (pull_request) Successful in 29s
CI / build (pull_request) Successful in 32s
CI / test (pull_request) Successful in 57s

- 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 <noreply@anthropic.com>
This commit is contained in:
2026-02-15 16:17:38 +00:00
parent 49f294e884
commit e5e0db85e8
7 changed files with 7 additions and 13 deletions

View File

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

View File

@@ -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()

View File

@@ -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 {

View File

@@ -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

View File

@@ -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)

View File

@@ -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 == "" {

View File

@@ -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)