Documentation ¶
Index ¶
- Constants
- Variables
- func Aqua(str string) string
- func AssertProjectRefIsValid(projectRef string) error
- func AssertServiceIsRunning(ctx context.Context, containerId string) error
- func AssertSupabaseCliIsSetUpFS(fsys afero.Fs) error
- func AssertSupabaseDbIsRunning() error
- func Bold(str string) string
- func ChangeWorkDir(fsys afero.Fs) error
- func CliProjectFilter() filters.Args
- func ConnectByConfig(ctx context.Context, config pgconn.Config, options ...func(*pgx.ConnConfig)) (*pgx.Conn, error)
- func ConnectByConfigStream(ctx context.Context, config pgconn.Config, w io.Writer, ...) (*pgx.Conn, error)
- func ConnectByUrl(ctx context.Context, url string, options ...func(*pgx.ConnConfig)) (*pgx.Conn, error)
- func ConnectLocalPostgres(ctx context.Context, config pgconn.Config, options ...func(*pgx.ConnConfig)) (*pgx.Conn, error)
- func DeleteAccessToken(fsys afero.Fs) error
- func DockerExecOnce(ctx context.Context, container string, env []string, cmd []string) (string, error)
- func DockerExecOnceWithStream(ctx context.Context, container, workdir string, env, cmd []string, ...) error
- func DockerImagePull(ctx context.Context, imageTag string, w io.Writer) error
- func DockerImagePullWithRetry(ctx context.Context, image string, retries int) error
- func DockerNetworkCreateIfNotExists(ctx context.Context, mode container.NetworkMode, labels map[string]string) error
- func DockerPullImageIfNotCached(ctx context.Context, imageName string) error
- func DockerRemove(containerId string)
- func DockerRemoveAll(ctx context.Context, w io.Writer) error
- func DockerRunJob(ctx context.Context, job DockerJob, stdout, stderr io.Writer) error
- func DockerRunOnce(ctx context.Context, image string, env []string, cmd []string) (string, error)
- func DockerRunOnceWithConfig(ctx context.Context, config container.Config, hostConfig container.HostConfig, ...) error
- func DockerRunOnceWithStream(ctx context.Context, image string, env, cmd []string, stdout, stderr io.Writer) error
- func DockerStart(ctx context.Context, config container.Config, hostConfig container.HostConfig, ...) (string, error)
- func DockerStreamLogs(ctx context.Context, containerId string, stdout, stderr io.Writer) error
- func DockerStreamLogsOnce(ctx context.Context, containerId string, stdout, stderr io.Writer) error
- func EncodeOutput(format string, w io.Writer, value any) error
- func FallbackLookupIP(ctx context.Context, host string) ([]string, error)
- func FormatTimestamp(timestamp string) string
- func FormatTimestampVersion(timestamp string) string
- func GetApiUrl(path string) string
- func GetCurrentBranchFS(fsys afero.Fs) (string, error)
- func GetCurrentTimestamp() string
- func GetDebugLogger() io.Writer
- func GetDenoPath() (string, error)
- func GetDockerIds() []string
- func GetGtihubClient(ctx context.Context) *github.Client
- func GetHostname() string
- func GetId(name string) string
- func GetLatestRelease(ctx context.Context) (string, error)
- func GetPoolerConfig(projectRef string) *pgconn.Config
- func GetRegistry() string
- func GetRegistryAuth() string
- func GetRegistryImageUrl(imageName string) string
- func GetSupabase() *supabase.ClientWithResponses
- func GetSupabaseAPIHost() string
- func GetSupabaseDashboardURL() string
- func GetSupabaseDbHost(projectRef string) string
- func GetSupabaseHost(projectRef string) string
- func InitConfig(params InitParams, fsys afero.Fs) error
- func InstallOrUpgradeDeno(ctx context.Context, fsys afero.Fs) error
- func IsBranchNameReserved(branch string) bool
- func IsGitRepo() bool
- func IsLocalDatabase(config pgconn.Config) bool
- func LoadAccessToken() (string, error)
- func LoadAccessTokenFS(fsys afero.Fs) (string, error)
- func LoadConfigFS(fsys afero.Fs) error
- func MkdirIfNotExist(path string) error
- func MkdirIfNotExistFS(fsys afero.Fs, path string) error
- func NewDocker() *client.Client
- func ProcessDiffOutput(diffBytes []byte) ([]byte, error)
- func ProcessDiffProgress(p Program, out io.Reader) error
- func ProcessPsqlOutput(out io.Reader, p Program) error
- func ProcessPullOutput(out io.ReadCloser, p Program) error
- func Ptr[T any](v T) *T
- func Red(str string) string
- func RemoveDuplicates[T comparable](slice []T) (result []T)
- func ResolveCNAME(ctx context.Context, host string) (string, error)
- func RunProgram(ctx context.Context, f func(p Program, ctx context.Context) error) error
- func SaveAccessToken(accessToken string, fsys afero.Fs) error
- func ShortContainerImageName(imageName string) string
- func SliceContains[T comparable](s []T, e T) bool
- func SliceEqual[T comparable](a, b []T) bool
- func ToDockerPath(absHostPath string) string
- func ToPostgresURL(config pgconn.Config) string
- func ToRealtimeEnv(addr config.AddressFamily) string
- func UpdateDockerIds()
- func ValidateFunctionSlug(slug string) error
- func WaitAll[T any](containers []T, exec func(container T) error) []error
- func WithTraceContext(ctx context.Context) context.Context
- func WriteConfig(fsys afero.Fs, _test bool) error
- func WriteFile(path string, contents []byte, fsys afero.Fs) error
- func Yellow(str string) string
- type Console
- type DenoScriptDir
- type DialContextFunc
- type DiffDependencies
- type DiffEntry
- type DiffStream
- type DockerJob
- type EnumFlag
- type ImportMap
- type InitParams
- type JobQueue
- type Program
- type ProgressMsg
- type PromptItem
- type PsqlMsg
- type StatusMsg
- type StatusWriter
Constants ¶
const ( DNS_GO_NATIVE = "native" DNS_OVER_HTTPS = "https" )
const ( DefaultApiHost = "https://api.supabase.com" // DEPRECATED DeprecatedApiHost = "https://api.supabase.io" )
const ( // Legacy bundle options DockerDenoDir = "/home/deno" DockerEszipDir = "/root/eszips" DenoVersion = "1.30.3" )
const ( DinDHost = "host.docker.internal" CliProjectLabel = "com.supabase.cli.project" )
const ( // https://dba.stackexchange.com/a/11895 // Args: dbname TerminateDbSqlFmt = `` /* 244-byte string literal not displayed */ SuggestDebugFlag = "Try rerunning the command with --debug to troubleshoot the error." )
const ( OutputEnv = "env" OutputJson = "json" OutputPretty = "pretty" OutputToml = "toml" OutputYaml = "yaml" // OutputMetadata is used with certain SSO commands only. OutputMetadata = "metadata" )
const ( CLI_OWNER = "supabase" CLI_REPO = "cli" )
const AccessTokenKey = "access-token"
Variables ¶
var ( AccessTokenPattern = regexp.MustCompile(`^sbp_[a-f0-9]{40}$`) ErrInvalidToken = errors.New("Invalid access token format. Must be like `sbp_0102...1920`.") ErrMissingToken = errors.Errorf("Access token not provided. Supply an access token by running %s or setting the SUPABASE_ACCESS_TOKEN environment variable.", Aqua("supabase login")) ErrNotLoggedIn = errors.New("You were not logged in, nothing to do.") )
var ( NetId string DbId string ConfigId string KongId string GotrueId string InbucketId string RealtimeId string RestId string StorageId string ImgProxyId string DifferId string PgmetaId string StudioId string EdgeRuntimeId string LogflareId string VectorId string PoolerId string DbAliases = []string{"db", "db.supabase.internal"} KongAliases = []string{"kong", "api.supabase.internal"} GotrueAliases = []string{"auth"} InbucketAliases = []string{"inbucket"} RealtimeAliases = []string{"realtime", Config.Realtime.TenantId} RestAliases = []string{"rest"} StorageAliases = []string{"storage"} ImgProxyAliases = []string{"imgproxy"} PgmetaAliases = []string{"pg_meta"} StudioAliases = []string{"studio"} EdgeRuntimeAliases = []string{"edge_runtime"} LogflareAliases = []string{"analytics"} VectorAliases = []string{"vector"} PoolerAliases = []string{"pooler"} //go:embed templates/initial_schemas/13.sql InitialSchemaPg13Sql string //go:embed templates/initial_schemas/14.sql InitialSchemaPg14Sql string )
var ( Version string SentryDsn string )
Assigned using `-ldflags` https://stackoverflow.com/q/11354518
var ( CmdSuggestion string CurrentDirAbs string // pg_dumpall --globals-only --no-role-passwords --dbname $DB_URL \ // | sed '/^CREATE ROLE postgres;/d' \ // | sed '/^ALTER ROLE postgres WITH /d' \ // | sed "/^ALTER ROLE .* WITH .* LOGIN /s/;$/ PASSWORD 'postgres';/" //go:embed templates/globals.sql GlobalsSql string ProjectRefPattern = regexp.MustCompile(`^[a-z]{20}$`) UUIDPattern = regexp.MustCompile(`^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$`) ProjectHostPattern = regexp.MustCompile(`^(db\.)([a-z]{20})\.supabase\.(co|red)$`) BranchNamePattern = regexp.MustCompile(`[[:word:]-]+`) FuncSlugPattern = regexp.MustCompile(`^[A-Za-z][A-Za-z0-9_-]*$`) ImageNamePattern = regexp.MustCompile(`\/(.*):`) // These schemas are ignored from db diff and db dump PgSchemas = []string{ "information_schema", "pg_*", } // Initialised by postgres image and owned by postgres role InternalSchemas = append([]string{ "_analytics", "_realtime", "_supavisor", "auth", "extensions", "pgbouncer", "realtime", "storage", "supabase_functions", "supabase_migrations", "cron", "dbdev", "graphql", "graphql_public", "net", "pgsodium", "pgsodium_masks", "pgtle", "repack", "tiger", "tiger_data", "timescaledb_*", "_timescaledb_*", "topology", "vault", }, PgSchemas...) ReservedRoles = []string{ "anon", "authenticated", "authenticator", "dashboard_user", "pgbouncer", "postgres", "service_role", "supabase_admin", "supabase_auth_admin", "supabase_functions_admin", "supabase_read_only_user", "supabase_realtime_admin", "supabase_replication_admin", "supabase_storage_admin", "pgsodium_keyholder", "pgsodium_keyiduser", "pgsodium_keymaker", "pgtle_admin", } AllowedConfigs = []string{ "pgaudit.*", "pgrst.*", "session_replication_role", "statement_timeout", "track_io_timing", } SupabaseDirPath = "supabase" ConfigPath = filepath.Join(SupabaseDirPath, "config.toml") GitIgnorePath = filepath.Join(SupabaseDirPath, ".gitignore") TempDir = filepath.Join(SupabaseDirPath, ".temp") ImportMapsDir = filepath.Join(TempDir, "import_maps") ProjectRefPath = filepath.Join(TempDir, "project-ref") PoolerUrlPath = filepath.Join(TempDir, "pooler-url") PostgresVersionPath = filepath.Join(TempDir, "postgres-version") GotrueVersionPath = filepath.Join(TempDir, "gotrue-version") RestVersionPath = filepath.Join(TempDir, "rest-version") StorageVersionPath = filepath.Join(TempDir, "storage-version") StudioVersionPath = filepath.Join(TempDir, "studio-version") PgmetaVersionPath = filepath.Join(TempDir, "pgmeta-version") PoolerVersionPath = filepath.Join(TempDir, "pooler-version") RealtimeVersionPath = filepath.Join(TempDir, "realtime-version") CliVersionPath = filepath.Join(TempDir, "cli-latest") CurrBranchPath = filepath.Join(SupabaseDirPath, ".branches", "_current_branch") SchemasDir = filepath.Join(SupabaseDirPath, "schemas") MigrationsDir = filepath.Join(SupabaseDirPath, "migrations") FunctionsDir = filepath.Join(SupabaseDirPath, "functions") FallbackImportMapPath = filepath.Join(FunctionsDir, "import_map.json") FallbackEnvFilePath = filepath.Join(FunctionsDir, ".env") DbTestsDir = filepath.Join(SupabaseDirPath, "tests") SeedDataPath = filepath.Join(SupabaseDirPath, "seed.sql") CustomRolesPath = filepath.Join(SupabaseDirPath, "roles.sql") ErrNotLinked = errors.Errorf("Cannot find project ref. Have you run %s?", Aqua("supabase link")) ErrInvalidRef = errors.New("Invalid project ref format. Must be like `abcdefghijklmnopqrst`.") ErrInvalidSlug = errors.New("Invalid Function name. Must start with at least one letter, and only include alphanumeric characters, underscores, and hyphens. (^[A-Za-z][A-Za-z0-9_-]*$)") ErrNotRunning = errors.Errorf("%s is not running.", Aqua("supabase start")) )
var Config = config.NewConfig(config.WithHostname(GetHostname()))
var ( DNSResolver = EnumFlag{ Allowed: []string{DNS_GO_NATIVE, DNS_OVER_HTTPS}, Value: DNS_GO_NATIVE, } )
var ( // Used by unit tests DenoPathOverride string )
var Docker = NewDocker()
var FlyRegions = map[string]string{
"ams": "Amsterdam, Netherlands",
"arn": "Stockholm, Sweden",
"bog": "Bogotá, Colombia",
"bos": "Boston, Massachusetts (US)",
"cdg": "Paris, France",
"den": "Denver, Colorado (US)",
"dfw": "Dallas, Texas (US",
"ewr": "Secaucus, NJ (US)",
"fra": "Frankfurt, Germany",
"gdl": "Guadalajara, Mexico",
"gig": "Rio de Janeiro, Brazil",
"gru": "Sao Paulo, Brazil",
"hkg": "Hong Kong, Hong Kong",
"iad": "Ashburn, Virginia (US",
"jnb": "Johannesburg, South Africa",
"lax": "Los Angeles, California (US",
"lhr": "London, United Kingdom",
"maa": "Chennai (Madras), India",
"mad": "Madrid, Spain",
"mia": "Miami, Florida (US)",
"nrt": "Tokyo, Japan",
"ord": "Chicago, Illinois (US",
"otp": "Bucharest, Romania",
"qro": "Querétaro, Mexico",
"scl": "Santiago, Chile",
"sea": "Seattle, Washington (US",
"sin": "Singapore, Singapore",
"sjc": "San Jose, California (US",
"syd": "Sydney, Australia",
"waw": "Warsaw, Poland",
"yul": "Montreal, Canada",
"yyz": "Toronto, Canada",
}
var NoBackupVolume = false
NoBackupVolume TODO: encapsulate this state in a class
var ( OutputDefaultAllowed = []string{ OutputPretty, OutputJson, OutputToml, OutputYaml, } )
var RegionMap = map[string]string{
"ap-northeast-1": "Northeast Asia (Tokyo)",
"ap-northeast-2": "Northeast Asia (Seoul)",
"ap-south-1": "South Asia (Mumbai)",
"ap-southeast-1": "Southeast Asia (Singapore)",
"ap-southeast-2": "Oceania (Sydney)",
"ca-central-1": "Canada (Central)",
"eu-central-1": "Central EU (Frankfurt)",
"eu-west-1": "West EU (Ireland)",
"eu-west-2": "West EU (London)",
"eu-west-3": "West EU (Paris)",
"sa-east-1": "South America (São Paulo)",
"us-east-1": "East US (North Virginia)",
"us-west-1": "West US (North California)",
"us-west-2": "West US (Oregon)",
}
Functions ¶
func AssertProjectRefIsValid ¶ added in v1.58.0
func AssertServiceIsRunning ¶ added in v1.178.2
func AssertSupabaseCliIsSetUpFS ¶ added in v0.32.0
func AssertSupabaseDbIsRunning ¶ added in v0.33.1
func AssertSupabaseDbIsRunning() error
func ChangeWorkDir ¶ added in v1.152.0
func CliProjectFilter ¶ added in v1.123.0
func ConnectByConfig ¶ added in v1.110.1
func ConnectByConfigStream ¶ added in v1.149.0
func ConnectByUrl ¶ added in v1.28.0
func ConnectLocalPostgres ¶ added in v1.17.4
func ConnectLocalPostgres(ctx context.Context, config pgconn.Config, options ...func(*pgx.ConnConfig)) (*pgx.Conn, error)
Connnect to local Postgres with optimised settings. The caller is responsible for closing the connection returned.
func DeleteAccessToken ¶ added in v1.118.0
func DockerExecOnce ¶ added in v0.37.0
func DockerExecOnce(ctx context.Context, container string, env []string, cmd []string) (string, error)
Exec a command once inside a container, returning stdout and throwing error on non-zero exit code.
func DockerExecOnceWithStream ¶ added in v1.50.13
func DockerImagePull ¶ added in v1.26.9
func DockerImagePullWithRetry ¶ added in v1.5.2
func DockerNetworkCreateIfNotExists ¶ added in v1.16.0
func DockerPullImageIfNotCached ¶ added in v0.37.0
func DockerRemove ¶ added in v1.27.1
func DockerRemove(containerId string)
func DockerRunJob ¶ added in v1.183.1
func DockerRunOnce ¶ added in v0.37.0
Runs a container image exactly once, returning stdout and throwing error on non-zero exit code.
func DockerRunOnceWithConfig ¶ added in v1.41.4
func DockerRunOnceWithStream ¶ added in v1.27.2
func DockerStart ¶ added in v1.11.2
func DockerStreamLogs ¶ added in v1.49.0
func DockerStreamLogsOnce ¶ added in v1.175.2
func FallbackLookupIP ¶ added in v1.41.0
Performs DNS lookup via HTTPS, in case firewall blocks native netgo resolver.
func FormatTimestamp ¶ added in v1.79.0
func FormatTimestampVersion ¶ added in v1.176.1
func GetCurrentTimestamp ¶
func GetCurrentTimestamp() string
func GetDebugLogger ¶ added in v1.152.0
func GetDenoPath ¶ added in v1.4.7
func GetDockerIds ¶ added in v1.175.2
func GetDockerIds() []string
func GetHostname ¶ added in v1.134.3
func GetHostname() string
func GetLatestRelease ¶ added in v1.168.0
func GetPoolerConfig ¶ added in v1.141.1
func GetRegistry ¶ added in v1.126.0
func GetRegistry() string
func GetRegistryAuth ¶ added in v1.16.2
func GetRegistryAuth() string
func GetRegistryImageUrl ¶ added in v1.0.1
func GetSupabase ¶ added in v0.38.5
func GetSupabase() *supabase.ClientWithResponses
func GetSupabaseAPIHost ¶ added in v0.31.1
func GetSupabaseAPIHost() string
func GetSupabaseDashboardURL ¶ added in v0.31.1
func GetSupabaseDashboardURL() string
func GetSupabaseDbHost ¶ added in v1.4.10
func GetSupabaseHost ¶ added in v1.10.0
func InitConfig ¶ added in v1.38.1
func InitConfig(params InitParams, fsys afero.Fs) error
func InstallOrUpgradeDeno ¶ added in v0.19.0
func IsBranchNameReserved ¶ added in v0.13.0
func IsLocalDatabase ¶ added in v1.145.2
func LoadAccessToken ¶ added in v0.20.0
func LoadConfigFS ¶ added in v0.32.0
func MkdirIfNotExist ¶ added in v0.19.0
func ProcessDiffOutput ¶ added in v0.9.0
func ProcessDiffProgress ¶ added in v1.27.2
func ProcessPullOutput ¶ added in v0.9.0
func ProcessPullOutput(out io.ReadCloser, p Program) error
func RemoveDuplicates ¶ added in v1.144.3
func RemoveDuplicates[T comparable](slice []T) (result []T)
func ResolveCNAME ¶ added in v1.10.0
func RunProgram ¶ added in v1.27.2
func SaveAccessToken ¶ added in v1.50.15
func ShortContainerImageName ¶ added in v1.19.0
func SliceContains ¶ added in v1.87.0
func SliceContains[T comparable](s []T, e T) bool
func SliceEqual ¶ added in v1.87.0
func SliceEqual[T comparable](a, b []T) bool
func ToDockerPath ¶ added in v1.176.10
func ToPostgresURL ¶ added in v1.42.0
func ToRealtimeEnv ¶ added in v1.159.4
func ToRealtimeEnv(addr config.AddressFamily) string
func UpdateDockerIds ¶ added in v1.123.0
func UpdateDockerIds()
func ValidateFunctionSlug ¶ added in v0.20.6
Types ¶
type Console ¶ added in v1.162.5
type Console struct { IsTTY bool // contains filtered or unexported fields }
func NewConsole ¶ added in v1.162.5
func NewConsole() *Console
func (*Console) PromptText ¶ added in v1.162.5
PromptText asks for input using the label.
func (*Console) PromptYesNo ¶ added in v1.162.5
PromptYesNo asks yes/no questions using the label.
type DenoScriptDir ¶ added in v1.34.0
func CopyDenoScripts ¶ added in v1.34.0
Copy Deno scripts needed for function deploy and downloads, returning a DenoScriptDir struct or an error.
type DialContextFunc ¶ added in v1.41.1
type DiffDependencies ¶ added in v0.13.0
type DiffDependencies struct {
Type string `json:"type"`
}
type DiffStream ¶ added in v1.27.2
type DiffStream struct {
// contains filtered or unexported fields
}
func NewDiffStream ¶ added in v1.27.2
func NewDiffStream(p Program) *DiffStream
func (DiffStream) Collect ¶ added in v1.27.2
func (c DiffStream) Collect() ([]byte, error)
func (DiffStream) Stderr ¶ added in v1.27.2
func (c DiffStream) Stderr() io.Writer
func (DiffStream) Stdout ¶ added in v1.27.2
func (c DiffStream) Stdout() io.Writer
type EnumFlag ¶ added in v0.39.0
Ref: https://github.com/spf13/pflag/issues/236#issuecomment-931600452
type ImportMap ¶ added in v1.53.0
type ImportMap struct { Imports map[string]string `json:"imports"` Scopes map[string]map[string]string `json:"scopes"` }
func NewImportMap ¶ added in v1.53.0
func (*ImportMap) BindHostModules ¶ added in v1.176.8
type InitParams ¶ added in v1.115.0
type JobQueue ¶ added in v1.137.0
type JobQueue struct {
// contains filtered or unexported fields
}
JobQueue implements a background job processor using a single channel and wait group.
The channel is initialised with a maximum number of concurrent workers. Adding a new job consumes a worker from the channel. After finishing a job, the worker is added back to the channel. When all workers are consumed, adding new job will block.
Example usage:
jq := NewJobQueue(5) err := jq.Put(func() error { return nil }) errors.Join(err, jq.Collect())
func NewJobQueue ¶ added in v1.137.0
type Program ¶ added in v0.17.1
An interface describing the parts of BubbleTea's Program that we actually use.
func NewProgram ¶ added in v0.17.1
func NewProgram(model tea.Model, opts ...tea.ProgramOption) Program
type ProgressMsg ¶ added in v0.9.0
type ProgressMsg *float64
type PromptItem ¶ added in v0.39.0
PromptItem is exposed as prompt input, empty summary + details will be excluded.
func PromptChoice ¶ added in v0.39.0
func PromptChoice(ctx context.Context, title string, items []PromptItem) (PromptItem, error)
Prompt user to choose from a list of items, returns the chosen index.
func (PromptItem) Description ¶ added in v0.39.0
func (i PromptItem) Description() string
func (PromptItem) FilterValue ¶ added in v0.39.0
func (i PromptItem) FilterValue() string
func (PromptItem) Title ¶ added in v0.39.0
func (i PromptItem) Title() string
type StatusWriter ¶ added in v1.28.0
type StatusWriter struct {
Program
}