rscheck-cli 0.1.0-alpha.3

CLI frontend for the rscheck policy engine.
Documentation
use crate::config::{ConfigError, Policy};
use crate::rules;
use std::fs;
use std::path::{Path, PathBuf};

pub fn load_from(path: &Path) -> Result<Policy, ConfigError> {
    Policy::from_path(path)
}

pub fn write_default_config(path: &Path) -> Result<(), ConfigError> {
    let config = Policy::default_with_rules(rules::default_rule_settings());
    let toml = toml::to_string_pretty(&config).map_err(ConfigError::Serialize)?;
    fs::write(path, toml).map_err(|source| ConfigError::Write {
        path: path.to_path_buf(),
        source,
    })
}

pub fn workspace_root() -> Result<PathBuf, cargo_metadata::Error> {
    let metadata = cargo_metadata::MetadataCommand::new().no_deps().exec()?;
    Ok(PathBuf::from(metadata.workspace_root.as_std_path()))
}

pub fn default_config_path(workspace_root: &Path) -> PathBuf {
    workspace_root.join(".rscheck.toml")
}