pub struct ProjectTemplateService { /* private fields */ }Expand description
Service for generating project template files
§Examples
use mecha10_cli::services::ProjectTemplateService;
let service = ProjectTemplateService::new();
// Generate all project files
service.create_readme(&project_path, "my-robot").await?;
service.create_cargo_toml(&project_path, "my-robot", false).await?;Implementations§
Source§impl ProjectTemplateService
impl ProjectTemplateService
Sourcepub async fn create_readme(&self, path: &Path, project_name: &str) -> Result<()>
pub async fn create_readme(&self, path: &Path, project_name: &str) -> Result<()>
Create README.md for the project
Sourcepub async fn create_gitignore(&self, path: &Path) -> Result<()>
pub async fn create_gitignore(&self, path: &Path) -> Result<()>
Create .gitignore for the project
Sourcepub async fn create_cargo_config(
&self,
path: &Path,
framework_path: &str,
) -> Result<()>
pub async fn create_cargo_config( &self, path: &Path, framework_path: &str, ) -> Result<()>
Create .cargo/config.toml for framework development
This patches all mecha10-* dependencies to use local paths instead of crates.io. Requires a framework_path pointing to the mecha10-monorepo root.
Sourcepub async fn create_cargo_toml(
&self,
path: &Path,
project_name: &str,
dev: bool,
) -> Result<()>
pub async fn create_cargo_toml( &self, path: &Path, project_name: &str, dev: bool, ) -> Result<()>
Create Cargo.toml for the project
§Arguments
path- Project root pathproject_name- Name of the projectdev- Whether this is for framework development (affects dependency resolution)
Sourcepub async fn create_main_rs(
&self,
path: &Path,
project_name: &str,
) -> Result<()>
pub async fn create_main_rs( &self, path: &Path, project_name: &str, ) -> Result<()>
Create src/main.rs for the project
Sourcepub async fn create_build_rs(&self, path: &Path) -> Result<()>
pub async fn create_build_rs(&self, path: &Path) -> Result<()>
Create build.rs for the project
This build script generates:
- node_registry.rs - Node dispatcher based on mecha10.json
- embedded.rs - Embedded asset accessors
Sourcepub async fn create_embedded_structure(&self, path: &Path) -> Result<()>
pub async fn create_embedded_structure(&self, path: &Path) -> Result<()>
Create embedded directory structure
Sourcepub async fn create_env_example(
&self,
path: &Path,
project_name: &str,
framework_path: Option<String>,
) -> Result<()>
pub async fn create_env_example( &self, path: &Path, project_name: &str, framework_path: Option<String>, ) -> Result<()>
Create .env.example for the project
§Arguments
path- Project root pathproject_name- Name of the projectframework_path- Optional framework path for development mode
Sourcepub async fn create_rustfmt_toml(&self, path: &Path) -> Result<()>
pub async fn create_rustfmt_toml(&self, path: &Path) -> Result<()>
Create rustfmt.toml for the project
Sourcepub async fn create_docker_compose(
&self,
path: &Path,
project_name: &str,
) -> Result<()>
pub async fn create_docker_compose( &self, path: &Path, project_name: &str, ) -> Result<()>
Create docker-compose.yml for the project
Generates a Docker Compose file with Redis and optional PostgreSQL services for local development and deployment.
§Arguments
path- Project root pathproject_name- Name of the project (used for container naming)
Sourcepub async fn create_package_json(
&self,
path: &Path,
project_name: &str,
) -> Result<()>
pub async fn create_package_json( &self, path: &Path, project_name: &str, ) -> Result<()>
Create package.json for npm dependencies
Includes @mecha10/simulation-models and @mecha10/simulation-environments dependencies. Resolution happens at runtime via MECHA10_FRAMEWORK_PATH env var:
- If set: Uses local monorepo packages
- If not set: Uses node_modules/@mecha10/* (requires npm install)
§Arguments
path- Project root pathproject_name- Name of the project
Sourcepub async fn create_requirements_txt(&self, path: &Path) -> Result<()>
pub async fn create_requirements_txt(&self, path: &Path) -> Result<()>
Create requirements.txt for Python dependencies
Includes Python packages needed for AI nodes (onnx, onnxruntime).
Install with: mecha10 setup or pip install -r requirements.txt
§Arguments
path- Project root path
Sourcepub async fn create_mecha10_json(
&self,
path: &Path,
project_name: &str,
template: &Option<String>,
) -> Result<()>
pub async fn create_mecha10_json( &self, path: &Path, project_name: &str, template: &Option<String>, ) -> Result<()>
Create mecha10.json configuration file
Generates the main project configuration file with robot identity, simulation settings, nodes, services, and Docker configuration.
§Arguments
path- Project root directoryproject_name- Name of the projecttemplate- Robot template (rover, humanoid, etc.)
Trait Implementations§
Auto Trait Implementations§
impl Freeze for ProjectTemplateService
impl RefUnwindSafe for ProjectTemplateService
impl Send for ProjectTemplateService
impl Sync for ProjectTemplateService
impl Unpin for ProjectTemplateService
impl UnwindSafe for ProjectTemplateService
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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