mod host;
use crate::cli::{WasiCli, WasiCliView};
use crate::p3::bindings::cli::{
environment, exit, stderr, stdin, stdout, terminal_input, terminal_output, terminal_stderr,
terminal_stdin, terminal_stdout,
};
use wasmtime::component::Linker;
pub fn add_to_linker<T>(linker: &mut Linker<T>) -> wasmtime::Result<()>
where
T: WasiCliView + 'static,
{
let exit_options = exit::LinkOptions::default();
add_to_linker_with_options(linker, &exit_options)
}
pub fn add_to_linker_with_options<T>(
linker: &mut Linker<T>,
exit_options: &exit::LinkOptions,
) -> wasmtime::Result<()>
where
T: WasiCliView + 'static,
{
exit::add_to_linker::<_, WasiCli>(linker, exit_options, T::cli)?;
environment::add_to_linker::<_, WasiCli>(linker, T::cli)?;
stdin::add_to_linker::<_, WasiCli>(linker, T::cli)?;
stdout::add_to_linker::<_, WasiCli>(linker, T::cli)?;
stderr::add_to_linker::<_, WasiCli>(linker, T::cli)?;
terminal_input::add_to_linker::<_, WasiCli>(linker, T::cli)?;
terminal_output::add_to_linker::<_, WasiCli>(linker, T::cli)?;
terminal_stdin::add_to_linker::<_, WasiCli>(linker, T::cli)?;
terminal_stdout::add_to_linker::<_, WasiCli>(linker, T::cli)?;
terminal_stderr::add_to_linker::<_, WasiCli>(linker, T::cli)?;
Ok(())
}
pub struct TerminalInput;
pub struct TerminalOutput;