added ezconf and updated modules with integration
This commit is contained in:
120
ezconf/doc.go
Normal file
120
ezconf/doc.go
Normal file
@@ -0,0 +1,120 @@
|
||||
// Package ezconf provides a unified configuration management system for loading
|
||||
// and managing environment-based configurations across multiple packages.
|
||||
//
|
||||
// ezconf allows you to:
|
||||
// - Load configurations from multiple packages using their ConfigFromEnv functions
|
||||
// - Parse package source code to extract environment variable documentation
|
||||
// - Generate and update .env files with all required environment variables
|
||||
// - Print environment variable lists with descriptions and current values
|
||||
// - Track additional custom environment variables
|
||||
//
|
||||
// # Basic Usage
|
||||
//
|
||||
// Create a configuration loader and register packages using built-in integrations (recommended):
|
||||
//
|
||||
// import (
|
||||
// "git.haelnorr.com/h/golib/ezconf"
|
||||
// "git.haelnorr.com/h/golib/hlog"
|
||||
// "git.haelnorr.com/h/golib/hws"
|
||||
// "git.haelnorr.com/h/golib/hwsauth"
|
||||
// )
|
||||
//
|
||||
// loader := ezconf.New()
|
||||
//
|
||||
// // Register packages using built-in integrations
|
||||
// loader.RegisterIntegrations(
|
||||
// hlog.NewEZConfIntegration(),
|
||||
// hws.NewEZConfIntegration(),
|
||||
// hwsauth.NewEZConfIntegration(),
|
||||
// )
|
||||
//
|
||||
// // Load all configurations
|
||||
// if err := loader.Load(); err != nil {
|
||||
// log.Fatal(err)
|
||||
// }
|
||||
//
|
||||
// // Get a specific configuration
|
||||
// hlogCfg, ok := loader.GetConfig("hlog")
|
||||
// if ok {
|
||||
// cfg := hlogCfg.(*hlog.Config)
|
||||
// // Use configuration...
|
||||
// }
|
||||
//
|
||||
// Alternatively, you can manually register packages:
|
||||
//
|
||||
// loader := ezconf.New()
|
||||
//
|
||||
// // Add package paths to parse for ENV comments
|
||||
// loader.AddPackagePath("/path/to/golib/hlog")
|
||||
//
|
||||
// // Add configuration loaders
|
||||
// loader.AddConfigFunc("hlog", func() (interface{}, error) {
|
||||
// return hlog.ConfigFromEnv()
|
||||
// })
|
||||
//
|
||||
// loader.Load()
|
||||
//
|
||||
// # Printing Environment Variables
|
||||
//
|
||||
// Print all environment variables with their descriptions:
|
||||
//
|
||||
// // Print without values (useful for documentation)
|
||||
// if err := loader.PrintEnvVarsStdout(false); err != nil {
|
||||
// log.Fatal(err)
|
||||
// }
|
||||
//
|
||||
// // Print with current values
|
||||
// if err := loader.PrintEnvVarsStdout(true); err != nil {
|
||||
// log.Fatal(err)
|
||||
// }
|
||||
//
|
||||
// # Generating .env Files
|
||||
//
|
||||
// Generate a new .env file with all environment variables:
|
||||
//
|
||||
// // Generate with default values
|
||||
// err := loader.GenerateEnvFile(".env", false)
|
||||
//
|
||||
// // Generate with current environment values
|
||||
// err := loader.GenerateEnvFile(".env", true)
|
||||
//
|
||||
// Update an existing .env file:
|
||||
//
|
||||
// // Update existing file, preserving existing values
|
||||
// err := loader.UpdateEnvFile(".env", true)
|
||||
//
|
||||
// # Adding Custom Environment Variables
|
||||
//
|
||||
// You can add additional environment variables that aren't in package configs:
|
||||
//
|
||||
// loader.AddEnvVar(ezconf.EnvVar{
|
||||
// Name: "DATABASE_URL",
|
||||
// Description: "PostgreSQL connection string",
|
||||
// Required: true,
|
||||
// Default: "postgres://localhost/mydb",
|
||||
// })
|
||||
//
|
||||
// # ENV Comment Format
|
||||
//
|
||||
// ezconf parses struct field comments in the following format:
|
||||
//
|
||||
// type Config struct {
|
||||
// // ENV LOG_LEVEL: Log level for the application (default: info)
|
||||
// LogLevel string
|
||||
//
|
||||
// // ENV DATABASE_URL: Database connection string (required)
|
||||
// DatabaseURL string
|
||||
// }
|
||||
//
|
||||
// The format is:
|
||||
// - ENV ENV_VAR_NAME: Description (optional modifiers)
|
||||
// - (required) or (required if condition) - marks variable as required
|
||||
// - (default: value) - specifies default value
|
||||
//
|
||||
// # Integration
|
||||
//
|
||||
// ezconf integrates with:
|
||||
// - All golib packages that follow the ConfigFromEnv pattern
|
||||
// - Any custom configuration structs with ENV comments
|
||||
// - Standard .env file format
|
||||
package ezconf
|
||||
Reference in New Issue
Block a user