config

package
v0.7.3 Latest Latest
Warning

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

Go to latest
Published: Dec 11, 2025 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

v2/cmd/forge/config/loader.go

v2/cmd/forge/config/types.go

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CreateForgeConfig

func CreateForgeConfig(path string, config *ForgeConfig) error

CreateForgeConfig creates a new .forge.yaml file with default or provided config.

func SaveForgeConfig

func SaveForgeConfig(config *ForgeConfig, path string) error

SaveForgeConfig saves the configuration to a file.

func ValidateConfig

func ValidateConfig(config *ForgeConfig) error

ValidateConfig validates the configuration.

Types

type BuildApp

type BuildApp struct {
	Name       string `yaml:"name"`
	Module     string `yaml:"module"` // Multi-module: path to module
	Cmd        string `yaml:"cmd"`    // Path to main.go
	Output     string `yaml:"output"` // Binary name
	Dockerfile string `yaml:"dockerfile"`
}

BuildApp defines a buildable application.

type BuildConfig

type BuildConfig struct {
	OutputDir    string     `yaml:"output_dir"`
	CmdDir       string     `yaml:"cmd_dir"`       // Single-module only
	AutoDiscover bool       `yaml:"auto_discover"` // Multi-module only
	Apps         []BuildApp `yaml:"apps"`
	Platforms    []Platform `yaml:"platforms"`
	LDFlags      string     `yaml:"ldflags"`
	Tags         []string   `yaml:"tags"`
}

BuildConfig defines build configuration.

type ConnectionConfig

type ConnectionConfig struct {
	URL            string `yaml:"url"`
	MaxConnections int    `yaml:"max_connections"`
	MaxIdle        int    `yaml:"max_idle"`
}

ConnectionConfig defines database connection settings.

type DatabaseCodegenConfig

type DatabaseCodegenConfig struct {
	Enabled   bool   `yaml:"enabled"`
	Output    string `yaml:"output"`
	Templates string `yaml:"templates"`
}

DatabaseCodegenConfig for database model generation.

type DatabaseConfig

type DatabaseConfig struct {
	Driver         string                      `yaml:"driver"` // postgres, mysql, sqlite
	MigrationsPath string                      `yaml:"migrations_path"`
	SeedsPath      string                      `yaml:"seeds_path"`
	ModelsOutput   string                      `yaml:"models_output"`
	Codegen        DatabaseCodegenConfig       `yaml:"codegen"`
	Connections    map[string]ConnectionConfig `yaml:"connections"`
}

DatabaseConfig defines database configuration.

type DeployConfig

type DeployConfig struct {
	Registry     string              `yaml:"registry"`
	Docker       DockerConfig        `yaml:"docker"`
	Kubernetes   KubernetesConfig    `yaml:"kubernetes"`
	DigitalOcean DigitalOceanConfig  `yaml:"digitalocean"`
	Render       RenderConfig        `yaml:"render"`
	Environments []EnvironmentConfig `yaml:"environments"`
}

DeployConfig defines deployment configuration.

type DevConfig

type DevConfig struct {
	AutoDiscover    bool            `yaml:"auto_discover"`
	DiscoverPattern string          `yaml:"discover_pattern"`
	DefaultApp      string          `yaml:"default_app"`
	Watch           WatchConfig     `yaml:"watch"`
	HotReload       HotReloadConfig `yaml:"hot_reload"`
}

DevConfig defines development server configuration.

type DigitalOceanConfig added in v0.4.0

type DigitalOceanConfig struct {
	Region       string `yaml:"region"`
	AppSpecFile  string `yaml:"app_spec_file"`
	ClusterName  string `yaml:"cluster_name"`
	GitRepo      string `yaml:"git_repo"`       // e.g., "myorg/myrepo"
	GitBranch    string `yaml:"git_branch"`     // e.g., "main"
	DeployOnPush bool   `yaml:"deploy_on_push"` // Auto-deploy on push
}

DigitalOceanConfig for Digital Ocean deployment.

type DockerConfig

type DockerConfig struct {
	BuildContext string            `yaml:"build_context"`
	Dockerfile   string            `yaml:"dockerfile"`
	ComposeFile  string            `yaml:"compose_file"`
	Network      string            `yaml:"network"`
	Volumes      map[string]string `yaml:"volumes"`
}

DockerConfig for Docker deployment.

type EnvironmentConfig

type EnvironmentConfig struct {
	Name      string            `yaml:"name"`
	Cluster   string            `yaml:"cluster"`
	Namespace string            `yaml:"namespace"`
	Region    string            `yaml:"region"`
	Variables map[string]string `yaml:"variables"`
}

EnvironmentConfig defines deployment environment.

type ForgeConfig

