Skip to content

Rust library for parsing, formatting, and building Caddyfile configuration files

License

Notifications You must be signed in to change notification settings

LeakIX/caddyfile-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

caddyfile-rs

crates.io docs

A Rust library for parsing, formatting, and building Caddyfile configuration files for the Caddy web server.

Features

  • Lexer - tokenize Caddyfile source text with full span tracking
  • Parser - parse tokens into a typed AST
  • Formatter - pretty-print AST back to valid Caddyfile syntax
  • Builder - programmatic API for constructing Caddyfiles
  • Round-trip safe - parse then format produces identical output
  • Zero dependencies beyond thiserror

CLI

Install the caddyfile command-line tool:

cargo install --git https://github.com/LeakIX/caddyfile-rs

Validate

caddyfile validate Caddyfile

Format

caddyfile fmt Caddyfile

Check formatting

caddyfile check Caddyfile

GitHub Actions

Add a workflow to validate your Caddyfile on every push (see validate-caddyfile.yaml):

name: Validate Caddyfile

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  validate:
    name: Validate Caddyfile
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
      - name: Install caddyfile CLI
        run: cargo install --git https://github.com/LeakIX/caddyfile-rs
      - name: Validate Caddyfile
        run: caddyfile validate Caddyfile
      - name: Check formatting
        run: caddyfile check Caddyfile

Documentation

See the full API reference on leakix.github.io/caddyfile-rs.

License

MIT

About

Rust library for parsing, formatting, and building Caddyfile configuration files

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •