statica-cli 0.48.1

A blazingly fast static site generator that builds on just HTML
use std::{fs, path::Path};

use serde_json::Value;

#[test]
fn npm_packages_match_cli_version() {
    let repo = Path::new(env!("CARGO_MANIFEST_DIR")).join("../..");
    let version = env!("CARGO_PKG_VERSION");
    let packages = [
        "npm/@statica/cli/package.json",
        "npm/@statica/cli-darwin-arm64/package.json",
        "npm/@statica/cli-darwin-x64/package.json",
        "npm/@statica/cli-linux-arm64-gnu/package.json",
        "npm/@statica/cli-linux-x64-gnu/package.json",
        "npm/@statica/cli-win32-x64/package.json",
    ];

    for package in packages {
        let path = repo.join(package);
        let manifest: Value =
            serde_json::from_str(&fs::read_to_string(&path).expect("read npm package manifest"))
                .expect("parse npm package manifest");

        assert_eq!(
            manifest["version"].as_str(),
            Some(version),
            "{package} version must match statica-cli"
        );

        if let Some(optional_dependencies) = manifest["optionalDependencies"].as_object() {
            for (name, pinned_version) in optional_dependencies {
                assert_eq!(
                    pinned_version.as_str(),
                    Some(version),
                    "{package} optional dependency {name} must match statica-cli"
                );
            }
        }
    }
}