Skip to content

bluedrop-learning-networks/supabase-cli-system-tools

 
 

Repository files navigation

Supabase CLI (v1)

Fork of Supabase's cli, adds --use-system-tools

Supabase's db dump command starts a container to execute the internal dump_data.sh, dump_role.sh, and dump_schema.sh which in turn use the container's pg_dump and pg_dumpall. This is problematic because in makes it difficult/impossible to run db dump inside a containered environment such as Kubernetes without providing privileged access to the host system container runtime.

This fork of Supabase's cli adds the parameter --use-system-tools to the db dump command. This allows for using the host system's pg_dump, pg_dumpall, and shell to execute the internal shell commands. This avoids the container in container problem (commonly known as dind, docker-in-docker).


Coverage Status

Supabase is an open source Firebase alternative. We're building the features of Firebase using enterprise-grade open source tools.

This repository contains all the functionality for Supabase CLI.

  • Running Supabase locally
  • Managing database migrations
  • Pushing your local changes to production
  • Create and Deploy Supabase Functions
  • Manage your Supabase Account
  • Manage your Supabase Projects
  • Generating types directly from your database schema
  • Generating API and validation schemas from your database

Getting started

Install the CLI

Available via NPM as dev dependency. To install:

npm i supabase --save-dev

To install the beta release channel:

npm i supabase@beta --save-dev

Note For Bun versions below v1.0.17, you must add supabase as a trusted dependency before running bun add -D supabase.

macOS

Available via Homebrew. To install:

brew install supabase/tap/supabase

To install the beta release channel:

brew install supabase/tap/supabase-beta
brew link --overwrite supabase-beta

To upgrade:

brew upgrade supabase
Windows

Available via Scoop. To install:

scoop bucket add supabase https://github.com/supabase/scoop-bucket.git
scoop install supabase

To upgrade:

scoop update supabase
Linux

Available via Homebrew and Linux packages.

via Homebrew

To install:

brew install supabase/tap/supabase

To upgrade:

brew upgrade supabase

via Linux packages

Linux packages are provided in Releases. To install, download the .apk/.deb/.rpm/.pkg.tar.zst file depending on your package manager and run the respective commands.

sudo apk add --allow-untrusted <...>.apk
sudo dpkg -i <...>.deb
sudo rpm -i <...>.rpm
sudo pacman -U <...>.pkg.tar.zst
Other Platforms

You can also install the CLI via go modules without the help of package managers.

go install github.com/supabase/cli@latest

Add a symlink to the binary in $PATH for easier access:

ln -s "$(go env GOPATH)/cli" /usr/bin/supabase

This works on other non-standard Linux distros.

Community Maintained Packages

Available via pkgx. Package script here. To install in your working directory:

pkgx install supabase

Available via Nixpkgs. Package script here.

Run the CLI

supabase help

Or using npx:

npx supabase help

Docs

Command & config reference can be found here.

Breaking changes

The CLI is a WIP and we're still exploring the design, so expect a lot of breaking changes. We try to document migration steps in Releases. Please file an issue if these steps don't work!

Developing

To run from source:

# Go >= 1.20
go run . help

Packages

No packages published

Languages

  • Go 79.4%
  • PLpgSQL 18.9%
  • Other 1.7%