type ForgeConfig struct {
	Project    ProjectConfig  `yaml:"project"`
	Dev        DevConfig      `yaml:"dev"`
	Database   DatabaseConfig `yaml:"database"`
	Build      BuildConfig    `yaml:"build"`
	Deploy     DeployConfig   `yaml:"deploy"`
	Generate   GenerateConfig `yaml:"generate"`
	Extensions map[string]any `yaml:"extensions"`
	Test       TestConfig     `yaml:"test"`

	// Internal fields
	RootDir    string `yaml:"-"` // Directory containing .forge.yaml
	ConfigPath string `yaml:"-"` // Full path to .forge.yaml
}

ForgeConfig represents the complete .forge.yaml configuration.

func DefaultConfig

func DefaultConfig() *ForgeConfig

DefaultConfig returns a default configuration.

func LoadForgeConfig

func LoadForgeConfig() (*ForgeConfig, string, error)

LoadForgeConfig searches for .forge.yaml up the directory tree and loads it Returns the config, the path where it was found, and any error.

func (*ForgeConfig) IsMultiModule

func (c *ForgeConfig) IsMultiModule() bool

IsMultiModule returns true if the project uses multi-module layout.

func (*ForgeConfig) IsSingleModule

func (c *ForgeConfig) IsSingleModule() bool

IsSingleModule returns true if the project uses single-module layout.

type GenerateConfig

type GenerateConfig struct {
	TemplatesPath string                     `yaml:"templates_path"`
	Generators    map[string]GeneratorConfig `yaml:"generators"`
}

GenerateConfig defines code generation configuration.

type GeneratorConfig

type GeneratorConfig struct {
	Output       string `yaml:"output"`
	CmdPath      string `yaml:"cmd_path"`      // Single-module
	InternalPath string `yaml:"internal_path"` // Single-module
	CreateModule bool   `yaml:"create_module"` // Multi-module
	ModulePath   string `yaml:"module_path"`   // Multi-module
}

GeneratorConfig defines a specific generator.

type HotReloadConfig

type HotReloadConfig struct {
	Enabled bool          `yaml:"enabled"`
	Delay   time.Duration `yaml:"delay"`
}

HotReloadConfig defines hot reload configuration.

type KubernetesConfig

type KubernetesConfig struct {
	Manifests string `yaml:"manifests"`
	Namespace string `yaml:"namespace"`
	Context   string `yaml:"context"`
	Registry  string `yaml:"registry"`
}

KubernetesConfig for Kubernetes deployment.

type Platform

type Platform struct {
	OS   string `yaml:"os"`
	Arch string `yaml:"arch"`
}

Platform defines target build platform.

type ProjectConfig

type ProjectConfig struct {
	Name        string          `yaml:"name"`
	Version     string          `yaml:"version"`
	Description string          `yaml:"description"`
	Type        string          `yaml:"type"`      // monorepo, app, service, extension, cli
	Layout      string          `yaml:"layout"`    // single-module, multi-module
	Module      string          `yaml:"module"`    // For single-module layout
	Workspace   WorkspaceConfig `yaml:"workspace"` // For multi-module layout
	Structure   StructureConfig `yaml:"structure"` // For single-module layout
}

ProjectConfig defines project metadata and structure.

type RenderConfig added in v0.4.0

type RenderConfig struct {
	BlueprintFile string `yaml:"blueprint_file"`
	Region        string `yaml:"region"`
	GitRepo       string `yaml:"git_repo"`   // e.g., "myorg/myrepo"
	GitBranch     string `yaml:"git_branch"` // e.g., "main"
}

RenderConfig for Render.com deployment.

type StructureConfig

type StructureConfig struct {
	Cmd         string `yaml:"cmd"`         // Path to cmd/
	Apps        string `yaml:"apps"`        // Path to apps/
	Pkg         string `yaml:"pkg"`         // Path to pkg/
	Internal    string `yaml:"internal"`    // Path to internal/
	Extensions  string `yaml:"extensions"`  // Path to extensions/
	Database    string `yaml:"database"`    // Path to database/
	Config      string `yaml:"config"`      // Path to config/
	Deployments string `yaml:"deployments"` // Path to deployments/
}

StructureConfig for single-module layout.

type TestConfig

type TestConfig struct {
	CoverageThreshold int           `yaml:"coverage_threshold"`
	RaceDetector      bool          `yaml:"race_detector"`
	Parallel          bool          `yaml:"parallel"`
	Timeout           time.Duration `yaml:"timeout"`
}

TestConfig defines testing configuration.

type WatchConfig

type WatchConfig struct {
	Enabled bool     `yaml:"enabled"`
	Paths   []string `yaml:"paths"`
	Exclude []string `yaml:"exclude"`
}

WatchConfig defines file watching configuration.

type WorkspaceConfig

type WorkspaceConfig struct {
	Enabled    bool   `yaml:"enabled"`
	Apps       string `yaml:"apps"`       // Glob pattern: "./apps/*"
	Services   string `yaml:"services"`   // Glob pattern: "./services/*"
	Extensions string `yaml:"extensions"` // Glob pattern: "./extensions/*"
	Pkg        string `yaml:"pkg"`        // Path: "./pkg"
}

WorkspaceConfig for multi-module layout.

Jump to

Keyboard shortcuts

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