use super::util::{from_json, into_py_result};
use crate::python_facade as facade;
use pyo3::prelude::*;
use pyo3::types::PyModule;
use pyo3::wrap_pyfunction;
#[pyfunction]
pub(crate) fn compute_source_root_hash_json(source_files_json: &str) -> PyResult<String> {
let source_files: Vec<facade::SourceFileEntry> =
from_json("parse source files for source root hash", source_files_json)?;
let root_hash = into_py_result(facade::compute_source_root_hash_checked(&source_files))?;
Ok(hex::encode(root_hash.0))
}
#[pyfunction]
pub(crate) fn validate_source_manifest_json(manifest_json: &str) -> PyResult<()> {
let manifest: facade::SourceManifest =
from_json("parse source manifest for validation", manifest_json)?;
into_py_result(facade::validate_source_manifest(&manifest))
}
pub(crate) fn register_manifest_bindings(m: &Bound<'_, PyModule>) -> PyResult<()> {
m.add_function(wrap_pyfunction!(compute_source_root_hash_json, m)?)?;
m.add_function(wrap_pyfunction!(validate_source_manifest_json, m)?)?;
Ok(())
}