Global Repos / Workflow - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - UPDATE workflow: split old workflow into multiple files - UPDATE .gitignore: added cluster.old.tar.gz and build artifacts - UPDATE .golangci.yml: enhanced linter rules and disabled deprecated linters [archive] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - FIX extract: recursive decompression for nested archives (e.g., .tar.gz handling) - FIX extract: ZIP archive support now properly uses ReaderAt interface with seek reset - ADD extract: proper symlink and hard link handling in archives - UPDATE tar/writer: improved error handling and file mode preservation - UPDATE zip/writer: enhanced validation and error messages - UPDATE compress/interface: added support for additional compression formats - UPDATE helper/compressor: fixed typo in error handling [artifact] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE artifact: improved error handling and context management - UPDATE client/interface: enhanced API with better type safety and context propagation - UPDATE client/model: refactored for better maintainability - UPDATE github: removed unused error codes, improved model validation - UPDATE gitlab: enhanced API pagination and error handling - UPDATE jfrog: improved artifactory API compatibility - UPDATE s3aws: enhanced S3 bucket operations and error messages [atomic] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE cast: improved type conversion with better error handling - UPDATE interface: enhanced atomic operations with generics support - UPDATE synmap: fixed race conditions in concurrent access patterns - UPDATE value: improved atomic value operations with better memory ordering [aws] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE bucket: enhanced ACL and CORS configuration with validation - UPDATE configAws/models: improved credential handling and region configuration - UPDATE configCustom/interface: added support for custom endpoints - UPDATE http/request: improved retry logic and timeout handling - UPDATE interface: enhanced AWS client with context propagation - UPDATE model: refactored for AWS SDK v2 compatibility - UPDATE multipart/interface: improved chunk handling for large uploads - UPDATE pusher: optimized hash calculation and upload progress tracking - UPDATE resolver: enhanced endpoint resolution with custom DNS - DELETE test files: removed bucket_test.go, group_test.go, object_test.go, policy_test.go, role_test.go, user_test.go [cache] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - ADD context: context-aware cache lifecycle management - UPDATE interface: complete rewrite with Go generics for type-safe key-value operations - ADD item package: generic cache item with expiration tracking (interface and model) - UPDATE model: refactored to use generics (Cache[K comparable, V any]) - REFACTOR: split item.go into modelAny.go for better code organization [certificates] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE auth/encode: improved PEM encoding with better error messages - UPDATE auth/interface: enhanced authentication certificate handling - UPDATE ca: improved CA certificate generation and validation - UPDATE certs: enhanced certificate configuration with SAN support - UPDATE cipher: improved cipher suite selection and validation - UPDATE curves: enhanced elliptic curve handling with additional curves - ADD deprecated.go: marked deprecated TLS versions and cipher suites - UPDATE interface: enhanced certificate interface with context support - UPDATE model: improved certificate model with better validation - UPDATE rootca: enhanced root CA pool management - UPDATE tlsversion: added TLS 1.3 support with proper validation - UPDATE tools: improved certificate utility functions [cobra] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE completion: improved shell completion generation (bash, zsh, fish, powershell) - UPDATE configure: enhanced configuration file handling - UPDATE printError: improved error formatting with color support - UPDATE interface: enhanced cobra interface with context support - UPDATE model: improved cobra model with better validation [config] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE components: improved component lifecycle management - UPDATE const/const: improved constant definitions - UPDATE context: enhanced context handling with better propagation - UPDATE errors: improved error definitions - UPDATE events: enhanced event management - UPDATE manage: improved configuration management with validation - UPDATE model: refactored config model - UPDATE shell: enhanced shell integration for interactive configuration - UPDATE types: improved component and componentList types [console] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - ADD buff.go: BuffPrintf function for colored output to io.Writer (moved from ioutils/multiplexer) - DELETE color.go: removed legacy color file (consolidated functionality) - UPDATE error: improved error definitions with better messages - ADD interface: console interface for abstraction - ADD model: console model for state management - UPDATE padding: enhanced string padding with Unicode support - UPDATE prompt: improved interactive prompt handling [context] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - DELETE config.go: removed deprecated configuration (replaced by Config[T] interface) - UPDATE context: improved context handling with better cancellation support - UPDATE gin/interface: enhanced Gin context integration with type safety - ADD helper: context helper functions for common operations - ADD interface: generic Config[T comparable] interface for type-safe context storage - ADD map: MapManage[T] interface for concurrent-safe map operations - ADD model: thread-safe context model implementation with sync.Map [database] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE gorm/config: improved database configuration - UPDATE gorm/driver: enhanced database driver with better connection pooling - UPDATE gorm/driver_darwin: macOS-specific database optimizations - UPDATE gorm/interface: improved GORM interface with context support - UPDATE gorm/model: refactored model for better maintainability - UPDATE gorm/monitor: enhanced monitoring for database connections - UPDATE kvtypes: improved types for key-value store (compare, driver, item, table) [duration] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE big: enhanced big.Duration for large time spans with arithmetic operations - UPDATE encode: improved marshaling for JSON, YAML, TOML, Text, CBOR - UPDATE format: enhanced human-readable formatting (ns, μs, ms, s, m, h, d, w) - UPDATE interface: improved duration interface with arithmetic methods - UPDATE model: refactored Duration type - UPDATE operation: enhanced arithmetic operations (Add, Sub, Mul, Div) - UPDATE parse: improved parsing with multiple format support - UPDATE truncate: enhanced truncation for rounding durations [encoding] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE aes: improved AES encryption with reader/writer interfaces - UPDATE hexa: enhanced hexadecimal encoding with better error handling - UPDATE mux: improved multiplexer/demultiplexer for stream handling - UPDATE randRead: enhanced random data generation - UPDATE sha256 package: SHA-256 hashing with reader/writer interfaces [errors] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - ADD pool package: thread-safe error pool for collecting multiple errors with concurrent access - UPDATE code: improved error code definition and lookup - UPDATE errors: enhanced error creation with better stack trace - UPDATE interface: improved error interface with more methods - UPDATE mode: enhanced error mode handling (production vs development) - UPDATE return: improved error return handling with context - UPDATE trace: enhanced error tracing with file and line information [file] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE bandwidth: improved bandwidth tracking with concurrency tests - UPDATE perm: enhanced file permission handling with Unix/Windows support - UPDATE perm/encode: improved marshaling for JSON, YAML, TOML - UPDATE perm/format: enhanced permission formatting (e.g., "rwxr-xr-x") - UPDATE perm/parse: improved parsing of permission strings and octal values - UPDATE progress: enhanced progress tracking for file I/O operations - UPDATE progress/io*: improved reader, writer, seeker, closer interfaces with progress callbacks [ftpclient] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE config: improved FTP configuration with TLS support - UPDATE errors: enhanced error definitions - UPDATE interface: improved FTP client interface - UPDATE model: refactored FTP client model [httpcli] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE cli: improved HTTP client with retry logic and timeout handling - UPDATE dns-mapper: enhanced DNS mapping for custom resolution - UPDATE dns-mapper/config: improved DNS mapper configuration - UPDATE dns-mapper/errors: enhanced error handling - UPDATE dns-mapper/interface: improved DNS mapper interface - UPDATE dns-mapper/transport: enhanced HTTP transport with DNS override - UPDATE errors: improved error definitions - UPDATE options: enhanced client options with context support [httpserver] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE config: improved server configuration with TLS and middleware support - UPDATE handler: enhanced request handler with better error handling - UPDATE interface: improved server interface with context support and monitoring integration - UPDATE model: refactored server model with better validation - UPDATE monitor: enhanced monitoring integration with status tracking - UPDATE pool: improved server pool management (config, interface, list, model) - UPDATE run: enhanced server runtime with graceful shutdown - UPDATE server: improved core server implementation with better lifecycle - ADD testhelpers/certs.go: certificate generation utilities for testing - UPDATE types: improved const, fields, and handler types [ioutils] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE bufferReadCloser: improved buffered reader/writer with closer - UPDATE fileDescriptor: enhanced file descriptor limit management (platform-specific for Linux/macOS/Windows) - UPDATE ioprogress: improved progress tracking for I/O operations - UPDATE iowrapper: enhanced I/O wrapper with custom interfaces - UPDATE mapCloser: improved map of closers for resource management - UPDATE maxstdio: enhanced C implementation for max stdio file descriptor retrieval - DELETE multiplexer/model.go: removed legacy multiplexer (functionality moved to console/buff.go and retro/) - UPDATE nopwritecloser: improved no-op write closer - UPDATE tools: enhanced I/O utility functions [ldap] - UPDATE ldap: improved LDAP client with better connection handling and search operations [logger] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE config: improved default values, file options, and syslog configuration - UPDATE entry/interface: enhanced log entry with context support - UPDATE fields: improved field handling with JSON cloning - UPDATE gorm/interface: enhanced GORM logger with trace ID support - UPDATE hashicorp/interface: improved HashiCorp logger integration - FIX hookfile/system: use os.OpenRoot for secure file operations (prevents path traversal) - FIX hookfile/system: fixed import path from libsrv "golib/server" to "golib/runner" - ADD hookfile: IsRunning() method to track file hook state - UPDATE hookstderr/interface: enhanced stderr hook with better buffering - UPDATE hookstdout/interface: enhanced stdout hook with better buffering - UPDATE hooksyslog: improved syslog integration with channel and priority handling - ADD hookwriter package: generic io.Writer hook for custom output destinations - UPDATE interface: enhanced logger interface with context propagation - UPDATE level: improved log level handling and comparison - UPDATE log: enhanced logging with better formatting - UPDATE manage: improved logger lifecycle management - UPDATE model: refactored logger model for better maintainability [mail] - UPDATE sender: improved mail sender with better MIME handling - UPDATE interface: enhanced interface with monitoring support - UPDATE monitor: added monitoring integration for mail operations [monitor] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - ADD status package: new subpackage for status management with Status type (KO, Warn, OK) - ADD status/encode: marshaling support for JSON, YAML, TOML, Text, CBOR - ADD status/format: human-readable status formatting - ADD status/interface: Status type with Parse and String methods - UPDATE encode: improved encoding with better error handling - UPDATE error: enhanced error definitions - UPDATE info: improved system info collection (CPU, mem, disk, network) - UPDATE interface: enhanced monitor interface with status support and better component integration - UPDATE metrics: improved metrics collection and export - UPDATE middleware: enhanced monitoring middleware for HTTP - UPDATE pool/interface: enhanced pool interface with better monitoring integration - UPDATE pool/metrics: improved metrics collection in pool - UPDATE pool/model: refactored pool model for better maintainability - UPDATE pool/pool: enhanced pool implementation with better lifecycle - UPDATE server: enhanced server monitoring with status tracking - UPDATE types/monitor: improved monitor type definitions [nats] - UPDATE client: improved NATS client with better subscription handling - UPDATE config: enhanced NATS configuration with cluster support - UPDATE monitor: added monitoring integration for NATS operations - UPDATE server: improved NATS server integration with monitoring [network] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE bytes: improved byte size handling for network operations - UPDATE number: enhanced number utilities for network data - UPDATE protocol/encode: improved protocol encoding - ADD protocol/format: protocol formatting utilities - UPDATE protocol/interface: enhanced protocol interface - UPDATE protocol/model: refactored protocol model [password] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE password: improved password utilities with strength validation and secure generation [pidcontroller] - UPDATE interface: improved PID controller interface - UPDATE model: enhanced PID controller model with better tuning parameters [pprof] - UPDATE tools: improved pprof utilities for profiling integration [prometheus] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE bloom/bloom: improved bloom filter with better concurrency handling - UPDATE bloom/collection: enhanced bloom filter collection operations - UPDATE interface: enhanced prometheus interface with better type safety - UPDATE metrics/interface: enhanced metrics interface with better registration - UPDATE metrics/model: refactored metrics model for better maintainability - UPDATE model: refactored prometheus model with better validation - UPDATE pool: enhanced metric pool with concurrent access - UPDATE pool/interface: enhanced pool interface - UPDATE pool/model: refactored pool model - UPDATE route: improved routing for metric endpoints - UPDATE types: enhanced type definitions for metrics - UPDATE webmetrics: improved existing metrics (requestBody, requestIPTotal, requestLatency, requestSlow, requestTotal, requestURITotal, responseBody) - ADD webmetrics/activeConnections: gauge for tracking concurrent HTTP connections - ADD webmetrics/requestErrors: counter for HTTP request errors - ADD webmetrics/responseSizeByEndpoint: histogram for response size distribution by endpoint - ADD webmetrics/statusCodeTotal: counter for HTTP status codes [request] - UPDATE interface: enhanced request interface with better type safety - UPDATE model: refactored request model for better maintainability - UPDATE options: improved request options with better validation - UPDATE url: enhanced URL handling with better parsing [retro] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE encoding: improved encoding utilities with better format support - UPDATE format: enhanced formatting functions for retro compatibility - UPDATE model: refactored retro model with better validation - UPDATE utils: improved utility functions for version handling - UPDATE version: enhanced version utilities for retro compatibility [router] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE auth/interface: enhanced authentication interface with better validation - UPDATE auth/model: improved authentication model - UPDATE authheader/interface: enhanced authentication header interface - UPDATE default: improved default router configuration - UPDATE error: enhanced error definitions for router - UPDATE header/config: improved header configuration - UPDATE header/interface: enhanced header interface - UPDATE header/model: refactored header model - UPDATE interface: improved router interface with better type safety - UPDATE middleware: improved router middleware with better error handling - UPDATE model: refactored router model for better maintainability - UPDATE router: enhanced core router implementation - UPDATE tools: enhanced router utilities for route registration [runner] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE package: move package for lifecycle management of long-running services (moved from server/runner) - ADD interface: Runner interface with Start, Stop, Restart, IsRunning, and Uptime methods - ADD startStop package: service lifecycle with blocking start and graceful stop (interface, model, comprehensive tests) - ADD ticker package: periodic task execution at regular intervals (interface, model, comprehensive tests) - ADD tests: concurrency, construction, errors, lifecycle, and uptime tests for both startStop and ticker - ADD tools: RecoveryCaller for panic recovery in goroutines [semaphore] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - FIX bar/bar: Dec method now properly decrements (was calling Inc64, now calls Dec64 with negative value) - UPDATE bar: improved progress bar with better MPB integration - UPDATE bar/context: enhanced context handling for cancellation - UPDATE bar/interface: added methods for Total() and better progress tracking - UPDATE bar/model: improved model with atomic operations - UPDATE bar tests: enhanced bar_operations_test, edge_cases_test, integration_test, and semaphore_test - UPDATE context: enhanced context propagation - UPDATE interface: improved semaphore interface with weighted operations - UPDATE model: refactored model for better thread safety - UPDATE progress: enhanced progress tracking with multiple bars - UPDATE sem/interface: added IsRunning() method for state tracking - UPDATE sem/ulimit: improved ulimit handling for file descriptors - UPDATE sem/weighted: enhanced weighted semaphore operations - UPDATE types: improved type definitions for bar, progress, and semaphore [server] - REFACTOR: moved runner subpackage to root-level runner package - DELETE: empty package after moved runner subpackage [shell] - UPDATE goprompt: improved interactive prompt handling with better input validation [size] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - ADD arithmetic.go: NEW file with arithmetic operations (Add, Sub, Mul, Div with overflow detection) - UPDATE encode: improved marshaling for JSON, YAML, TOML, Text, CBOR - UPDATE format: enhanced human-readable formatting (B, KB, MB, GB, TB, PB, EB) - UPDATE interface: added arithmetic methods (Mul, MulErr, Div, DivErr, Add, AddErr, Sub, SubErr) - UPDATE model: refactored Size type with better validation - UPDATE parse: improved parsing with unit detection (IEC and SI standards) [smtp] - UPDATE client: improved SMTP client with better error handling - UPDATE config: enhanced configuration with validation - UPDATE config/error: improved error definitions - UPDATE config/interface: enhanced interface with context support - UPDATE config/model: refactored model for better maintainability - UPDATE interface: improved SMTP interface with monitoring support - UPDATE monitor: added monitoring integration for SMTP operations - DELETE network/network.go: removed legacy network handling (consolidated into client) - UPDATE tlsmode/tls: enhanced TLS mode handling (None, TLS, StartTLS) - UPDATE types/interface: improved type interface [socket] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - ADD client/interface_darwin: macOS-specific socket client options - UPDATE client/interface_linux: platform-specific socket options for Linux - UPDATE client/interface_other: platform-specific socket options for other platforms - UPDATE client/tcp/error: improved TCP client error handling - UPDATE client/tcp/interface: enhanced TCP client interface - UPDATE client/tcp/model: improved TCP client model - UPDATE client/udp/error: improved UDP client error handling - UPDATE client/udp/interface: enhanced UDP client interface - UPDATE client/udp/model: improved UDP client model - UPDATE client/unix/error: improved Unix socket client error handling - UPDATE client/unix/ignore: enhanced ignore functionality - UPDATE client/unix/interface: enhanced Unix socket client interface - UPDATE client/unix/model: improved Unix socket client model - UPDATE client/unixgram/error: improved Unix datagram client error handling - UPDATE client/unixgram/ignore: enhanced ignore functionality - UPDATE client/unixgram/interface: enhanced Unix datagram client interface - UPDATE client/unixgram/model: improved Unix datagram client model - UPDATE config/client: improved client configuration - UPDATE config/server: improved server configuration - DELETE delim: moved legacy delimiter to I/O package - UPDATE interface: improved socket interface - UPDATE io: enhanced I/O operations - DELETE multi: moved legacy multi to I/O package - ADD server/interface_darwin: macOS-specific socket server options - UPDATE server/interface_linux: platform-specific server options for Linux - UPDATE server/interface_other: platform-specific server options for other platforms - UPDATE server/tcp/error: improved TCP server error handling - UPDATE server/tcp/interface: enhanced TCP server interface - UPDATE server/tcp/listener: improved TCP server listener - UPDATE server/tcp/model: improved TCP server model - UPDATE server/udp/error: improved UDP server error handling - UPDATE server/udp/interface: enhanced UDP server interface - UPDATE server/udp/listener: improved UDP server listener - UPDATE server/udp/model: improved UDP server model - UPDATE server/unix/error: improved Unix socket server error handling - UPDATE server/unix/ignore: enhanced ignore functionality - UPDATE server/unix/interface: enhanced Unix socket server interface - UPDATE server/unix/listener: improved Unix socket server listener - UPDATE server/unix/model: improved Unix socket server model - UPDATE server/unixgram/error: improved Unix datagram server error handling - UPDATE server/unixgram/ignore: enhanced ignore functionality - UPDATE server/unixgram/interface: enhanced Unix datagram server interface - UPDATE server/unixgram/listener: improved Unix datagram server listener - UPDATE server/unixgram/model: improved Unix datagram server model [static] - UPDATE interface: improved static interface with monitoring support - UPDATE model: refactored static model - UPDATE monitor: added monitoring integration for static file operations [status] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE cache: improved status cache with better synchronization - UPDATE config: improved status configuration - UPDATE control/encode: improved control encoding - UPDATE control/interface: enhanced control interface with status tracking - UPDATE control/model: refactored control model - UPDATE encode: improved status encoding - UPDATE error: enhanced error definitions for status - UPDATE info: improved status info handling - UPDATE interface: enhanced status interface - UPDATE listmandatory/interface: improved list mandatory interface - UPDATE listmandatory/model: refactored list mandatory model - UPDATE mandatory/interface: enhanced mandatory interface - UPDATE mandatory/model: refactored mandatory model - UPDATE model: refactored status model - UPDATE pool: improved status pool - UPDATE route: enhanced status route handling [test] - DELETE: all manual tests are or will be replaced by proper automated test suites in respective packages [version] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE error: improved error definitions for version - UPDATE license: enhanced license handling - UPDATE version: improved version utilities [viper] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE interface: enhanced viper interface with context support - UPDATE model: refactored viper model for better maintainability
33 KiB
Config Package
Production-ready application lifecycle management system for Go with automatic dependency resolution, event-driven architecture, and component orchestration.
AI Disclaimer (EU AI Act Article 50.4): AI assistance was used solely for testing, documentation, and bug resolution under human supervision.
Table of Contents
- Overview
- Key Features
- Architecture
- Installation
- Quick Start
- Core Concepts
- Available Components
- Configuration Management
- Event Hooks
- Context Management
- Shell Integration
- Performance
- Use Cases
- Best Practices
- Testing
- Contributing
- Future Enhancements
- Related Documentation
- License
Overview
The config package provides a comprehensive lifecycle management framework for building modular, production-ready Go applications. It orchestrates component initialization, startup, hot-reloading, and graceful shutdown while automatically resolving dependencies and managing shared resources.
Design Philosophy
- Dependency-Driven: Automatic topological ordering ensures components start in the correct sequence
- Event-Driven: Lifecycle hooks enable observability and cross-cutting concerns
- Context-Aware: Shared application context provides coordinated cancellation
- Component-Based: Pluggable architecture supports modular development
- Thread-Safe: Atomic operations and proper synchronization for concurrent access
- Hot-Reload: Support for configuration reloading without full restart
Why Use This Package?
- ✅ Zero boilerplate for component lifecycle management
- ✅ Automatic dependency resolution eliminates manual ordering
- ✅ Built-in components for common services (HTTP, SMTP, LDAP, Database, TLS, etc.)
- ✅ Event hooks for logging, metrics, and custom logic
- ✅ Graceful shutdown with proper cleanup
- ✅ Hot-reload support for configuration changes
- ✅ Shell commands for runtime introspection
- ✅ Comprehensive testing with race detector validation
Key Features
- Lifecycle Management: Coordinated start, reload, and stop sequences across all components
- Dependency Resolution: Automatic topological sorting ensures correct initialization order
- Event Hooks: Before/after callbacks for lifecycle events (start, reload, stop)
- Context Sharing: Application-wide context accessible to all components
- Thread-Safe Operations: Mutex-protected component registry with concurrent-safe access
- Shell Commands: Built-in interactive commands for runtime component management
- Config Generation: Automatic default configuration file creation from all components
- Monitoring Integration: Support for health checks and metrics via monitor pools
- Viper Integration: Seamless configuration loading with github.com/spf13/viper
- Signal Handling: Graceful shutdown on SIGINT, SIGTERM, SIGQUIT
- Version Tracking: Built-in version information management
Installation
go get github.com/nabbar/golib/config
Architecture
Package Structure
The package is organized into a main package with supporting sub-packages:
config/
├── config/ # Main package with lifecycle orchestration
│ ├── interface.go # Config interface and factory
│ ├── components.go # Component management
│ ├── events.go # Lifecycle event handlers
│ ├── manage.go # Hook and function registration
│ ├── context.go # Context and cancellation
│ ├── shell.go # Shell command integration
│ ├── errors.go # Error definitions
│ └── model.go # Internal data structures
├── types/ # Interface definitions
│ ├── component.go # Component interface
│ └── componentList.go # Component list interface
├── const/ # Package constants
│ └── const.go # JSON formatting constants
└── components/ # Pre-built component implementations
├── aws/ # AWS component
├── database/ # Database component
├── http/ # HTTP server component
├── log/ # Logger component
└── ... # Other components
Component Orchestration Flow
┌─────────────────────────────────────────────────────────┐
│ Config Orchestrator │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Component │ │ Component │ │ Component │ │
│ │ Registry │ │ Lifecycle │ │ Events │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ Dependency Resolution Engine │ │
│ │ (Topological Sort + Validation) │ │
│ └──────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ Shared Application Context │ │
│ │ (Thread-safe storage + Cancellation) │ │
│ └──────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
│ │ │
▼ ▼ ▼
Component A Component B Component C
(Database) (Cache) (HTTP Server)
Lifecycle Execution Order
Start Phase:
┌─────────────────────────────────────────────────────┐
│ 1. Global Before-Start Hooks │
├─────────────────────────────────────────────────────┤
│ 2. For each component (dependency order): │
│ ┌─────────────────────────────────────────────┐ │
│ │ a. Component Before-Start Hook │ │
│ │ b. Component.Start() │ │
│ │ c. Component After-Start Hook │ │
│ └─────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────┤
│ 3. Global After-Start Hooks │
└─────────────────────────────────────────────────────┘
Stop Phase:
┌─────────────────────────────────────────────────────┐
│ 1. Global Before-Stop Hooks │
├─────────────────────────────────────────────────────┤
│ 2. For each component (reverse dependency order): │
│ └─→ Component.Stop() │
├─────────────────────────────────────────────────────┤
│ 3. Global After-Stop Hooks │
└─────────────────────────────────────────────────────┘
Quick Start
Basic Usage
package main
import (
"fmt"
libcfg "github.com/nabbar/golib/config"
libver "github.com/nabbar/golib/version"
)
func main() {
// Create version information
version := libver.NewVersion(
libver.License_MIT,
"myapp",
"My Application",
"2024-01-01",
"commit-hash",
"v1.0.0",
"Author Name",
"myapp",
struct{}{},
0,
)
// Create config instance
cfg := libcfg.New(version)
// Register components
// cfg.ComponentSet("database", databaseComponent)
// cfg.ComponentSet("cache", cacheComponent)
// Register lifecycle hooks (optional)
cfg.RegisterFuncStartBefore(func() error {
fmt.Println("Starting application...")
return nil
})
// Start all components
if err := cfg.Start(); err != nil {
panic(err)
}
// Application running...
fmt.Println("Application started successfully")
// Graceful shutdown
defer cfg.Stop()
}
With Signal Handling
package main
import (
libcfg "github.com/nabbar/golib/config"
libver "github.com/nabbar/golib/version"
)
func main() {
version := libver.NewVersion(/* ... */)
cfg := libcfg.New(version)
// Register components
// ...
// Start components
if err := cfg.Start(); err != nil {
panic(err)
}
// Wait for interrupt signal (SIGINT, SIGTERM, SIGQUIT)
libcfg.WaitNotify()
}
Performance
Memory Characteristics
The config system maintains minimal memory overhead:
- Config Instance: ~1 KB base footprint
- Per Component: ~500 bytes overhead for tracking
- Context Storage: O(n) where n = number of stored key-value pairs
- Hook Storage: O(m) where m = number of registered hooks
Thread Safety
All operations are thread-safe through:
- Mutex Protection:
sync.RWMutexfor component registry access - Context Storage: Thread-safe context implementation from
github.com/nabbar/golib/context - Atomic Operations: Used where appropriate for state management
- Concurrent Access: Multiple goroutines can safely access components
Startup Performance
| Operation | Components | Time | Notes |
|---|---|---|---|
| Component Registration | 10 | ~50µs | O(1) per component |
| Dependency Resolution | 10 | ~200µs | O(n log n) topological sort |
| Start Sequence | 10 | ~10ms | Depends on component logic |
| Context Operations | - | ~100ns | Per operation |
Benchmarks on AMD64, Go 1.21
Use Cases
This package is designed for applications requiring coordinated lifecycle management:
Microservices
- Orchestrate HTTP servers, database pools, message queues, and caches
- Graceful shutdown with proper cleanup order
- Hot reload configuration without downtime
Backend Services
- Coordinate startup of multiple subsystems (auth, API, workers, schedulers)
- Manage dependencies between services (database before cache before API)
- Unified logging and monitoring across all components
CLI Applications
- Modular command-line tools with pluggable components
- Shell command integration for runtime inspection
- Configuration file generation for user customization
Long-Running Daemons
- Signal-based graceful shutdown
- Component health monitoring
- Runtime component restart without full application restart
Plugin Systems
- Dynamic component registration at runtime
- Dependency injection for cross-component communication
- Version-aware component loading
Available Components
The config package includes pre-built components for common services:
| Component | Package | Description | Dependencies |
|---|---|---|---|
| AWS | components/aws |
AWS SDK integration and configuration | - |
| Database | components/database |
SQL database connection pooling | - |
| HTTP Server | components/http |
HTTP/HTTPS server with routing | TLS (optional) |
| HTTP Client | components/httpcli |
HTTP client with connection pooling | TLS, DNS Mapper |
| LDAP | components/ldap |
LDAP client for authentication | - |
| Logger | components/log |
Structured logging component | - |
components/mail |
Email sending (SMTP) | SMTP | |
| Request | components/request |
HTTP request handling | HTTP Client |
| SMTP | components/smtp |
SMTP client configuration | TLS (optional) |
| TLS | components/tls |
TLS/SSL certificate management | - |
| Head | components/head |
HTTP headers management | - |
Component Features
Each component provides:
- ✅ DefaultConfig() - Generate sensible default configuration
- ✅ RegisterFlag() - CLI flag registration for Cobra
- ✅ RegisterMonitorPool() - Health check and metrics integration
- ✅ Dependencies() - Explicit dependency declaration
- ✅ Hot-reload - Configuration reload without restart (where applicable)
- ✅ Thread-safe - Concurrent access protection
- ✅ Comprehensive tests - Ginkgo/Gomega test suites with race detection
Using Components
import (
libcfg "github.com/nabbar/golib/config"
cpthttp "github.com/nabbar/golib/config/components/http"
cptlog "github.com/nabbar/golib/config/components/log"
)
func main() {
cfg := libcfg.New(version)
// Register logger component
logCpt := cptlog.New(ctx)
cptlog.Register(cfg, "logger", logCpt)
// Register HTTP server component
httpCpt := cpthttp.New(ctx)
cpthttp.Register(cfg, "http-server", httpCpt)
// Start all components (logger starts before HTTP due to dependencies)
if err := cfg.Start(); err != nil {
panic(err)
}
}
For detailed component documentation, see the respective README.md in each component's directory.
Core Concepts
Config Interface
The main Config interface provides methods for managing the application lifecycle and components:
type Config interface {
// Lifecycle
Start() error
Reload() error
Stop()
Shutdown(code int)
// Components
ComponentSet(key string, cpt Component)
ComponentGet(key string) Component
ComponentDel(key string)
ComponentList() map[string]Component
ComponentKeys() []string
// Context
Context() libctx.Config[string]
CancelAdd(fct ...func())
CancelClean()
// Events
RegisterFuncStartBefore(fct FuncEvent)
RegisterFuncStartAfter(fct FuncEvent)
RegisterFuncReloadBefore(fct FuncEvent)
RegisterFuncReloadAfter(fct FuncEvent)
RegisterFuncStopBefore(fct FuncEvent)
RegisterFuncStopAfter(fct FuncEvent)
// Others
RegisterFuncViper(fct libvpr.FuncViper)
RegisterDefaultLogger(fct liblog.FuncLog)
GetShellCommand() []shlcmd.Command
}
Component Interface
Components must implement the Component interface:
type Component interface {
Type() string
Init(key string, ctx FuncContext, get FuncCptGet, vpr FuncViper, vrs Version, log FuncLog)
DefaultConfig(indent string) []byte
Dependencies() []string
SetDependencies(d []string) error
IsStarted() bool
IsRunning() bool
Start() error
Reload() error
Stop()
RegisterFlag(cmd *cobra.Command) error
RegisterMonitorPool(p FuncPool)
RegisterFuncStart(before, after FuncCptEvent)
RegisterFuncReload(before, after FuncCptEvent)
}
Component Lifecycle
The config system manages a three-phase lifecycle for all components:
Start Phase
cfg.Start() // Calls in order:
// 1. RegisterFuncStartBefore hooks
// 2. Component.Start() for each component (in dependency order)
// 3. RegisterFuncStartAfter hooks
Features:
- Components start in dependency order
- Early termination on first error
- Hooks execute before/after all components
- State tracking (started/running)
Reload Phase
cfg.Reload() // Calls in order:
// 1. RegisterFuncReloadBefore hooks
// 2. Component.Reload() for each component
// 3. RegisterFuncReloadAfter hooks
Features:
- Hot reload without restart
- Component state preservation
- Configuration refresh
- No downtime
Stop Phase
cfg.Stop() // Calls in order:
// 1. RegisterFuncStopBefore hooks
// 2. Component.Stop() for each component (reverse order)
// 3. RegisterFuncStopAfter hooks
Features:
- Graceful shutdown
- Reverse dependency order
- Resource cleanup
- No error propagation (best effort)
Shutdown
cfg.Shutdown(exitCode) // Calls:
// 1. Custom cancel functions (CancelAdd)
// 2. cfg.Stop()
// 3. os.Exit(exitCode)
Use Case: Complete application termination with cleanup.
Dependency Management
The config system automatically resolves and orders component dependencies.
Declaring Dependencies
type DatabaseComponent struct {
// ...
}
func (d *DatabaseComponent) Dependencies() []string {
return []string{} // No dependencies
}
type CacheComponent struct {
// ...
}
func (c *CacheComponent) Dependencies() []string {
return []string{"database"} // Depends on database
}
type APIComponent struct {
// ...
}
func (a *APIComponent) Dependencies() []string {
return []string{"database", "cache"} // Depends on both
}
Automatic Ordering
cfg.ComponentSet("api", apiComponent) // Registered in any order
cfg.ComponentSet("cache", cacheComponent)
cfg.ComponentSet("database", databaseComponent)
cfg.Start() // Starts in correct order:
// 1. database
// 2. cache
// 3. api
Deep Dependency Chains
The system handles complex dependency graphs:
database → cache → session → api
↘ logger ↗
Components are started in topological order and stopped in reverse order.
Event Hooks
Register custom functions to execute during lifecycle events:
Global Hooks
// Before starting any component
cfg.RegisterFuncStartBefore(func() error {
fmt.Println("Preparing to start...")
return nil
})
// After all components started
cfg.RegisterFuncStartAfter(func() error {
fmt.Println("All components started successfully")
return nil
})
// Before reloading
cfg.RegisterFuncReloadBefore(func() error {
fmt.Println("Preparing to reload...")
return nil
})
// After reloading
cfg.RegisterFuncReloadAfter(func() error {
fmt.Println("Reload complete")
return nil
})
// Before stopping
cfg.RegisterFuncStopBefore(func() error {
fmt.Println("Preparing to stop...")
return nil
})
// After all components stopped
cfg.RegisterFuncStopAfter(func() error {
fmt.Println("Cleanup complete")
return nil
})
Component-Level Hooks
Components can register their own hooks:
func (c *MyComponent) Init(key string, /* ... */) {
// Hooks are set during initialization
}
// During registration, the component can set hooks
component.RegisterFuncStart(
func(cpt Component) error {
// Before this component starts
return nil
},
func(cpt Component) error {
// After this component starts
return nil
},
)
Hook Execution Order
For cfg.Start():
RegisterFuncStartBefore- For each component (in dependency order):
- Component's before-start hook
- Component's
Start()method - Component's after-start hook
RegisterFuncStartAfter
Shell Commands
The config system provides built-in shell commands for component management:
cmds := cfg.GetShellCommand()
// Returns commands: list, start, stop, restart
for _, cmd := range cmds {
fmt.Printf("Command: %s - %s\n", cmd.Name(), cmd.Describe())
}
Available Commands
| Command | Description | Usage |
|---|---|---|
list |
List all components with status | list |
start |
Start all components | start |
stop |
Stop all components | stop |
restart |
Restart all components | restart |
Example Usage
import (
"bytes"
libcfg "github.com/nabbar/golib/config"
)
func main() {
cfg := libcfg.New(version)
// Register components
cfg.ComponentSet("database", db)
cfg.ComponentSet("cache", cache)
// Get shell commands
cmds := cfg.GetShellCommand()
// Execute list command
stdout := &bytes.Buffer{}
stderr := &bytes.Buffer{}
for _, cmd := range cmds {
if cmd.Name() == "list" {
cmd.Run(stdout, stderr, nil)
fmt.Print(stdout.String())
}
}
}
Context Management
The config system provides a shared context for all components:
Basic Context Usage
// Get the context
ctx := cfg.Context()
// Store values
ctx.Store("key", "value")
// Load values
val, ok := ctx.Load("key")
if ok {
fmt.Println(val) // "value"
}
Cancel Functions
Register functions to be called on application shutdown:
cfg.CancelAdd(func() {
fmt.Println("Cleanup database connections")
})
cfg.CancelAdd(func() {
fmt.Println("Flush caches")
})
// Clear all cancel functions
cfg.CancelClean()
Signal Handling
Graceful shutdown on system signals:
func main() {
cfg := libcfg.New(version)
// Start components
if err := cfg.Start(); err != nil {
panic(err)
}
// Wait for SIGINT, SIGTERM, or SIGQUIT
libcfg.WaitNotify()
// Cleanup happens automatically
}
Configuration Generation
Generate default configuration files for all components:
// Get default configuration as io.Reader
reader := cfg.DefaultConfig()
// Write to file
file, _ := os.Create("config.json")
defer file.Close()
io.Copy(file, reader)
Generated configuration includes all registered components with their default values.
Example output:
{
"database": {
"enabled": true,
"host": "localhost",
"port": 5432
},
"cache": {
"enabled": true,
"ttl": 300
}
}
Creating Components
Component Interface
Components must implement this interface:
type Component interface {
// Identification
Type() string
// Initialization
Init(key string, ctx FuncContext, get FuncCptGet,
vpr FuncViper, vrs Version, log FuncLog)
// Configuration
DefaultConfig(indent string) []byte
// Dependencies
Dependencies() []string
SetDependencies(d []string) error
// Lifecycle
Start() error
Reload() error
Stop()
IsStarted() bool
IsRunning() bool
// Integration
RegisterFlag(cmd *cobra.Command) error
RegisterMonitorPool(p FuncPool)
RegisterFuncStart(before, after FuncCptEvent)
RegisterFuncReload(before, after FuncCptEvent)
}
Minimal Component Example
package mycomponent
import (
cfgtps "github.com/nabbar/golib/config/types"
libctx "github.com/nabbar/golib/context"
liblog "github.com/nabbar/golib/logger"
libver "github.com/nabbar/golib/version"
libvpr "github.com/nabbar/golib/viper"
)
type MyComponent struct {
key string
started bool
running bool
logger liblog.FuncLog
}
func (c *MyComponent) Type() string {
return "mycomponent"
}
func (c *MyComponent) Init(key string, ctx context.Context,
get cfgtps.FuncCptGet, vpr libvpr.FuncViper,
vrs libver.Version, log liblog.FuncLog) {
c.key = key
c.logger = log
}
func (c *MyComponent) DefaultConfig(indent string) []byte {
return []byte(`{
"enabled": true,
"timeout": 30
}`)
}
func (c *MyComponent) Dependencies() []string {
return []string{} // No dependencies
}
func (c *MyComponent) SetDependencies(d []string) error {
return nil
}
func (c *MyComponent) Start() error {
c.started = true
c.running = true
return nil
}
func (c *MyComponent) Reload() error {
// Reload logic here
return nil
}
func (c *MyComponent) Stop() {
c.running = false
c.started = false
}
func (c *MyComponent) IsStarted() bool { return c.started }
func (c *MyComponent) IsRunning() bool { return c.running }
func (c *MyComponent) RegisterFlag(cmd *cobra.Command) error {
return nil
}
func (c *MyComponent) RegisterMonitorPool(p montps.FuncPool) {}
func (c *MyComponent) RegisterFuncStart(before, after cfgtps.FuncCptEvent) {}
func (c *MyComponent) RegisterFuncReload(before, after cfgtps.FuncCptEvent) {}
Using the Component
cfg := libcfg.New(version)
// Create and register component
comp := &MyComponent{}
cfg.ComponentSet("mycomp", comp)
// Start the application
if err := cfg.Start(); err != nil {
panic(err)
}
Best Practices
1. Component Design
- Keep components focused on a single responsibility
- Use interfaces for flexibility and testing
- Implement proper error handling
- Use atomic values for thread-safe state management
2. Dependency Management
- Declare all dependencies explicitly
- Avoid circular dependencies
- Keep dependency chains shallow when possible
3. Lifecycle Management
- Always clean up resources in
Stop() - Make
Reload()idempotent - Handle errors gracefully in
Start() - Track component state accurately
4. Configuration
- Provide sensible defaults
- Validate configuration before use
- Support hot-reload when possible
- Document configuration options
5. Logging
- Use the provided logger
- Log at appropriate levels
- Include context in log messages
- Don't log sensitive information
6. Testing
- Write unit tests for each component
- Test lifecycle transitions
- Mock dependencies for isolation
- Test error conditions
Testing
Comprehensive testing documentation is available in TESTING.md.
Quick Test:
cd config
go test -v
With Coverage:
go test -v -cover
Test Results:
- 93 test specifications
- 100% feature coverage
- 6 focused test files
- ~0.1 second execution time
Examples
See the Creating Components section and TESTING.md for detailed examples.
API Reference
| Method | Description |
|---|---|
New(version) |
Create new config instance |
Start() |
Start all components |
Reload() |
Reload all components |
Stop() |
Stop all components |
Shutdown(code) |
Shutdown with exit code |
ComponentSet(key, cpt) |
Register component |
ComponentGet(key) |
Get component |
ComponentDel(key) |
Delete component |
ComponentList() |
List all components |
Context() |
Get shared context |
GetShellCommand() |
Get shell commands |
Contributing
Contributions are welcome! Please follow these guidelines:
Code Contributions
- Do not use AI to generate package implementation code
- AI may assist with tests, documentation, and bug fixing
- All contributions must pass existing tests
- Maintain or improve test coverage
- Follow existing code style and patterns
Documentation
- Update README.md for new features
- Add examples for common use cases
- Keep TESTING.md synchronized with test changes
- Document all public APIs with GoDoc comments
Testing
- Write tests for all new features
- Test edge cases and error conditions
- Verify thread safety when applicable
- Add comments explaining complex test scenarios
Pull Requests
- Provide clear description of changes
- Reference related issues
- Include test results
- Update documentation
See CONTRIBUTING.md for detailed guidelines.
Future Enhancements
Potential improvements for future versions:
Lifecycle Features
- Parallel component startup (where dependencies allow)
- Component health checks with automatic restart
- Gradual rollout of configuration changes
- Component state persistence and recovery
Dependency Management
- Circular dependency detection with clear error messages
- Optional dependencies (soft dependencies)
- Dynamic dependency injection at runtime
- Dependency visualization tools
Configuration
- Multiple configuration sources (files, env vars, remote)
- Configuration validation before apply
- Configuration versioning and rollback
- Encrypted configuration values
Monitoring & Observability
- Built-in metrics for lifecycle events
- Distributed tracing integration
- Event streaming for external monitoring
- Component dependency graph visualization
Developer Experience
- Code generation for boilerplate components
- Interactive component inspector
- Configuration schema validation
- Better error messages with suggestions
Suggestions and contributions are welcome via GitHub issues.
Related Documentation
Core Packages
- context - Thread-safe context storage used by config
- viper - Configuration file loading and management
- logger - Structured logging system
- version - Application version management
Component Packages
- components/aws - AWS integration
- components/database - Database connection pooling
- components/http - HTTP server
- components/httpcli - HTTP client
- components/ldap - LDAP authentication
- components/log - Logger component
- components/mail - Email sending
- components/smtp - SMTP client
- components/tls - TLS certificate management
External References
- Viper Configuration - Configuration management library
- Cobra Commands - CLI framework integration
- Ginkgo Testing - BDD testing framework used
- Gomega Matchers - Matcher library for tests
License
MIT License - See LICENSE file for details.
Copyright (c) 2022 Nicolas JUHEL
Resources
- Issues: GitHub Issues
- Documentation: GoDoc
- Testing Guide: TESTING.md
- Contributing: CONTRIBUTING.md
- Source Code: GitHub Repository
This package is part of the golib project.