dactyl-db 0.9.0

Interchangeably read and write to a lightweight Rust local store or cloud-hosted Vercel Neon instances behind one facade.
Documentation
const RELEASE_CONFIG: &str = include_str!("../.github/release.toml");
const DATABASE_MANIFEST: &str = include_str!("../Cargo.toml");

fn workspace_setting(name: &str) -> &str {
    let mut in_workspace = false;
    for line in RELEASE_CONFIG.lines() {
        let line = line.trim();
        if line.starts_with('[') {
            in_workspace = line == "[workspace]";
            continue;
        }
        if in_workspace {
            if let Some((key, value)) = line.split_once('=') {
                if key.trim() == name {
                    return value.trim();
                }
            }
        }
    }
    panic!("missing [workspace].{name}");
}

fn manifest_package_version(manifest: &str) -> &str {
    let mut in_package = false;
    for line in manifest.lines() {
        let line = line.trim();
        if line.starts_with('[') {
            in_package = line == "[package]";
            continue;
        }
        if in_package {
            if let Some((key, value)) = line.split_once('=') {
                if key.trim() == "version" {
                    return value.trim().trim_matches('"');
                }
            }
        }
    }
    panic!("missing [package].version");
}

#[test]
fn ordinary_main_pushes_do_not_publish_packages() {
    assert_eq!(workspace_setting("release_always"), "false");
}

#[test]
fn release_commits_cannot_recursively_prepare_another_release() {
    let filter = workspace_setting("release_commits");
    assert_eq!(filter, r#"'^(feat|fix)(\([^)]*\))?!?:'"#);
}

#[test]
fn package_metadata_has_the_application_driver_tags() {
    assert_eq!(
        manifest_package_version(DATABASE_MANIFEST),
        env!("CARGO_PKG_VERSION")
    );
    assert!(DATABASE_MANIFEST
        .contains("keywords = [\"datastore\", \"vercel\", \"postgres\", \"sql\", \"sqlite\"]"));
    assert!(!DATABASE_MANIFEST.contains("#decapod"));
}