mirror of
https://github.com/jackwener/OpenCLI.git
synced 2026-09-14 18:25:42 +08:00
498ad3930c
Six new public-API sites — package registries + Docker images + OpenAlex
scholarly works — all unauthenticated, no browser required.
dockerhub search image
rubygems search gem
homebrew formula cask popular
packagist search package
maven search artifact
openalex search work
Conventions held:
- access: 'read' on every command
- typed errors (ArgumentError / EmptyResultError / CommandExecutionError)
instead of generic CliError or silent fallback
- input validators per site (image slugs, gem names, Composer names,
Maven coordinates, OpenAlex work-id / DOI normalization)
- listing rows carry an id-shaped column (image / gem / token / package /
coordinate / id) that round-trips into the corresponding detail command
- HTTP 429 surfaces with retry hint, 404 → EmptyResultError
Audits:
- check:typed-error-lint → no new violations (baseline 196)
- check:silent-column-drop → no new violations (baseline 103)
- advise:listing-id-pairing → unchanged at 13
2.1 KiB
2.1 KiB
Docker Hub
Mode: 🌐 Public · Domain: hub.docker.com
Search and inspect public Docker Hub repositories without auth or browser. Two commands cover discovery and per-repository metadata.
Commands
| Command | Description |
|---|---|
opencli dockerhub search <query> |
Search Docker Hub repositories by keyword |
opencli dockerhub image <name> |
Repository metadata (stars, pulls, last updated, status) |
Usage Examples
# Search repositories
opencli dockerhub search nginx --limit 10
opencli dockerhub search "bitnami redis" --limit 5
# Single repository metadata (use `image` from search rows)
opencli dockerhub image nginx # implicit `library/nginx`
opencli dockerhub image library/nginx
opencli dockerhub image bitnami/redis
# JSON output
opencli dockerhub search nginx -f json
opencli dockerhub image nginx -f json
Output Columns
| Command | Columns |
|---|---|
search |
rank, image, official, stars, pulls, description, url |
image |
image, official, stars, pulls, description, lastUpdated, lastModified, registered, status, url |
The image column from search round-trips into image exactly. Bare repository names (e.g. nginx) resolve to the implicit library owner that Docker Hub uses for official images.
Options
dockerhub search
| Option | Description |
|---|---|
query (positional) |
Search keyword |
--limit |
Max repositories (1-100, default: 25) |
dockerhub image
| Option | Description |
|---|---|
image (positional) |
Repository slug (nginx, library/nginx, bitnami/redis) |
Caveats
- Image slugs are validated upfront against Docker Hub's
[a-z0-9][a-z0-9._-]*pattern (2-255 chars). Bad input raisesArgumentError. - Anonymous traffic is throttled.
HTTP 429surfaces as a typedCommandExecutionErrorwith a retry hint. - Timestamp columns (
lastUpdated,lastModified,registered) are normalized to second-precisionYYYY-MM-DDTHH:MM:SSZ.
Prerequisites
- No browser required — uses
hub.docker.com/v2/search/repositories/andhub.docker.com/v2/repositories/<owner>/<name>/.