Documentation ¶
Index ¶
- Constants
- Variables
- func Aqua(str string) string
- func AssertDockerIsRunning(ctx context.Context) error
- func AssertIsLinkedFS(fsys afero.Fs) error
- func AssertSupabaseCliIsSetUpFS(fsys afero.Fs) error
- func AssertSupabaseDbIsRunning() error
- func Bold(str string) string
- func ConnectByUrl(ctx context.Context, url string, options ...func(*pgx.ConnConfig)) (*pgx.Conn, error)
- func ConnectLocalPostgres(ctx context.Context, host string, port uint, database string, ...) (*pgx.Conn, error)
- func ConnectRemotePostgres(ctx context.Context, config pgconn.Config, options ...func(*pgx.ConnConfig)) (*pgx.Conn, error)
- func DockerAddFile(ctx context.Context, container string, fileName string, content []byte) error
- func DockerExec(ctx context.Context, container string, cmd []string) (io.Reader, error)
- func DockerExecOnce(ctx context.Context, container string, env []string, cmd []string) (string, error)
- func DockerImagePull(ctx context.Context, image string, w io.Writer) error
- func DockerImagePullWithRetry(ctx context.Context, image string, retries int) error
- func DockerNetworkCreateIfNotExists(ctx context.Context, networkId string) error
- func DockerPullImageIfNotCached(ctx context.Context, imageName string) error
- func DockerRemove(containerId string)
- func DockerRemoveAll(ctx context.Context)
- 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 DockerStop(containerID string)
- func DockerStreamLogs(ctx context.Context, container 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 GetCurrentBranchFS(fsys afero.Fs) (string, error)
- func GetCurrentTimestamp() string
- func GetDenoPath() (string, error)
- func GetGitRoot(fsys afero.Fs) (*string, error)
- func GetProjectRoot(fsys afero.Fs) (string, error)
- 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(projectId string, fsys afero.Fs) error
- func InstallOrUpgradeDeno(ctx context.Context, fsys afero.Fs) error
- func IsBranchNameReserved(branch string) bool
- func LoadAccessToken() (string, error)
- func LoadAccessTokenFS(fsys afero.Fs) (string, error)
- func LoadConfig() error
- func LoadConfigFS(fsys afero.Fs) error
- func LoadProjectRef(fsys afero.Fs) (string, error)
- func MkdirIfNotExist(path string) error
- func MkdirIfNotExistFS(fsys afero.Fs, path string) error
- func NewDocker() *client.Client
- func NewError(s string) error
- 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 ResolveCNAME(ctx context.Context, host string) (string, error)
- func RunProgram(ctx context.Context, f func(p Program, ctx context.Context) error) error
- func ShortContainerImageName(imageName string) string
- func ToPostgresURL(config pgconn.Config) string
- func ValidateFunctionSlug(slug string) error
- func WaitAll(containers []string, exec func(container string))
- func WithTraceContext(ctx context.Context) context.Context
- func WriteConfig(fsys afero.Fs, _test bool) error
- type DenoScriptDir
- type DialContextFunc
- type DiffDependencies
- type DiffEntry
- type DiffStream
- type EnumFlag
- 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 ( Pg13Image = "supabase/postgres:13.3.0" Pg14Image = "supabase/postgres:14.1.0.89" Pg15Image = "supabase/postgres:15.1.0.54-rc0" // Append to ServiceImages when adding new dependencies below KongImage = "library/kong:2.8.1" InbucketImage = "inbucket/inbucket:3.0.3" PostgrestImage = "postgrest/postgrest:v10.1.2" DifferImage = "supabase/pgadmin-schema-diff:cli-0.0.5" MigraImage = "djrobstep/migra:3.0.1621480950" PgmetaImage = "supabase/postgres-meta:v0.62.0" StudioImage = "supabase/studio:20230330-99fed3d" DenoRelayImage = "supabase/deno-relay:v1.6.0" ImageProxyImage = "darthsim/imgproxy:v3.8.0" EdgeRuntimeImage = "supabase/edge-runtime:v1.2.12" VectorImage = "timberio/vector:0.28.1-alpine" // Update initial schemas in internal/utils/templates/initial_schemas when // updating any one of these. GotrueImage = "supabase/gotrue:v2.51.4" RealtimeImage = "supabase/realtime:v2.10.1" StorageImage = "supabase/storage-api:v0.34.0" LogflareImage = "supabase/logflare:1.0.2" // Should be kept in-sync with DenoRelayImage DenoVersion = "1.30.3" )
const ( // https://dba.stackexchange.com/a/11895 // Args: dbname TerminateDbSqlFmt = `` /* 244-byte string literal not displayed */ AccessTokenKey = "access-token" )
const ( OutputEnv = "env" OutputJson = "json" OutputPretty = "pretty" OutputToml = "toml" OutputYaml = "yaml" // OutputMetadata is used with certain SSO commands only. OutputMetadata = "metadata" )
Variables ¶
var ( DbImage string NetId string DbId string KongId string GotrueId string InbucketId string RealtimeId string RestId string StorageId string ImgProxyId string DifferId string PgmetaId string StudioId string DenoRelayId string LogflareId string VectorId string InitialSchemaSql string //go:embed templates/initial_schemas/13.sql InitialSchemaPg13Sql string //go:embed templates/initial_schemas/14.sql InitialSchemaPg14Sql string //go:embed templates/initial_schemas/15.sql InitialSchemaPg15Sql string )
var ( Containers []string Volumes []string )
Used by unit tests NOTE: There's a risk of data race with reads & writes from `DockerRun` and reads from `DockerRemoveAll`, but since they're expected to be run on the same thread, this is fine.
var ( CmdSuggestion 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 AccessTokenPattern = regexp.MustCompile(`^sbp_[a-f0-9]{40}$`) 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)$`) MigrateFilePattern = regexp.MustCompile(`^([0-9]+)_.*\.sql$`) 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 SystemSchemas = []string{ "information_schema", "pg_*", "cron", "graphql", "graphql_public", "net", "pgsodium", "pgsodium_masks", "pgtle", "repack", "tiger", "tiger_data", "timescaledb_*", "_timescaledb_*", "topology", "vault", } InternalSchemas = append([]string{ "auth", "extensions", "pgbouncer", "realtime", "_realtime", "storage", "_analytics", "supabase_functions", "supabase_migrations", }, SystemSchemas...) ReservedRoles = []string{ "anon", "authenticated", "authenticator", "dashboard_user", "pgbouncer", "postgres", "service_role", "supabase_admin", "supabase_auth_admin", "supabase_functions_admin", "supabase_read_only_user", "supabase_replication_admin", "supabase_storage_admin", "pgsodium_keyholder", "pgsodium_keyiduser", "pgsodium_keymaker", } AllowedConfigs = []string{ "pgaudit.*", "pgrst.*", "session_replication_role", "statement_timeout", "track_io_timing", } SupabaseDirPath = "supabase" ConfigPath = filepath.Join(SupabaseDirPath, "config.toml") ProjectRefPath = filepath.Join(SupabaseDirPath, ".temp", "project-ref") RemoteDbPath = filepath.Join(SupabaseDirPath, ".temp", "remote-db-url") CurrBranchPath = filepath.Join(SupabaseDirPath, ".branches", "_current_branch") 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") )
var Config config
var ( DNSResolver = EnumFlag{ Allowed: []string{DNS_GO_NATIVE, DNS_OVER_HTTPS}, Value: DNS_GO_NATIVE, } )
var (
DenoPathOverride string
)
Used by unit tests
var Docker = NewDocker()
TODO: refactor to initialise lazily
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)",
}
var ServiceImages = []string{ GotrueImage, RealtimeImage, StorageImage, ImageProxyImage, KongImage, InbucketImage, PostgrestImage, DifferImage, MigraImage, PgmetaImage, StudioImage, EdgeRuntimeImage, LogflareImage, VectorImage, }
var Version string
Passed from `-ldflags`: https://stackoverflow.com/q/11354518.
Functions ¶
func AssertDockerIsRunning ¶
func AssertIsLinkedFS ¶ added in v0.32.0
func AssertSupabaseCliIsSetUpFS ¶ added in v0.32.0
func AssertSupabaseDbIsRunning ¶ added in v0.33.1
func AssertSupabaseDbIsRunning() error
func ConnectByUrl ¶ added in v1.28.0
func ConnectLocalPostgres ¶ added in v1.17.4
func ConnectLocalPostgres(ctx context.Context, host string, port uint, database string, options ...func(*pgx.ConnConfig)) (*pgx.Conn, error)
Connnect to local Postgres with optimised settings. The caller is responsible for closing the connection returned.
func ConnectRemotePostgres ¶ added in v1.17.4
func ConnectRemotePostgres(ctx context.Context, config pgconn.Config, options ...func(*pgx.ConnConfig)) (*pgx.Conn, error)
Connnect to remote Postgres with optimised settings. The caller is responsible for closing the connection returned.
func DockerAddFile ¶ added in v0.28.2
func DockerExec ¶
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 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 DockerRemoveAll ¶
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 DockerStop ¶ added in v1.11.2
func DockerStop(containerID string)
func DockerStreamLogs ¶ added in v1.49.0
func FallbackLookupIP ¶ added in v1.41.0
Performs DNS lookup via HTTPS, in case firewall blocks native netgo resolver.
func GetCurrentTimestamp ¶
func GetCurrentTimestamp() string
func GetDenoPath ¶ added in v1.4.7
func GetProjectRoot ¶ added in v1.8.2
If the `os.Getwd()` is within a supabase project, this will return the root of the given project as the current working directory. Otherwise, the `os.Getwd()` is kept as is.
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 InstallOrUpgradeDeno ¶ added in v0.19.0
func IsBranchNameReserved ¶ added in v0.13.0
func LoadAccessToken ¶ added in v0.20.0
func LoadConfig ¶
func LoadConfig() error
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 ResolveCNAME ¶ added in v1.10.0
func RunProgram ¶ added in v1.27.2
func ShortContainerImageName ¶ added in v1.19.0
func ToPostgresURL ¶ added in v1.42.0
func ValidateFunctionSlug ¶ added in v0.20.6
Types ¶
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 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
}