appconfig

package
v0.9.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 4, 2026 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const AppConfigPath = ".miren/app.toml"

Variables

This section is empty.

Functions

func AliasLineNumbers added in v0.7.0

func AliasLineNumbers(configPath string) map[string]int

AliasLineNumbers parses the TOML file at configPath and returns a map from alias name to the line number where it is defined. Uses the go-toml/v2 AST parser for accurate source locations.

func SaveAppState added in v0.4.0

func SaveAppState(appName string, state *AppState) error

SaveAppState writes the cluster state for the named app. Uses a file lock to make the read-modify-write atomic across processes.

Types

type AddonConfig added in v0.4.0

type AddonConfig struct {
	Variant string `toml:"variant"`
	Version string `toml:"version"`
}

AddonConfig represents configuration for an addon in app.toml.

type AppConfig

type AppConfig struct {
	Name        string                    `toml:"name"`
	PostImport  string                    `toml:"post_import,omitempty"`
	EnvVars     []AppEnvVar               `toml:"env,omitempty"`
	Concurrency *int                      `toml:"concurrency,omitempty"`
	Services    map[string]*ServiceConfig `toml:"services,omitempty"`
	Build       *BuildConfig              `toml:"build,omitempty"`
	Include     []string                  `toml:"include,omitempty"`
	Addons      map[string]*AddonConfig   `toml:"addons,omitempty"`
	Aliases     map[string]string         `toml:"aliases,omitempty"`
}

func GetDefaultsForServices

func GetDefaultsForServices(serviceNames []string) *AppConfig

GetDefaultsForServices returns an AppConfig with defaults resolved for given service names. This is useful for migration - it provides the same defaults used at build time.

func LoadAppConfig

func LoadAppConfig() (*AppConfig, error)

func LoadAppConfigUnder

func LoadAppConfigUnder(dir string) (*AppConfig, error)

func LoadAppConfigWithPath added in v0.7.0

func LoadAppConfigWithPath() (*AppConfig, string, error)

LoadAppConfigWithPath loads the app config and returns the file path it was loaded from. Returns (nil, "", nil) if no config file is found.

func Parse

func Parse(data []byte) (*AppConfig, error)

func (*AppConfig) ResolveDefaults

func (ac *AppConfig) ResolveDefaults(services []string)

ResolveDefaults populates Services map for all service names with fully-resolved defaults. If a service already has explicit config in app.toml, it is preserved. Otherwise, defaults are applied based on service name:

  • "web": auto mode, requests_per_instance=10, scale_down_delay=15m
  • others: fixed mode, num_instances=1

func (*AppConfig) Validate

func (ac *AppConfig) Validate() error

Validate checks that the AppConfig has valid values. Returns *ValidationError with a key path for AST-based line resolution.

type AppEnvVar

type AppEnvVar struct {
	Key         string `json:"key" toml:"key"`
	Value       string `json:"value,omitempty" toml:"value,omitempty"`
	Required    bool   `json:"required,omitempty" toml:"required,omitempty"`
	Sensitive   bool   `json:"sensitive,omitempty" toml:"sensitive,omitempty"`
	Description string `json:"description,omitempty" toml:"description,omitempty"`
}

type AppState added in v0.4.0

type AppState struct {
	Cluster string `toml:"cluster"`
}

func LoadAppState added in v0.4.0

func LoadAppState(appName string) (*AppState, error)

LoadAppState reads the cluster state for the named app. Returns nil, nil if no state has been saved for this app.

type BuildConfig

type BuildConfig struct {
	Dockerfile string   `toml:"dockerfile"`
	OnBuild    []string `toml:"onbuild"`
	Version    string   `toml:"version"`

	AlpineImage string `toml:"alpine_image"`
}

type ConfigError added in v0.7.0

type ConfigError struct {
	FilePath    string
	Diagnostics []Diagnostic
}

ConfigError is returned from config loading when the TOML file has problems. It renders compiler-style diagnostics with file:line references.

func (*ConfigError) Error added in v0.7.0

func (e *ConfigError) Error() string

func (*ConfigError) WriteForTerminal added in v0.7.0

func (e *ConfigError) WriteForTerminal(w io.Writer)

WriteForTerminal renders a colorized, multi-line diagnostic to w. Implements ui.TerminalError.

type Diagnostic added in v0.7.0

type Diagnostic struct {
	Line    int    // 1-indexed, 0 if unknown
	Column  int    // 1-indexed, 0 if unknown
	Message string // the core error message
	Context string // visual context from go-toml (if available)
	Hint    string // e.g. "did you mean \"command\"?"
}

Diagnostic represents a single error within a config file.

type DiskConfig

type DiskConfig struct {
	Name         string `toml:"name"`
	Provider     string `toml:"provider"`
	MountPath    string `toml:"mount_path"`
	ReadOnly     bool   `toml:"read_only"`
	SizeGB       int    `toml:"size_gb"`
	Filesystem   string `toml:"filesystem"`
	LeaseTimeout string `toml:"lease_timeout"`
}

DiskConfig represents a disk attachment for a service. Provider defaults to "miren" (network disk) when empty. Use provider = "local" for node-local persistent storage.

type PortConfig added in v0.5.0

type PortConfig struct {
	Port     int    `toml:"port"`
	Name     string `toml:"name"`
	Type     string `toml:"type"`
	NodePort int    `toml:"node_port"`
}

PortConfig represents a network port for a service

type ServiceConcurrencyConfig

type ServiceConcurrencyConfig struct {
	Mode                string `toml:"mode"` // "auto" or "fixed"
	RequestsPerInstance int    `toml:"requests_per_instance"`
	ScaleDownDelay      string `toml:"scale_down_delay"` // e.g. "2m", "15m"
	NumInstances        int    `toml:"num_instances"`
	ShutdownTimeout     string `toml:"shutdown_timeout"` // e.g. "10s", "30s" - time to wait for graceful shutdown
}

ServiceConcurrencyConfig represents per-service concurrency configuration

type ServiceConfig

type ServiceConfig struct {
	Command     string                    `toml:"command"`
	Port        int                       `toml:"port"`
	PortName    string                    `toml:"port_name"`
	PortType    string                    `toml:"port_type"`
	Ports       []PortConfig              `toml:"ports"`
	Image       string                    `toml:"image"`
	EnvVars     []AppEnvVar               `toml:"env"`
	Concurrency *ServiceConcurrencyConfig `toml:"concurrency"`
	Disks       []DiskConfig              `toml:"disks"`
	// PortTimeout overrides the default 15s wait for the service to bind
	// its port during startup. Accepts a Go duration string (e.g. "60s", "2m").
	// Empty falls back to the default; invalid duration strings are rejected
	// at parse time by Validate.
	PortTimeout string `toml:"port_timeout,omitempty"`
}

ServiceConfig represents configuration for a specific service

type ValidationError added in v0.7.0

type ValidationError struct {
	KeyPath string // e.g. "services.web.concurrency.mode"
	Message string
}

ValidationError is a structured error from Validate() that carries the TOML key path for AST-based line number resolution.

func (*ValidationError) Error added in v0.7.0

func (e *ValidationError) Error() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL