Dagger
Search

plattr-dev

Reads a developer's plattr.yaml and starts a complete local environment
with PostgreSQL, MinIO, PostgREST, and the app — all inside the Dagger engine.

Installation

dagger install github.com/kcearns/plattr/packages/dagger@4c7ad7f534e268091d44cc52dd5d2a4ecffb0ebc

Entrypoint

Return Type
PlattrDev
Example
dagger -m github.com/kcearns/plattr/packages/dagger@4c7ad7f534e268091d44cc52dd5d2a4ecffb0ebc call \
func (m *MyModule) Example() *dagger.PlattrDev  {
	return dag.
			PlattrDev()
}
@function
def example() -> dagger.PlattrDev:
	return (
		dag.plattr_dev()
	)
@func()
example(): PlattrDev {
	return dag
		.plattrDev()
}

Types

PlattrDev 🔗

ping() 🔗

Health check — verify the module is operational.

Return Type
String !
Example
dagger -m github.com/kcearns/plattr/packages/dagger@4c7ad7f534e268091d44cc52dd5d2a4ecffb0ebc call \
 ping
func (m *MyModule) Example(ctx context.Context) string  {
	return dag.
			PlattrDev().
			Ping(ctx)
}
@function
async def example() -> str:
	return await (
		dag.plattr_dev()
		.ping()
	)
@func()
async example(): Promise<string> {
	return dag
		.plattrDev()
		.ping()
}

detectFramework() 🔗

Detect the framework of a source directory.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
Example
dagger -m github.com/kcearns/plattr/packages/dagger@4c7ad7f534e268091d44cc52dd5d2a4ecffb0ebc call \
 detect-framework --source DIR_PATH
func (m *MyModule) Example(ctx context.Context, source *dagger.Directory) string  {
	return dag.
			PlattrDev().
			DetectFramework(ctx, source)
}
@function
async def example(source: dagger.Directory) -> str:
	return await (
		dag.plattr_dev()
		.detect_framework(source)
	)
@func()
async example(source: Directory): Promise<string> {
	return dag
		.plattrDev()
		.detectFramework(source)
}

dev() 🔗

Start a complete local development environment, or infrastructure only.

Reads plattr.yaml, starts infrastructure services (PostgreSQL, MinIO, PostgREST), and runs the framework-specific dev server with all services bound and env vars set.

When infraOnly is true, only the backing services are started (no app container). The app is expected to run natively on the host.

Usage (infra only): dagger call dev –source=. –infra-only up –ports=5432:5432,9000:9000,9001:9001,3001:3001,8080:8080

Return Type
Service !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
portInteger !3000No description provided
infraOnlyBoolean !falseNo description provided
Example
dagger -m github.com/kcearns/plattr/packages/dagger@4c7ad7f534e268091d44cc52dd5d2a4ecffb0ebc call \
 dev --source DIR_PATH --port integer --infra-only boolean
func (m *MyModule) Example(source *dagger.Directory, port int, infraOnly bool) *dagger.Service  {
	return dag.
			PlattrDev().
			Dev(source, port, infraOnly)
}
@function
def example(source: dagger.Directory, port: int, infra_only: bool) -> dagger.Service:
	return (
		dag.plattr_dev()
		.dev(source, port, infra_only)
	)
@func()
example(source: Directory, port: number, infraOnly: boolean): Service {
	return dag
		.plattrDev()
		.dev(source, port, infraOnly)
}

preview() 🔗

Start an isolated preview environment for a pull request.

Similar to dev() but every resource name includes the PR number, so multiple previews and the main dev environment can coexist without collision.

Usage: dagger call preview –source=. –pr-number=42 up –ports=3100:3100,5433:5432,9002:9000

Return Type
Service !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
prNumberInteger !-No description provided
portInteger !3100No description provided
Example
dagger -m github.com/kcearns/plattr/packages/dagger@4c7ad7f534e268091d44cc52dd5d2a4ecffb0ebc call \
 preview --source DIR_PATH --pr-number integer --port integer
func (m *MyModule) Example(source *dagger.Directory, prNumber int, port int) *dagger.Service  {
	return dag.
			PlattrDev().
			Preview(source, prNumber, port)
}
@function
def example(source: dagger.Directory, pr_number: int, port: int) -> dagger.Service:
	return (
		dag.plattr_dev()
		.preview(source, pr_number, port)
	)
@func()
example(source: Directory, prNumber: number, port: number): Service {
	return dag
		.plattrDev()
		.preview(source, prNumber, port)
}

migrate() 🔗

Run database migrations.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
engineString !"sql"No description provided
Example
dagger -m github.com/kcearns/plattr/packages/dagger@4c7ad7f534e268091d44cc52dd5d2a4ecffb0ebc call \
 migrate --source DIR_PATH --engine string
func (m *MyModule) Example(ctx context.Context, source *dagger.Directory, engine string) string  {
	return dag.
			PlattrDev().
			Migrate(ctx, source, engine)
}
@function
async def example(source: dagger.Directory, engine: str) -> str:
	return await (
		dag.plattr_dev()
		.migrate(source, engine)
	)
@func()
async example(source: Directory, engine: string): Promise<string> {
	return dag
		.plattrDev()
		.migrate(source, engine)
}

dbShell() 🔗

Open an interactive psql shell connected to the app’s database.

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
Example
dagger -m github.com/kcearns/plattr/packages/dagger@4c7ad7f534e268091d44cc52dd5d2a4ecffb0ebc call \
 db-shell --source DIR_PATH
func (m *MyModule) Example(source *dagger.Directory) *dagger.Container  {
	return dag.
			PlattrDev().
			DbShell(source)
}
@function
def example(source: dagger.Directory) -> dagger.Container:
	return (
		dag.plattr_dev()
		.db_shell(source)
	)
@func()
example(source: Directory): Container {
	return dag
		.plattrDev()
		.dbShell(source)
}

seed() 🔗

Run a SQL seed file against the app’s database.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
seedFileString !"seed.sql"No description provided
Example
dagger -m github.com/kcearns/plattr/packages/dagger@4c7ad7f534e268091d44cc52dd5d2a4ecffb0ebc call \
 seed --source DIR_PATH --seed-file string
func (m *MyModule) Example(ctx context.Context, source *dagger.Directory, seedFile string) string  {
	return dag.
			PlattrDev().
			Seed(ctx, source, seedFile)
}
@function
async def example(source: dagger.Directory, seed_file: str) -> str:
	return await (
		dag.plattr_dev()
		.seed(source, seed_file)
	)
@func()
async example(source: Directory, seedFile: string): Promise<string> {
	return dag
		.plattrDev()
		.seed(source, seedFile)
}

build() 🔗

Build a production-optimized container image.

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
frameworkString -No description provided
Example
dagger -m github.com/kcearns/plattr/packages/dagger@4c7ad7f534e268091d44cc52dd5d2a4ecffb0ebc call \
 build --source DIR_PATH
func (m *MyModule) Example(source *dagger.Directory) *dagger.Container  {
	return dag.
			PlattrDev().
			Build(source)
}
@function
def example(source: dagger.Directory) -> dagger.Container:
	return (
		dag.plattr_dev()
		.build(source)
	)
@func()
example(source: Directory): Container {
	return dag
		.plattrDev()
		.build(source)
}

test() 🔗

Run the app’s test suite against real infrastructure.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
Example
dagger -m github.com/kcearns/plattr/packages/dagger@4c7ad7f534e268091d44cc52dd5d2a4ecffb0ebc call \
 test --source DIR_PATH
func (m *MyModule) Example(ctx context.Context, source *dagger.Directory) string  {
	return dag.
			PlattrDev().
			Test(ctx, source)
}
@function
async def example(source: dagger.Directory) -> str:
	return await (
		dag.plattr_dev()
		.test(source)
	)
@func()
async example(source: Directory): Promise<string> {
	return dag
		.plattrDev()
		.test(source)
}

buildAndPush() 🔗

Build the production image and push it to a container registry.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
appNameString !-No description provided
environmentString !-No description provided
registryUrlString !-No description provided
Example
dagger -m github.com/kcearns/plattr/packages/dagger@4c7ad7f534e268091d44cc52dd5d2a4ecffb0ebc call \
 build-and-push --source DIR_PATH --app-name string --environment string --registry-url string
func (m *MyModule) Example(ctx context.Context, source *dagger.Directory, appName string, environment string, registryUrl string) string  {
	return dag.
			PlattrDev().
			BuildAndPush(ctx, source, appName, environment, registryUrl)
}
@function
async def example(source: dagger.Directory, app_name: str, environment: str, registry_url: str) -> str:
	return await (
		dag.plattr_dev()
		.build_and_push(source, app_name, environment, registry_url)
	)
@func()
async example(source: Directory, appName: string, environment: string, registryUrl: string): Promise<string> {
	return dag
		.plattrDev()
		.buildAndPush(source, appName, environment, registryUrl)
}