feat: add prune subcommand, drop archived/stale entries (#1441)
Deploy to GitHub Pages / build (push) Failing after 51s
Deploy to GitHub Pages / deploy (push) Has been skipped
Pull Requests / Weekly QA / test (push) Failing after 1m13s
Broken Links Report / check-links (push) Failing after 45s

* feat: add prune subcommand, drop archived/stale entries, add container-explorer

Add a new `awesome-docker prune` subcommand that removes README entries
whose repository health status matches a configurable set (default:
archived,stale). URLs are read from the local health cache, or from a
markdown report file via --from-report when the cache is outdated.

Apply it against the issue #1439 health report to remove 5 entries
that survived the recent reorg: stitchocker, docker-consul,
blockbridge-docker-volume, docker-explorer, dockdash.

Add google/container-explorer in the Security section as the actively
maintained successor to the now-archived google/docker-explorer.

Co-Authored-By: Claude <noreply@anthropic.com>

* golangci-lint config

* fix: address golangci-lint findings

Fixes errcheck on bufio.Writer.WriteString, gocritic rangeValCopy via
indexed loops with pointer locals, gosec G703 on user-supplied CLI
output path, noctx by switching to exec.CommandContext with a timeout
in the TUI url opener, prealloc in the scorer test, plus fieldalignment
struct reorders and golines line breaks from --fix.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
Julien Bisconti
2026-05-18 23:46:32 +02:00
committed by GitHub
parent 503e5bd7c7
commit 29222bfcb5
23 changed files with 2548 additions and 2803 deletions
+74
View File
@@ -0,0 +1,74 @@
# Sample golangci-lint config. Edit or delete to taste.
# Full reference: https://golangci-lint.run/usage/configuration/
version: "2"
run:
timeout: 5m
linters:
enable:
- bodyclose # checks HTTP response body is closed
- copyloopvar # Go 1.22+ loop var capture
- dupword # catches "the the"
- durationcheck # multiplication of two durations
- embeddedstructfieldcheck
- errcheck # unchecked errors
- errorlint # errors.Is / errors.As hygiene
- forcetypeassert # type assertions without the comma-ok form
- gocritic # opinionated diagnostics
- gosec # security scanner
- govet # stdlib vet
- ineffassign # ineffectual assignments
- intrange # prefer `for range N`
- misspell # spelling
- modernize
- nilerr # `return nil` after checking err != nil
- noctx # http requests without context
- perfsprint # fmt.Sprintf → string concat where safe
- prealloc # slice preallocation hints
- staticcheck # staticcheck.io
- unconvert # redundant type conversions
- unparam # unused function parameters
- unused # dead code
settings:
govet:
enable-all: true
disable:
- shadow
staticcheck:
checks: ["all", "-QF1001", "-QF1002"] # drop quick-fix style nags
gocritic:
enabled-tags: [diagnostic, performance]
disabled-checks:
- hugeParam
gosec:
excludes:
- G104 # covered by errcheck
- G204 # subprocess with variable — allowed in CLI tooling
- G306 # 0600 file perms — CLIs often write executables
exclusions:
generated: lax
presets: [comments, common-false-positives, legacy, std-error-handling]
rules:
# Test code owns its fixtures.
- path: '_test\.go'
linters: [forcetypeassert, dupword, errcheck, gosec, unparam]
# CLI entry point: fmt.Fprint to stdout/stderr is fire-and-forget.
- linters: [errcheck]
source: 'fmt\.Fprint(ln|f)?\('
issues:
max-issues-per-linter: 50
max-same-issues: 10
formatters:
settings:
golines:
max-len: 120
tab-len: 8
enable:
- golines
- gofmt
- goimports