refactor: remove file-based configuration, use env vars only
All checks were successful
check / check (push) Successful in 1m0s
All checks were successful
check / check (push) Successful in 1m0s
Remove the entire pkg/config package (Viper-based YAML config file loader) and simplify internal/config to read all settings directly from environment variables via os.Getenv(). This eliminates the spurious "Failed to load config" log messages that appeared when no config.yaml file was present. - Delete pkg/config/ (YAML loader, resolver, manager, tests) - Delete configs/config.yaml.example - Simplify internal/config helper functions to use os.Getenv() with defaults instead of falling back to pkgconfig - Update tests to set env vars directly instead of creating in-memory YAML config files via afero - Remove afero, cloud.google.com/*, aws-sdk-go dependencies from go.mod - Update README: document env-var-only configuration, remove YAML/Viper references - Keep godotenv/autoload for .env file convenience in local development closes #27
This commit is contained in:
22
README.md
22
README.md
@@ -50,17 +50,12 @@ make hooks # Install git pre-commit hook that runs make check
|
||||
|
||||
### Configuration
|
||||
|
||||
webhooker uses a YAML configuration file with environment-specific
|
||||
overrides, loaded via the `pkg/config` library (Viper-based). The
|
||||
environment is selected by setting `WEBHOOKER_ENVIRONMENT` to `dev` or
|
||||
`prod` (default: `dev`).
|
||||
All configuration is via environment variables. For local development,
|
||||
you can place variables in a `.env` file in the project root (loaded
|
||||
automatically via `godotenv/autoload`).
|
||||
|
||||
Configuration is resolved in this order (highest priority first):
|
||||
|
||||
1. Environment variables
|
||||
2. `.env` file (loaded via `godotenv/autoload`)
|
||||
3. Config file values for the active environment
|
||||
4. Config file defaults
|
||||
The environment is selected by setting `WEBHOOKER_ENVIRONMENT` to `dev`
|
||||
or `prod` (default: `dev`).
|
||||
|
||||
| Variable | Description | Default |
|
||||
| ----------------------- | ----------------------------------- | -------- |
|
||||
@@ -692,7 +687,7 @@ webhooker/
|
||||
│ └── main.go # Entry point: sets globals, wires fx
|
||||
├── internal/
|
||||
│ ├── config/
|
||||
│ │ └── config.go # Configuration loading via pkg/config
|
||||
│ │ └── config.go # Configuration loading from environment variables
|
||||
│ ├── database/
|
||||
│ │ ├── base_model.go # BaseModel with UUID primary keys
|
||||
│ │ ├── database.go # GORM connection, migrations, admin seed
|
||||
@@ -733,14 +728,11 @@ webhooker/
|
||||
│ │ └── routes.go # All route definitions
|
||||
│ └── session/
|
||||
│ └── session.go # Cookie-based session management
|
||||
├── pkg/config/ # Reusable multi-environment config library
|
||||
├── static/
|
||||
│ ├── static.go # //go:embed directive
|
||||
│ ├── css/style.css # Custom stylesheet (system font stack, card effects, layout)
|
||||
│ └── js/app.js # Client-side JavaScript (minimal bootstrap)
|
||||
├── templates/ # Go HTML templates (base, index, login, etc.)
|
||||
├── configs/
|
||||
│ └── config.yaml.example # Example configuration file
|
||||
├── Dockerfile # Multi-stage: build + check, then Alpine runtime
|
||||
├── Makefile # fmt, lint, test, check, build, docker targets
|
||||
├── go.mod / go.sum
|
||||
@@ -753,7 +745,7 @@ Components are wired via Uber fx in this order:
|
||||
|
||||
1. `globals.New` — Build-time variables (appname, version, arch)
|
||||
2. `logger.New` — Structured logging (slog with TTY detection)
|
||||
3. `config.New` — Configuration loading (pkg/config + environment)
|
||||
3. `config.New` — Configuration loading (environment variables)
|
||||
4. `database.New` — Main SQLite connection, config migrations, admin
|
||||
user seed
|
||||
5. `database.NewWebhookDBManager` — Per-webhook event database
|
||||
|
||||
Reference in New Issue
Block a user