Skip to content

dlukt/namedconf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

namedconf (base layer)

Lossless parser/writer for BIND9 named.conf in Go.

Install

go get github.com/dlukt/namedconf@latest

Usage

package main

import (
    "fmt"
    "os"
    nc "github.com/dlukt/namedconf"
)

func main() {
    f, err := nc.ParseFile("/etc/named.conf")
    if err != nil { panic(err) }

    // Example: print all top-level keywords
    f.Walk(func(n nc.Node) bool {
        if s, ok := n.(*nc.Stmt); ok {
            fmt.Println(s.Keyword)
        }
        return true
    })

    // Save back unchanged (lossless)
    if err := f.Save("/tmp/named.conf.out"); err != nil { panic(err) }
    _ = os.Rename("/tmp/named.conf.out", "/tmp/named.conf")
}

Design

  • Concrete-syntax aware: preserves comments/whitespace.
  • Generic Stmt with optional nested Body for { ... }.
  • Unmodified statements write exact original bytes; modified ones are regenerated with minimal formatting.

Status

Base layer: parser + writer + round-trip tests. Next layers: typed accessors (zones/options), formatter, editor APIs.


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages