• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

supabase / cli / 28105259291
65%
develop: 65%

Build:
Build:
LAST BUILD BRANCH: gh-readonly-queue/develop/pr-5718-64df2ba83785d849fd230ef7aea7cf5a60de63c4
DEFAULT BRANCH: develop
Ran 24 Jun 2026 02:20PM UTC
Jobs 1
Files 228
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

24 Jun 2026 02:18PM UTC coverage: 64.886%. Remained the same
28105259291

push

github

web-flow
feat(cli): port supabase storage ls/cp/mv/rm to native TypeScript (#5667)

## What changed

Replaces the Phase 0 `LegacyGoProxy` shims for `storage ls/cp/mv/rm`
with native Effect implementations that talk to the Storage gateway
directly (`apps/cli-go/internal/storage` as the reference), and adds
TS-only `--output-format json|stream-json` on top of byte-faithful Go
text output.

- **`ls`** — pagination + recursive BFS over buckets/objects.
- **`cp`** — 4-way scheme branch (download/upload, single/recursive),
dst-key resolution, bucket auto-create on `Bucket not found`,
content-type sniff/refine, `--cache-control`/`--content-type`/`--jobs`.
- **`mv`** — single move with recursive per-object BFS fallback on
`not_found`.
- **`rm`** — group-by-bucket, confirm prompt, chunked deletes (1000),
recursive directory + bucket removal.

## Shared-infra promotion (hoist-before-duplicate)

The Storage gateway, credential derivation, bucket-config helpers,
content-type sniffing, the gateway runtime layer, and the yes/no prompt
are promoted out of `seed buckets` into `legacy/shared/`. `seed buckets`
is refactored to consume them in the same change (its existing suite
covers the regression).

## Reviewer notes

- **`--linked`/`--local` are per-leaf, not group scoped globals.**
Effect CLI requires global-flag names to be unique tree-wide and `seed`
already owns `linked`/`local` with opposite Go defaults, so two groups
can't both declare them (caught by the bundled-binary smoke test). Cost
vs Go's persistent flags: the flags must follow the subcommand token
(`storage ls --local`, not `storage --local ls`) — the same shape the
`db` family uses. Documented in `storage.flags.ts` + each
`SIDE_EFFECTS.md`.
- **Parity over hardening:** a multi-perspective review flagged a
path-traversal write primitive in recursive download (remote object
names → local paths). Go's `filepath.Join` has no boundary guard, so
adding one would diverge from the strict 1:1 port; left identical to G... (continued)

10869 of 16751 relevant lines covered (64.89%)

10.29 hits per line

Jobs
ID Job ID Ran Files Coverage
1 28105259291.1 24 Jun 2026 02:20PM UTC 228
64.89
GitHub Action Run
Source Files on build 28105259291
  • Tree
  • List 228
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #28105259291
  • 6ff1a868 on github
  • Prev Build on develop (#28103415459)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc