Marea (marea v0.0.1-rc.1)

Copy Markdown View Source

Entry point for the marea escript.

Marea is a thin, transparent helper around mix, docker, helm, kubectl and aws: it issues those commands consistently from a single marea.yaml and prints every one before running it. The current focus is Helm + Kubernetes, with optional plugins for the AWS pieces (ECR / Route53 / S3); other deploy targets, registries and providers are added as plugins, not by patching core.

main/1 is invoked by the escript wrapper. It reads marea.yaml, loads the configured Malla.Plugin modules on top of the base plugins (Setup, Build, Run, Base), starts Marea.Service, and dispatches the parsed command through the plugin chain.

See the Introduction and Architecture guides for the bigger picture and the full startup/dispatch flow.

Summary

Functions

Escript entry point.

Entry point used by mix marea.

Returns the full list of plugin modules for the current working directory: @base_plugins plus the modules listed under plugins: in marea.yaml.

Functions

main(args)

@spec main([String.t()]) :: :ok | no_return()

Escript entry point.

Sets up signal traps, clears any leftover .marea/next_cmd, starts the service, and runs the command. Any deferred shell command produced by the chain is written to .marea/next_cmd for the wrapper to exec.

main_inline(args)

@spec main_inline([String.t()]) :: :ok | {:exec, String.t()} | no_return()

Entry point used by mix marea.

Same as main/1 but returns deferred commands as {:exec, cmd} so the Mix task can run them via Port instead of relying on the escript wrapper.

plugins()

@spec plugins() :: [module()] | no_return()

Returns the full list of plugin modules for the current working directory: @base_plugins plus the modules listed under plugins: in marea.yaml.

Reads the YAML but does not start the service, so callers (notably the MCP server) can introspect the plugin chain without committing to a service lifecycle.