doppio 2.4.0

A typed compiler pipeline for plain-text Ledger accounting -- parse, resolve, and elaborate .ledger files with a library API built for programmatic use.
Documentation
fn main() {
    // Use the vendored `protoc` so the build doesn't depend on a
    // system-wide protobuf-compiler install. Honours an externally-set
    // `PROTOC` env var if one is provided (e.g. by `nix shell` or distro
    // packaging that wants to use its own protoc).
    if std::env::var_os("PROTOC").is_none() {
        // SAFETY: build script runs single-threaded before any user code.
        unsafe {
            std::env::set_var("PROTOC", protoc_bin_vendored::protoc_bin_path().unwrap());
        }
    }

    let proto = std::path::Path::new("proto").join("doppio.proto");
    let proto_dir = std::path::Path::new("proto");
    println!("cargo:rerun-if-changed={}", proto.display());
    prost_build::Config::new()
        .btree_map(["."])
        .compile_protos(&[&proto], &[&proto_dir])
        .expect("compile protos");
}