hornet-bind9 0.1.0

Parse, write, and validate BIND9 named.conf configuration files and DNS zone files
Documentation
# Contributing

Contributions are welcome — bug reports, feature requests, documentation improvements,
and pull requests are all appreciated.

---

## Getting started

1. Fork the repository on GitHub
2. Clone your fork: `git clone https://github.com/<you>/hornet`
3. Create a feature branch: `git checkout -b feat/my-feature`
4. Make your changes
5. Run the quality gate: `make quality`
6. Push and open a pull request

---

## Adding support for a new `named.conf` statement

Follow this checklist in order:

- [ ] Add AST types to `src/ast/named_conf.rs`
- [ ] Add a new arm to the `Statement` enum
- [ ] Add a parser in `src/parser/named_conf.rs`
- [ ] Add a writer arm in `src/writer/named_conf.rs`
- [ ] Add validation rules in `src/validator/mod.rs` (if applicable)
- [ ] Add integration tests in `tests/named_conf.rs`
- [ ] Update the [named.conf Constructs]../reference/named-conf-constructs.md reference page

---

## Adding support for a new zone file record type

Follow this checklist in order:

- [ ] Add an `RData` variant to `src/ast/zone_file.rs`
- [ ] Add a parser case in `src/parser/zone_file.rs`
- [ ] Add a writer case in `src/writer/zone_file.rs`
- [ ] Add validation rules if applicable
- [ ] Add integration tests in `tests/zone_file.rs`
- [ ] Update the [Zone Record Types]../reference/zone-record-types.md reference page

---

## Code style

- Rust edition 2021, MSRV 1.74
- All public items must have `///` doc comments
- Use `thiserror` for error types
- Use `tracing` for diagnostics (not `println!` or `eprintln!` in library code)
- Prefer early returns over deeply nested `if`/`else`
- No `unwrap()` in production code — use `?` or explicit error handling
- No magic numbers — define named constants
- All new code must pass `cargo clippy --all-targets --all-features -- -D warnings`

---

## Commit messages

Follow [Conventional Commits](https://www.conventionalcommits.org/):

```
feat(parser): add support for the 'server' statement
fix(validator): report duplicate zone names as Error not Warning
docs(cli): document --allow-warnings flag for check command
test(zone_file): add round-trip tests for TLSA records
```

---

## Pull request guidelines

- **One concern per PR** — keep PRs focused on a single feature or fix
- **Tests required** — new parsers and writers must have integration tests
- **Documentation required** — update the relevant reference pages
- **Green CI required**`make quality` must pass

---

## Reporting bugs

Open an issue at <https://github.com/firestoned/hornet/issues> with:

- The hornet version (`hornet --version`)
- The BIND9 config or zone file fragment that causes the issue (minimised if possible)
- What you expected to happen
- What actually happened

---

## License

By contributing to Hornet you agree that your contributions will be licensed under
the MIT License, consistent with the rest of the project.