Borg/cmd
google-labs-jules[bot] 6071dc74f1 feat: Implement bandwidth limiting for collect commands
This commit introduces a new bandwidth limiting feature to the `borg collect` command. The feature is implemented using a token bucket algorithm in a new `pkg/ratelimit` package. The rate limiter is integrated with the `http.Client` via a custom `http.RoundTripper`, and the feature is exposed to the user through a new `--bandwidth` flag on the `collect` command.

The bandwidth limiting feature has been applied to the `website` and `github` collectors, and unit and integration tests have been added to verify the functionality.

The following changes have been made:

- Created a new `pkg/ratelimit` package with a token bucket implementation.
- Integrated the rate limiter with `http.Client` using a custom `http.RoundTripper`.
- Added a `--bandwidth` flag to the `collect` command.
- Applied the bandwidth limit to the `website` and `github` collectors.
- Added unit tests for the rate limiter and bandwidth parsing logic.
- Added integration tests for the `collect website` and `collect github repo` commands.

The following issues were encountered and were being addressed when the session ended:

- Build errors in the `cmd` package, specifically in `cmd/all.go` and `cmd/all_test.go`.
- The need for a `MockGithubClient` in the `mocks` package.
- The `website` package needs to be refactored to reduce code duplication.
- The rate limiter's performance can be improved.

Co-authored-by: Snider <631881+Snider@users.noreply.github.com>
2026-02-02 00:54:01 +00:00
..
dapp-fm feat: Add dapp.fm native desktop player (Wails) 2026-01-06 18:42:30 +00:00
dapp-fm-app feat: SMSG v2 binary format with zstd compression + RFC-001 spec 2026-01-10 19:57:33 +00:00
extract-demo feat: lazy loading profile page + v3 streaming polish 2026-01-12 17:48:32 +00:00
mkdemo fix: mobile scrolling + clean up mkdemo hardcoded values 2026-01-12 15:35:13 +00:00
mkdemo-abr feat: adaptive bitrate streaming (ABR) for HLS-style encrypted video 2026-01-13 15:40:15 +00:00
mkdemo-v3 feat: lazy loading profile page + v3 streaming polish 2026-01-12 17:48:32 +00:00
all.go feat: Implement bandwidth limiting for collect commands 2026-02-02 00:54:01 +00:00
all_test.go feat: Implement bandwidth limiting for collect commands 2026-02-02 00:54:01 +00:00
collect.go feat: Implement bandwidth limiting for collect commands 2026-02-02 00:54:01 +00:00
collect_github.go feat: Improve test coverage and refactor for testability 2025-11-03 19:34:36 +00:00
collect_github_release_subcommand.go feat: Bug fixes and refactoring 2025-11-03 20:14:47 +00:00
collect_github_repo.go feat: Add ChaCha20-Poly1305 encryption and decryption for TIM files (.stim), enhance CLI for encryption format handling (stim), and include metadata inspection support 2025-12-26 01:25:03 +00:00
collect_github_repo_test.go feat: Implement bandwidth limiting for collect commands 2026-02-02 00:54:01 +00:00
collect_github_repos.go feat: Implement bandwidth limiting for collect commands 2026-02-02 00:54:01 +00:00
collect_github_repos_test.go feat: Implement bandwidth limiting for collect commands 2026-02-02 00:54:01 +00:00
collect_pwa.go feat: Add ChaCha20-Poly1305 encryption and decryption for TIM files (.stim), enhance CLI for encryption format handling (stim), and include metadata inspection support 2025-12-26 01:25:03 +00:00
collect_website.go feat: Implement bandwidth limiting for collect commands 2026-02-02 00:54:01 +00:00
collect_website_test.go feat: Implement bandwidth limiting for collect commands 2026-02-02 00:54:01 +00:00
compile.go feat: Add ChaCha20-Poly1305 encryption and decryption for TIM files (.stim), enhance CLI for encryption format handling (stim), and include metadata inspection support 2025-12-26 01:25:03 +00:00
compile_test.go feat: Add trix encryption and format 2025-11-14 13:47:27 +00:00
console.go feat: Add Borg Console and release workflow 2025-12-27 02:32:31 +00:00
decode.go feat: Add ChaCha20-Poly1305 encryption and decryption for TIM files (.stim), enhance CLI for encryption format handling (stim), and include metadata inspection support 2025-12-26 01:25:03 +00:00
decode_test.go feat: Add trix encryption and format 2025-11-14 13:47:27 +00:00
exec.go feat: Add compile and run commands for RUNC matrices 2025-11-13 19:16:12 +00:00
inspect.go feat: Add ChaCha20-Poly1305 encryption and decryption for TIM files (.stim), enhance CLI for encryption format handling (stim), and include metadata inspection support 2025-12-26 01:25:03 +00:00
root.go feat: Improve test coverage and refactor for testability 2025-11-03 18:25:04 +00:00
root_test.go feat: Add _Good, _Bad, and _Ugly tests 2025-11-14 10:36:35 +00:00
run.go feat: Add ChaCha20-Poly1305 encryption and decryption for TIM files (.stim), enhance CLI for encryption format handling (stim), and include metadata inspection support 2025-12-26 01:25:03 +00:00
run_test.go Improve test coverage for datanode and tim packages, and fix cmd tests 2025-11-23 18:58:32 +00:00
serve.go feat: Add _Good, _Bad, and _Ugly tests 2025-11-14 10:36:35 +00:00