InitService

Struct InitService 

Source
pub struct InitService;
Expand description

Service for initializing new Mecha10 projects

§Examples

use mecha10_cli::services::InitService;

let service = InitService::new();

// Create project structure
service.create_project_directories(&project_path).await?;

// Add example nodes
service.add_example_node(&project_path, "speaker").await?;

Implementations§

Source§

impl InitService

Source

pub fn new() -> Self

Create a new InitService

Source

pub async fn create_project_directories(&self, path: &Path) -> Result<()>

Create project directory structure

Creates all the necessary directories for a new Mecha10 project:

  • nodes/ - Custom node implementations
  • drivers/ - Hardware driver implementations
  • types/ - Shared type definitions
  • behaviors/ - Behavior tree definitions
  • config/ - Configuration files
  • logs/ - Runtime logs
  • simulation/ - Simulation environments
  • simulation/models/ - Robot physical models (for Godot)
  • assets/ - Static assets for simulation and visualization
  • assets/images/ - Image assets for simulation textures, UI, etc.
Source

pub async fn add_example_node( &self, project_root: &Path, component_name: &str, ) -> Result<()>

Add an example node from the catalog to the project

This method:

  1. Searches the component catalog for the component
  2. Generates component files from templates (if any)
  3. Updates Cargo.toml (workspace members or dependencies)
  4. Updates mecha10.json configuration
§Arguments
  • project_root - Root path of the project
  • component_name - Name of the component to add (e.g., “speaker”, “listener”)
Source

pub async fn copy_behavior_templates(&self, project_root: &Path) -> Result<()>

Copy behavior tree templates from framework to project

Copies seed templates from packages/behavior-runtime/seeds/ to {project}/behaviors/ for use with the behavior tree system.

§Arguments
  • project_root - Root path of the project
Source

pub async fn copy_simulation_configs(&self, project_root: &Path) -> Result<()>

Copy simulation configuration files from framework to project

Copies config from packages/simulation/configs/config.json to {project}/configs/dev/simulation/config.json. Simulation is dev-only, so no production config is needed.

§Arguments
  • project_root - Root path of the project
Source

pub async fn copy_simulation_assets(&self, project_root: &Path) -> Result<()>

Copy simulation asset files from framework to project

Copies image assets from packages/simulation/environments/basic_arena/assets/images/ to {project}/assets/images/

This includes cat images (aiko.jpg, phoebe.jpg) used in the basic arena environment

§Arguments
  • project_root - Root path of the project
Source

pub async fn copy_all_node_configs(&self, project_root: &Path) -> Result<()>

Copy all default node configuration files from framework to project

Copies configs for all default nodes from packages/nodes/{node}/configs/ to {project}/configs/nodes/@mecha10/{node}/config.json

This is called during mecha10 init to set up node configs. Skips silently if framework path is not available (standalone CLI mode).

§Arguments
  • project_root - Root path of the project
Source

pub fn detect_framework_path(&self) -> Result<String>

Detect the framework path for development mode

Searches for the mecha10-monorepo in the following order:

  1. MECHA10_FRAMEWORK_PATH environment variable
  2. Walking up the directory tree from current directory

This is used when creating projects in development mode to link to the local framework instead of published crates.

§Returns

The absolute path to the framework root, or an error if not found.

Trait Implementations§

Source§

impl Default for InitService

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more