#![cfg(feature = "python-probe")]
fn main() {
let args: Vec<String> = std::env::args().skip(1).collect();
let script = args
.first()
.expect("usage: pyembed_runner <script.py> [module-sys-path...]");
let source = std::fs::read(script).expect("script reads");
let code = std::ffi::CString::new(source).expect("script is valid C string");
pyo3::Python::with_gil(|py| {
use pyo3::types::PyDictMethods;
let globals = pyo3::types::PyDict::new(py);
globals
.set_item(pyo3::intern!(py, "__name__"), "__shun_embedded__")
.expect("globals name");
if let Err(err) = py.run(&code, Some(&globals), Some(&globals)) {
eprintln!("script failed: {err}");
std::process::exit(1);
}
let _ = py.run(
c"import sys; sys.stdout.flush(); sys.stderr.flush()",
None,
None,
);
});
}