#[macro_export]
macro_rules! register_plugin {
(manifest = $manifest:expr $(, $($tail:tt)*)?) => {
#[$crate::extism_pdk::plugin_fn]
pub fn hm_manifest(_: ()) -> $crate::extism_pdk::FnResult<$crate::extism_pdk::Json<$crate::PluginManifest>> {
Ok($crate::extism_pdk::Json($manifest))
}
$crate::__rp_dispatch!($($($tail)*)?);
};
}
#[macro_export]
#[doc(hidden)]
macro_rules! __rp_dispatch {
() => {};
(,) => {};
(subcommand = $ty:ty $(, $($rest:tt)*)?) => {
#[$crate::extism_pdk::plugin_fn]
pub fn hm_subcommand_run(
$crate::extism_pdk::Json(input): $crate::extism_pdk::Json<$crate::SubcommandInput>,
) -> $crate::extism_pdk::FnResult<$crate::extism_pdk::Json<$crate::ExitInfo>> {
let plugin = <$ty as ::core::default::Default>::default();
match $crate::SubcommandPlugin::run(&plugin, input) {
Ok(info) => Ok($crate::extism_pdk::Json(info)),
Err(e) => Err($crate::extism_pdk::WithReturnCode::new(e.into(), 1)),
}
}
$crate::__rp_dispatch!($($($rest)*)?);
};
(executor = $ty:ty $(, $($rest:tt)*)?) => {
#[$crate::extism_pdk::plugin_fn]
pub fn hm_executor_run(
$crate::extism_pdk::Json(input): $crate::extism_pdk::Json<$crate::ExecutorInput>,
) -> $crate::extism_pdk::FnResult<$crate::extism_pdk::Json<$crate::StepResult>> {
let plugin = <$ty as ::core::default::Default>::default();
match $crate::StepExecutor::run(&plugin, input) {
Ok(r) => Ok($crate::extism_pdk::Json(r)),
Err(e) => Err($crate::extism_pdk::WithReturnCode::new(e.into(), 1)),
}
}
$crate::__rp_dispatch!($($($rest)*)?);
};
(hook = $ty:ty $(, $($rest:tt)*)?) => {
#[$crate::extism_pdk::plugin_fn]
pub fn hm_hook_on_event(
$crate::extism_pdk::Json(event): $crate::extism_pdk::Json<$crate::HookEvent>,
) -> $crate::extism_pdk::FnResult<$crate::extism_pdk::Json<$crate::HookOutcome>> {
let plugin = <$ty as ::core::default::Default>::default();
match $crate::LifecycleHook::on_event(&plugin, event) {
Ok(o) => Ok($crate::extism_pdk::Json(o)),
Err(e) => Err($crate::extism_pdk::WithReturnCode::new(e.into(), 1)),
}
}
$crate::__rp_dispatch!($($($rest)*)?);
};
(output = $ty:ty $(, $($rest:tt)*)?) => {
#[$crate::extism_pdk::plugin_fn]
pub fn hm_output_on_event(
$crate::extism_pdk::Json(event): $crate::extism_pdk::Json<$crate::BuildEvent>,
) -> $crate::extism_pdk::FnResult<()> {
let plugin = <$ty as ::core::default::Default>::default();
$crate::OutputFormatter::on_event(&plugin, event)
.map_err(|e| $crate::extism_pdk::WithReturnCode::new(e.into(), 1))?;
Ok(())
}
#[$crate::extism_pdk::plugin_fn]
pub fn hm_output_finalize(_: ()) -> $crate::extism_pdk::FnResult<Vec<u8>> {
let plugin = <$ty as ::core::default::Default>::default();
$crate::OutputFormatter::finalize(&plugin)
.map_err(|e| $crate::extism_pdk::WithReturnCode::new(e.into(), 1))
}
$crate::__rp_dispatch!($($($rest)*)?);
};
}