config

package
v1.4.7 Latest Latest
Warning

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

Go to latest
Published: Feb 1, 2026 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrMissingIMAPHost is returned when IMAP host is not configured
	ErrMissingIMAPHost = errors.New("IMAP_HOST is required: set via environment variable or config file")
	// ErrMissingIMAPUsername is returned when IMAP username is not configured
	ErrMissingIMAPUsername = errors.New("IMAP_USERNAME is required: set via environment variable or config file")
	// ErrMissingIMAPPassword is returned when IMAP password is not configured
	ErrMissingIMAPPassword = errors.New("IMAP_PASSWORD is required: set via environment variable or config file")
)

Functions

func GenerateSample

func GenerateSample(path string) error

GenerateSample creates a sample configuration file

Types

type Config

type Config struct {
	IMAP     IMAPConfig     `json:"imap"`
	Database DatabaseConfig `json:"database"`
	Server   ServerConfig   `json:"server"`
}

Config holds the application configuration

func Load

func Load(path string) (*Config, error)

Load loads configuration from a JSON file

func (*Config) Validate added in v1.4.1

func (c *Config) Validate() error

Validate checks that all required configuration values are set. Required fields: IMAP host, username, and password. Returns nil if valid, or an error describing the missing configuration.

type DatabaseConfig

type DatabaseConfig struct {
	Path string `json:"path" env:"DATABASE_PATH"`
}

DatabaseConfig holds database configuration

type IMAPConfig

type IMAPConfig struct {
	Host     string `json:"host" env:"IMAP_HOST"`
	Port     int    `json:"port" env:"IMAP_PORT" envDefault:"993"`
	Username string `json:"username" env:"IMAP_USERNAME"`
	Password string `json:"password" env:"IMAP_PASSWORD"`
	Mailbox  string `json:"mailbox" env:"IMAP_MAILBOX" envDefault:"INBOX"`
	UseTLS   bool   `json:"use_tls" env:"IMAP_USE_TLS" envDefault:"true"`
}

IMAPConfig holds IMAP server configuration

type ServerConfig

type ServerConfig struct {
	Port int    `json:"port" env:"SERVER_PORT" envDefault:"8080"`
	Host string `json:"host" env:"SERVER_HOST" envDefault:""`
}

ServerConfig holds web server configuration

Jump to

Keyboard shortcuts

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