Skip to main content

sim_lib_skill/
install.rs

1use std::sync::Arc;
2
3use sim_kernel::{Cx, Result};
4
5use crate::{FixtureTransport, SkillCard, SkillLib};
6
7/// Installs the skill library into `cx` once and publishes its browse metadata.
8pub fn install_skill_lib(cx: &mut Cx) -> Result<()> {
9    sim_lib_core::install_once(cx, &SkillLib)?;
10    crate::browse::publish_skill_browse_metadata(cx)
11}
12
13/// Installs the skill library, registers `transport`, and binds `card`.
14///
15/// A convenience for tests and examples that wires a [`FixtureTransport`] and
16/// a single [`SkillCard`] into a freshly prepared registry.
17pub fn install_fixture_skill(
18    cx: &mut Cx,
19    transport: Arc<FixtureTransport>,
20    card: SkillCard,
21) -> Result<()> {
22    install_skill_lib(cx)?;
23    let registry = crate::skill_registry(cx)?;
24    registry.install_transport(transport)?;
25    registry.bind_card(cx, card)?;
26    Ok(())
27}