use std::ffi::{c_char, CString};

pub fn node_start<S: AsRef<str>>(args: &[S]) {
    let cstr_argv: Vec<CString> = args
        .iter()
        .map(|arg| CString::new(arg.as_ref()).unwrap())
        .collect();

    let mut p_argv: Vec<*const i8> = cstr_argv
        .iter() // do NOT into_iter()
        .map(|arg| arg.as_ptr())
        .collect();

    p_argv.push(std::ptr::null());

    let p: *const *const c_char = p_argv.as_ptr();

    unsafe { crate::sys::node_start(cstr_argv.len() as i32, p) };
}