updated ezconf

This commit is contained in:
2026-02-25 22:47:33 +11:00
parent 050c1f7350
commit 2501b673b7
14 changed files with 63 additions and 210 deletions

View File

@@ -36,7 +36,7 @@ func GetConfig(flags *Flags) (*Config, *ezconf.ConfigLoader, error) {
}
loader := ezconf.New()
err = loader.RegisterIntegrations(
err = loader.AddIntegrations(
hlog.NewEZConfIntegration(),
hws.NewEZConfIntegration(),
hwsauth.NewEZConfIntegration(),

View File

@@ -6,16 +6,14 @@ import (
)
type Config struct {
User string // ENV DB_USER: Database user for authentication (required)
Password string // ENV DB_PASSWORD: Database password for authentication (required)
Host string // ENV DB_HOST: Database host address (required)
Port uint16 // ENV DB_PORT: Database port (default: 5432)
DB string // ENV DB_NAME: Database name to connect to (required)
SSL string // ENV DB_SSL: SSL mode for connection (default: disable)
// Backup configuration
BackupDir string // ENV DB_BACKUP_DIR: Directory for database backups (default: backups)
BackupRetention int // ENV DB_BACKUP_RETENTION: Number of backups to keep (default: 10)
User string `ezconf:"DB_USER,required,description:Database user for authentication"`
Password string `ezconf:"DB_PASSWORD,required,description:Database password for authentication"`
Host string `ezconf:"DB_HOST,required,description:Database host address"`
Port uint16 `ezconf:"DB_PORT,default:5432,description:Database port"`
DB string `ezconf:"DB_NAME,required,description:Database to connect to"`
SSL string `ezconf:"DB_SSL,default:disable,description:SSL Mode"`
BackupDir string `ezconf:"DB_BACKUP_DIR,default:backups,description:Directory for database backups"`
BackupRetention int `ezconf:"DB_BACKUP_RETENTION,default:10,description:Number of backups to keep"`
}
func ConfigFromEnv() (any, error) {

View File

@@ -1,41 +1,11 @@
package db
import (
"runtime"
"strings"
"git.haelnorr.com/h/golib/ezconf"
)
// EZConfIntegration provides integration with ezconf for automatic configuration
type EZConfIntegration struct {
configFunc func() (any, error)
name string
}
// PackagePath returns the path to the config package for source parsing
func (e EZConfIntegration) PackagePath() string {
_, filename, _, _ := runtime.Caller(0)
// Return directory of this file
return filename[:len(filename)-len("/ezconf.go")]
}
// ConfigFunc returns the ConfigFromEnv function for ezconf
func (e EZConfIntegration) ConfigFunc() func() (any, error) {
return func() (any, error) {
return e.configFunc()
}
}
// Name returns the name to use when registering with ezconf
func (e EZConfIntegration) Name() string {
return strings.ToLower(e.name)
}
// GroupName returns the display name for grouping environment variables
func (e EZConfIntegration) GroupName() string {
return e.name
}
// NewEZConfIntegration creates a new EZConf integration helper
func NewEZConfIntegration() EZConfIntegration {
return EZConfIntegration{name: "DB", configFunc: ConfigFromEnv}
func NewEZConfIntegration() *ezconf.Integration {
return ezconf.NewIntegration("db", "DB", &Config{},
func() (any, error) { return ConfigFromEnv() })
}

View File

@@ -9,12 +9,13 @@ import (
)
type Config struct {
ClientID string // ENV DISCORD_CLIENT_ID: Discord application client ID (required)
ClientSecret string // ENV DISCORD_CLIENT_SECRET: Discord application client secret (required)
OAuthScopes string // Authorisation scopes for OAuth
RedirectPath string // ENV DISCORD_REDIRECT_PATH: Path for the OAuth redirect handler (required)
BotToken string // ENV DISCORD_BOT_TOKEN: Token for the discord bot (required)
GuildID string // ENV DISCORD_GUILD_ID: ID for the discord server the bot should connect to (required)
ClientID string `ezconf:"DISCORD_CLIENT_ID,required,description:Discord application client ID"`
ClientSecret string `ezconf:"DISCORD_CLIENT_SECRET,required,description:Discord application client secret"`
RedirectPath string `ezconf:"DISCORD_REDIRECT_PATH,required,description:Path for the OAuth redirect handler"`
BotToken string `ezconf:"DISCORD_BOT_TOKEN,required,description:Token for the discord bot"`
GuildID string `ezconf:"DISCORD_GUILD_ID,required,description:ID for the discord server the bot should connect to"`
OAuthScopes string // Authorisation scopes for OAuth
}
func ConfigFromEnv() (any, error) {

View File

@@ -1,41 +1,11 @@
package discord
import (
"runtime"
"strings"
"git.haelnorr.com/h/golib/ezconf"
)
// EZConfIntegration provides integration with ezconf for automatic configuration
type EZConfIntegration struct {
configFunc func() (any, error)
name string
}
// PackagePath returns the path to the config package for source parsing
func (e EZConfIntegration) PackagePath() string {
_, filename, _, _ := runtime.Caller(0)
// Return directory of this file
return filename[:len(filename)-len("/ezconf.go")]
}
// ConfigFunc returns the ConfigFromEnv function for ezconf
func (e EZConfIntegration) ConfigFunc() func() (any, error) {
return func() (any, error) {
return e.configFunc()
}
}
// Name returns the name to use when registering with ezconf
func (e EZConfIntegration) Name() string {
return strings.ToLower(e.name)
}
// GroupName returns the display name for grouping environment variables
func (e EZConfIntegration) GroupName() string {
return e.name
}
// NewEZConfIntegration creates a new EZConf integration helper
func NewEZConfIntegration() EZConfIntegration {
return EZConfIntegration{name: "Discord", configFunc: ConfigFromEnv}
func NewEZConfIntegration() *ezconf.Integration {
return ezconf.NewIntegration("discord", "Discord", &Config{},
func() (any, error) { return ConfigFromEnv() })
}

View File

@@ -1,4 +1,4 @@
/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */
/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
@import url("https://fonts.googleapis.com/css2?family=Ubuntu+Mono:ital,wght@0,400;0,700;1,400;1,700&display=swap");
@layer properties;
@layer theme, base, components, utilities;
@@ -248,6 +248,12 @@
.inset-0 {
inset: calc(var(--spacing) * 0);
}
.start {
inset-inline-start: var(--spacing);
}
.end {
inset-inline-end: var(--spacing);
}
.end-0 {
inset-inline-end: calc(var(--spacing) * 0);
}
@@ -258,7 +264,7 @@
top: calc(var(--spacing) * 0);
}
.top-1\/2 {
top: calc(1/2 * 100%);
top: calc(1 / 2 * 100%);
}
.top-4 {
top: calc(var(--spacing) * 4);
@@ -601,7 +607,7 @@
flex-shrink: 0;
}
.-translate-y-1\/2 {
--tw-translate-y: calc(calc(1/2 * 100%) * -1);
--tw-translate-y: calc(calc(1 / 2 * 100%) * -1);
translate: var(--tw-translate-x) var(--tw-translate-y);
}
.translate-y-0 {

View File

@@ -8,7 +8,7 @@ import (
)
type Config struct {
AdminDiscordID string // ENV ADMIN_DISCORD_ID: Discord ID to grant admin role on first login (required)
AdminDiscordID string `ezconf:"ADMIN_DISCORD_ID,required,description:Discord ID to grant admin role on first login"`
}
func ConfigFromEnv() (any, error) {

View File

@@ -1,41 +1,11 @@
package rbac
import (
"runtime"
"strings"
"git.haelnorr.com/h/golib/ezconf"
)
// EZConfIntegration provides integration with ezconf for automatic configuration
type EZConfIntegration struct {
configFunc func() (any, error)
name string
}
// PackagePath returns the path to the config package for source parsing
func (e EZConfIntegration) PackagePath() string {
_, filename, _, _ := runtime.Caller(0)
// Return directory of this file
return filename[:len(filename)-len("/ezconf.go")]
}
// ConfigFunc returns the ConfigFromEnv function for ezconf
func (e EZConfIntegration) ConfigFunc() func() (any, error) {
return func() (any, error) {
return e.configFunc()
}
}
// Name returns the name to use when registering with ezconf
func (e EZConfIntegration) Name() string {
return strings.ToLower(e.name)
}
// GroupName returns the display name for grouping environment variables
func (e EZConfIntegration) GroupName() string {
return e.name
}
// NewEZConfIntegration creates a new EZConf integration helper
func NewEZConfIntegration() EZConfIntegration {
return EZConfIntegration{name: "RBAC", configFunc: ConfigFromEnv}
// NewEZConfIntegration creates a new EZConf integration
func NewEZConfIntegration() *ezconf.Integration {
return ezconf.NewIntegration("rbac", "RBAC", &Config{},
func() (any, error) { return ConfigFromEnv() })
}