Add a documentation website, built with Zola
The documentation moves from READMEs into a site in docs/: getting started, a user guide, operations, a reference, and development pages, written in the style of network vendors' documentation (docs/STYLE.md). bin/bgp/README.md and docs/RFCs.md are folded into it. - A theme of its own in the International Typographic Style, in blues, with self-hosted Inter and JetBrains Mono, search over Zola's index, dark mode, and no resources loaded from other hosts. - Example configurations in docs/examples/, shown on the pages and checked with `bgp --check` in CI. - A test that fails when a field of config.proto is missing from the configuration reference. - A CI job that builds the site; Zola fails on broken links and anchors. - A hardened systemd unit, tried under systemd with kernel routes on. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
9820a5d3bc
commit
dc275f99d7
61 files changed
+5632
-623
No files matched your search
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"name": "textproto",
|
||||
"scopeName": "source.textproto",
|
||||
"fileTypes": ["textproto", "textpb", "pbtxt"],
|
||||
"patterns": [
|
||||
{ "include": "#comment" },
|
||||
{ "include": "#block" },
|
||||
{ "include": "#field" },
|
||||
{ "include": "#string" },
|
||||
{ "include": "#constant" },
|
||||
{ "include": "#number" }
|
||||
],
|
||||
"repository": {
|
||||
"comment": {
|
||||
"name": "comment.line.number-sign.textproto",
|
||||
"match": "#.*$"
|
||||
},
|
||||
"block": {
|
||||
"comment": "A field whose value is a message: `peers {`",
|
||||
"match": "\\b([A-Za-z_][A-Za-z0-9_]*)\\s*:?\\s*(?=\\{)",
|
||||
"captures": { "1": { "name": "entity.name.tag.textproto" } }
|
||||
},
|
||||
"field": {
|
||||
"match": "\\b([A-Za-z_][A-Za-z0-9_]*)\\s*(:)",
|
||||
"captures": {
|
||||
"1": { "name": "support.type.property-name.textproto" },
|
||||
"2": { "name": "punctuation.separator.key-value.textproto" }
|
||||
}
|
||||
},
|
||||
"string": {
|
||||
"patterns": [
|
||||
{
|
||||
"name": "string.quoted.double.textproto",
|
||||
"begin": "\"",
|
||||
"end": "\"",
|
||||
"patterns": [{ "name": "constant.character.escape.textproto", "match": "\\\\." }]
|
||||
},
|
||||
{
|
||||
"name": "string.quoted.single.textproto",
|
||||
"begin": "'",
|
||||
"end": "'",
|
||||
"patterns": [{ "name": "constant.character.escape.textproto", "match": "\\\\." }]
|
||||
}
|
||||
]
|
||||
},
|
||||
"constant": {
|
||||
"patterns": [
|
||||
{ "name": "constant.language.boolean.textproto", "match": "\\b(true|false)\\b" },
|
||||
{ "name": "constant.language.enum.textproto", "match": "\\b[A-Z][A-Z0-9_]*\\b" }
|
||||
]
|
||||
},
|
||||
"number": {
|
||||
"name": "constant.numeric.textproto",
|
||||
"match": "-?\\b(0x[0-9A-Fa-f]+|[0-9]+(\\.[0-9]+)?([eE][+-]?[0-9]+)?)\\b"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user