• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

gsmlg-dev / elixir_caddy / d523ff0f3d97e33c5e409327e3b4e18cbb2a36a0-PR-6
70%
main: 54%

Build:
Build:
LAST BUILD BRANCH: 002-expand-dynamic-config
DEFAULT BRANCH: main
Ran 23 Dec 2025 03:15PM UTC
Jobs 3
Files 43
Run time 35min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

23 Dec 2025 03:14PM UTC coverage: 70.447% (+8.2%) from 62.22%
d523ff0f3d97e33c5e409327e3b4e18cbb2a36a0-PR-6

Pull #6

github

GSMLG-BOT
feat: implement dynamic config support with matchers, env vars, named matchers, routes, and plugins

Add comprehensive support for dynamic Caddy configuration:

## Matcher Types (15 total)
- Path, PathRegexp: Route path matching with regex support
- Header, HeaderRegexp: HTTP header matching with regex
- Method: HTTP method matching (GET, POST, etc)
- Query: Query parameter matching
- Host: Hostname matching
- Protocol: Protocol matching (http, https, grpc)
- RemoteIp, ClientIp: IP range matching
- Vars, VarsRegexp: Variable matching with regex
- Expression: CEL expression matching
- File: File existence matching
- Not: Negate any matcher

## Core Features
- EnvVar: {$VAR} and {$VAR:default} environment variable syntax
- NamedMatcher: @name syntax to compose matchers with AND logic
- NamedRoute: &(name) syntax for reusable route definitions
- PluginConfig: Type-safe plugin configuration support

## Implementation Details
- All 44 new modules implement Caddy.Caddyfile protocol
- All modules emit telemetry events for observability
- All validation functions return {:ok, value}/{:error, reason}
- Comprehensive test coverage: 446 tests, 0 failures
- Code formatted with mix format
- Follows project constitution and existing patterns

## Files Added
- lib/caddy/config/env_var.ex (24 tests)
- lib/caddy/config/named_matcher.ex (20 tests)
- lib/caddy/config/named_route.ex (22 tests)
- lib/caddy/config/plugin_config.ex (24 tests)
- lib/caddy/config/matcher/ (15 matcher types)
- test/caddy/config/matcher/ (15 test files)
- specs/002-expand-dynamic-config/ (feature documentation)

## Status
- Phase 1: Setup ✅
- Phase 2: Foundational (15 matchers) ✅
- Phase 3: US1 Environment Variables ✅
- Phase 4: US2 Named Matchers ✅ (struct complete)
- Phase 5: US3 Named Routes ✅ (struct complete)
- Phase 7: US5 Plugin Configuration ✅
- Phase 8: Polish ✅

Site/Config integration tasks (T039, T044-T046, T048, T053-T054) remain for future work.
Pull Request #6: feat: expand dynamic config with matchers, env vars, routes, and plugins

299 of 315 new or added lines in 19 files covered. (94.92%)

882 of 1252 relevant lines covered (70.45%)

20.4 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
1
94.74
lib/caddy/config/env_var.ex
1
97.14
lib/caddy/config/matcher/file.ex
1
92.31
lib/caddy/config/matcher/protocol.ex
1
95.0
lib/caddy/config/named_matcher.ex
1
94.74
lib/caddy/config/named_route.ex
11
74.42
lib/caddy/config/plugin_config.ex
Jobs
ID Job ID Ran Files Coverage
1 d523ff0f3d97e33c5e409327e3b4e18cbb2a36a0-PR-6.1 23 Dec 2025 03:15PM UTC 43
70.45
GitHub Action Run
2 d523ff0f3d97e33c5e409327e3b4e18cbb2a36a0-PR-6.2 23 Dec 2025 03:15PM UTC 43
70.45
GitHub Action Run
3 d523ff0f3d97e33c5e409327e3b4e18cbb2a36a0-PR-6.3 23 Dec 2025 03:15PM UTC 43
70.45
GitHub Action Run
Source Files on build d523ff0f3d97e33c5e409327e3b4e18cbb2a36a0-PR-6
  • Tree
  • List 43
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Pull Request #6
  • PR Base - main (#7BD089E1...)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc