feat(config): implement configuration parsing with CLI flags and env overrides #122

Merged
fuzzy merged 2 commits from feat/config-parsing into main 2026-07-13 17:22:23 +00:00
Owner

What

Implement internal/config package for CLI argument parsing, environment variable overrides, and validation.

Why

Foundation for all downstream features — workers, progress, retry logic all depend on parsed configuration.

Testing

  • go vet ./... passes
  • go build ./... passes
  • golangci-lint run ./... passes
  • Pre-commit hooks pass
  • Manual: pget -h prints help, pget (no args) prints validation error

Breaking Changes

None

Notes

  • Flags: -u, -o, -n, -c, -t, -A
  • Env vars: PGET_CONCURRENCY, PGET_TIMEOUT, PGET_USER_AGENT, PGET_OUTPUT, PGET_RESUME
  • Validation: URL required, concurrency >= 1, timeout > 0

Closes #0014
Closes #0015
Closes #0016
Closes #0017
Closes #0018
Closes #0019

## What Implement `internal/config` package for CLI argument parsing, environment variable overrides, and validation. ## Why Foundation for all downstream features — workers, progress, retry logic all depend on parsed configuration. ## Testing - [x] `go vet ./...` passes - [x] `go build ./...` passes - [x] `golangci-lint run ./...` passes - [x] Pre-commit hooks pass - [x] Manual: `pget -h` prints help, `pget` (no args) prints validation error ## Breaking Changes None ## Notes - Flags: `-u`, `-o`, `-n`, `-c`, `-t`, `-A` - Env vars: `PGET_CONCURRENCY`, `PGET_TIMEOUT`, `PGET_USER_AGENT`, `PGET_OUTPUT`, `PGET_RESUME` - Validation: URL required, concurrency >= 1, timeout > 0 Closes #0014 Closes #0015 Closes #0016 Closes #0017 Closes #0018 Closes #0019
Closes #0014 Closes #0015 Closes #0016 Closes #0017 Closes #0018 Closes #0019
docs(roadmap): mark config parsing complete
All checks were successful
Test and Release / test (pull_request) Successful in 1m49s
Test and Release / lint (pull_request) Successful in 2m44s
4c38eb7412
fuzzy scheduled this pull request to auto merge when all checks succeed 2026-07-13 17:20:22 +00:00
fuzzy self-assigned this 2026-07-13 17:20:55 +00:00
the.auditor left a comment

Review: APPROVED

Verification

  • go vet ./... passes
  • go build ./... passes
  • golangci-lint v2 run ./... 0 issues
  • go mod tidy passes
  • Help output (-h) — prints usage + env docs
  • Validation (pget no args) — "URL is required" + exit 1

Changes

  • internal/config/config.go (new) — Config struct, flag parsing, env overrides, validation
  • cmd/pget/main.go — Integrates config.Parse() error handling
  • ROADMAP.md — Marks Phase 1 config parsing items as [x]

Suggestions (non-blocking)

  • #123applyEnvOverrides silently ignores invalid env var values
  • #124 — Missing unit tests for config package

Closes #0014, #0015, #0016, #0017, #0018, #0019 on merge.

## Review: APPROVED ### Verification - `go vet ./...` — ✅ passes - `go build ./...` — ✅ passes - `golangci-lint v2 run ./...` — ✅ 0 issues - `go mod tidy` — ✅ passes - Help output (`-h`) — ✅ prints usage + env docs - Validation (`pget` no args) — ✅ "URL is required" + exit 1 ### Changes - `internal/config/config.go` (new) — Config struct, flag parsing, env overrides, validation - `cmd/pget/main.go` — Integrates `config.Parse()` error handling - `ROADMAP.md` — Marks Phase 1 config parsing items as [x] ### Suggestions (non-blocking) - #123 — `applyEnvOverrides` silently ignores invalid env var values - #124 — Missing unit tests for config package Closes #0014, #0015, #0016, #0017, #0018, #0019 on merge.
fuzzy merged commit 4c38eb7412 into main 2026-07-13 17:22:23 +00:00
fuzzy deleted branch feat/config-parsing 2026-07-13 17:22:23 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
thwap/pget!122
No description provided.