Documentation
¶
Overview ¶
Package config registers optional, reusable deployment flag groups with tinyflags. It never parses application flags or owns the application's top-level configuration.
Index ¶
- Constants
- func NewFlagSet(name, envName, version string) *tinyflags.FlagSet
- func RegisterAuthentication(tf *tinyflags.FlagSet, cfg *Authentication, opts AuthenticationOptions) func()
- func RegisterLogging(tf *tinyflags.FlagSet, cfg *Logging) func()
- func RegisterOIDC(tf *tinyflags.FlagSet, cfg *OIDC)
- func RegisterObservability(tf *tinyflags.FlagSet, cfg *Observability)
- func RegisterOpenTelemetry(tf *tinyflags.FlagSet, cfg *OpenTelemetry, defaultServiceName string)
- func RegisterPostgres(tf *tinyflags.FlagSet, cfg *Postgres, opts PostgresOptions)
- func RegisterProxy(tf *tinyflags.FlagSet, cfg *Proxy)
- func RegisterServer(tf *tinyflags.FlagSet, cfg *Server, opts ServerOptions) func()
- type Authentication
- type AuthenticationOptions
- type Logging
- type OIDC
- type Observability
- type OpenTelemetry
- type Postgres
- type PostgresOptions
- type Proxy
- type Server
- type ServerOptions
Constants ¶
const ( // SectionServer groups public and management HTTP server settings. SectionServer = "Server" // SectionDatabase groups database connection and pool settings. SectionDatabase = "Database" // SectionAuthentication groups deployment-level authentication overrides. SectionAuthentication = "Authentication" // SectionProxy groups trusted-proxy header settings. SectionProxy = "Trusted proxy" // SectionOIDC groups OIDC deployment secrets and overrides. SectionOIDC = "OIDC" // SectionTelemetry groups OpenTelemetry export flags. SectionTelemetry = "OpenTelemetry" // SectionLogging groups logs, metrics, and request diagnostics. SectionLogging = "Logging and diagnostics" )
Variables ¶
This section is empty.
Functions ¶
func NewFlagSet ¶
NewFlagSet configures the common CLI conventions while leaving parsing and section ordering to the application. The envName is the application name, not a full environment variable (for example "MOTUS").
func RegisterAuthentication ¶
func RegisterAuthentication(tf *tinyflags.FlagSet, cfg *Authentication, opts AuthenticationOptions) func()
RegisterAuthentication registers common authentication override flags. The nil-versus-explicit-false distinction is preserved for registration.
func RegisterLogging ¶
RegisterLogging adds logging flags, returning a finalizer for the enum value.
func RegisterOIDC ¶
RegisterOIDC registers OIDC deployment settings with secret masking.
func RegisterObservability ¶
func RegisterObservability(tf *tinyflags.FlagSet, cfg *Observability)
RegisterObservability adds optional metrics and diagnostics flags.
func RegisterOpenTelemetry ¶
func RegisterOpenTelemetry(tf *tinyflags.FlagSet, cfg *OpenTelemetry, defaultServiceName string)
RegisterOpenTelemetry adds optional OTLP exporter flags.
func RegisterPostgres ¶
func RegisterPostgres(tf *tinyflags.FlagSet, cfg *Postgres, opts PostgresOptions)
RegisterPostgres registers the database URL and common pool settings.
func RegisterProxy ¶
RegisterProxy registers trusted-proxy identity header overrides.
func RegisterServer ¶
func RegisterServer(tf *tinyflags.FlagSet, cfg *Server, opts ServerOptions) func()
RegisterServer adds server flags and returns a finalizer to call after Parse. The application remains responsible for prefix-aware handler mounting.
Types ¶
type Authentication ¶
type Authentication struct {
// ModeOverride overrides database-managed auth policy only when non-nil.
ModeOverride *auth.Mode
// AllowRegistrationOverride overrides registration policy only when non-nil.
AllowRegistrationOverride *bool
// LocalLogin allows an application-managed recovery login alongside its selected mode.
LocalLogin bool
// EncryptionKey is a deployment key for application secrets.
EncryptionKey string
// SessionLifetime is the optional session duration selected by the application.
SessionLifetime time.Duration
}
Authentication holds deployment-level recovery flags, not persisted auth policy.
type AuthenticationOptions ¶
type AuthenticationOptions struct {
// RegisterSessionLifetime adds --session-lifetime only when enabled.
RegisterSessionLifetime bool
// DefaultSessionLifetime defaults to 12 hours if no value is supplied.
DefaultSessionLifetime time.Duration
}
AuthenticationOptions enables selected optional flags without imposing session policy.
type Logging ¶
type Logging struct {
// Format chooses JSON or structured text output.
Format logging.LogFormat
// Debug enables debug-level events.
Debug bool
// AccessLog enables per-request logging.
AccessLog bool
}
Logging holds the shared application logging flag values.
type OIDC ¶
type OIDC struct {
// Issuer is the optional issuer override.
Issuer string
// ClientID is the optional client ID override.
ClientID string
// ClientSecret is the OIDC client secret.
ClientSecret string
// SessionSecret protects temporary login state and may be reused by application-managed sessions.
SessionSecret string
// GroupClaim is the optional external groups claim.
GroupClaim string
// AdminGroup is an optional external administrator group mapping input.
AdminGroup string
}
OIDC holds deployment-managed OIDC secrets and optional runtime overrides.
type Observability ¶
type Observability struct {
// DisableMetrics disables metrics and HTTP instrumentation.
DisableMetrics bool
// PerformanceDiagnostics enables extra request and browser measurements.
PerformanceDiagnostics bool
}
Observability holds optional application monitoring switches.
type OpenTelemetry ¶
type OpenTelemetry struct {
// ServiceName is the logical service name displayed in traces.
ServiceName string
// Endpoint is the OTLP gRPC collector address.
Endpoint string
// Insecure permits plaintext gRPC collector transport.
Insecure bool
}
OpenTelemetry holds optional OTLP trace-export settings.
type Postgres ¶
type Postgres struct {
// URL is the database DSN; secrets must not be printed in plaintext.
URL string
// MaxConns is the maximum connection count; zero uses driver defaults.
MaxConns int32
// MinIdleConns is the idle connection minimum; zero uses driver defaults.
MinIdleConns int32
}
Postgres holds application PostgreSQL deployment settings.
type PostgresOptions ¶
type PostgresOptions struct {
// OptionalURL allows the database URL to be omitted.
OptionalURL bool
}
PostgresOptions permits services without mandatory databases to opt out of --database-url.
type Proxy ¶
type Proxy struct {
// TrustedCIDRs lists allowed immediate peers; a sole "*" explicitly trusts all peers.
TrustedCIDRs []string
// UsernameHeaders are the incoming username header names, in priority order.
UsernameHeaders []string
// EmailHeaders are the incoming email header names, in priority order.
EmailHeaders []string
// DisplayNameHeaders are the incoming display-name header names.
DisplayNameHeaders []string
// GroupHeaders are the group membership header names.
GroupHeaders []string
// AdminGroup is an optional application-specific group mapping input.
AdminGroup string
}
Proxy contains parsed deployment flags; DeploymentOverrides identifies explicit values.
func (Proxy) DeploymentOverrides ¶ added in v0.3.0
DeploymentOverrides returns explicitly selected flag or environment settings. Values omitted from overrides are inherited from persisted settings and appkit defaults. A present key with an empty list intentionally clears that header list.
type Server ¶
type Server struct {
// RoutePrefix is the normalized application deployment prefix.
RoutePrefix string
// ListenAddress is the application TCP listen address.
ListenAddress string
// ManagementListenAddress is the management TCP listen address, when enabled.
ManagementListenAddress string
// PublicURL is the externally reachable application URL.
PublicURL string
}
Server is shared deployment-level HTTP listener configuration.
type ServerOptions ¶
type ServerOptions struct {
// ListenAddress defaults to 127.0.0.1:8080 when nil.
ListenAddress *net.TCPAddr
// ManagementListenAddress defaults to 127.0.0.1:8081 when nil.
ManagementListenAddress *net.TCPAddr
// PublicURL defaults to http://localhost:8080 when empty.
PublicURL string
// WithoutManagement omits the management-listen-address flag.
WithoutManagement bool
}
ServerOptions controls application-specific listener defaults and optional flags.