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").await?;Implementations§
Source§impl ProjectTemplateService
impl ProjectTemplateService
Sourcepub fn new() -> ProjectTemplateService
pub fn new() -> ProjectTemplateService
Create a new ProjectTemplateService
Sourcepub async fn create_readme(
&self,
path: &Path,
project_name: &str,
) -> Result<(), Error>
pub async fn create_readme( &self, path: &Path, project_name: &str, ) -> Result<(), Error>
Create README.md for the project
Sourcepub async fn create_gitignore(&self, path: &Path) -> Result<(), Error>
pub async fn create_gitignore(&self, path: &Path) -> Result<(), Error>
Create .gitignore for the project
Sourcepub async fn create_cargo_toml(
&self,
path: &Path,
project_name: &str,
) -> Result<(), Error>
pub async fn create_cargo_toml( &self, path: &Path, project_name: &str, ) -> Result<(), Error>
Create Cargo.toml for the project
§Arguments
path- Project root pathproject_name- Name of the project
Sourcepub async fn create_main_rs(
&self,
path: &Path,
project_name: &str,
) -> Result<(), Error>
pub async fn create_main_rs( &self, path: &Path, project_name: &str, ) -> Result<(), Error>
Create src/main.rs for the project
Sourcepub async fn create_build_rs(&self, path: &Path) -> Result<(), Error>
pub async fn create_build_rs(&self, path: &Path) -> Result<(), Error>
Create build.rs for the project
This build script generates:
- node_registry.rs - Node dispatcher based on mecha10.json
Sourcepub async fn create_env_example(
&self,
path: &Path,
project_name: &str,
) -> Result<(), Error>
pub async fn create_env_example( &self, path: &Path, project_name: &str, ) -> Result<(), Error>
Create .env.example for the project
§Arguments
path- Project root pathproject_name- Name of the project
Sourcepub async fn create_rustfmt_toml(&self, path: &Path) -> Result<(), Error>
pub async fn create_rustfmt_toml(&self, path: &Path) -> Result<(), Error>
Create rustfmt.toml for the project
Sourcepub async fn create_docker_compose(
&self,
path: &Path,
project_name: &str,
) -> Result<(), Error>
pub async fn create_docker_compose( &self, path: &Path, project_name: &str, ) -> Result<(), Error>
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_remote_docker_files(&self, path: &Path) -> Result<(), Error>
pub async fn create_remote_docker_files(&self, path: &Path) -> Result<(), Error>
Create remote node Docker files
Creates docker-compose.remote.yml and Dockerfile.remote for running AI/ML nodes in containers. These are used when nodes are configured in targets.remote in mecha10.json.
§Arguments
path- Project root path
Sourcepub async fn create_package_json(
&self,
path: &Path,
project_name: &str,
) -> Result<(), Error>
pub async fn create_package_json( &self, path: &Path, project_name: &str, ) -> Result<(), Error>
Create package.json for npm dependencies
Includes @mecha10/simulation-models and @mecha10/simulation-environments dependencies, resolved via 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<(), Error>
pub async fn create_requirements_txt(&self, path: &Path) -> Result<(), Error>
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_rl_training_bundle(&self, path: &Path) -> Result<(), Error>
pub async fn create_rl_training_bundle(&self, path: &Path) -> Result<(), Error>
Create the standard RL training bundle (LAB-1743, Kestra flows added in LAB-1765) for a
rover template project
Bundles the Phase 2 rover env / ppo algorithm (packages/rl-trainer,
packages/rl-task-runner, registered via the mecha10_rl.envs/mecha10_rl.algorithms
entry-points registry, LAB-1732/1733) into three pieces:
configs/rl/local.yml- the default sentinel-override config for the combination (LAB-1734’srl_task_runner.local_configpattern).requirements.txt- appended with the two packages’ dependencies, since both already register their entry points in their ownpyproject.toml(nothing else to declare).kestra/README.mdandkestra/flows/ml-pipeline/*.yml- the realtrain/tune/tune-then-train/train-from-tune/resume-runKestra flows (LAB-1745), embedded and bundled by LAB-1765 so new projects get working flows out of the box.
Callers should invoke create_requirements_txt first — this appends to that file rather
than creating it.
§Arguments
path- Project root path
Trait Implementations§
Source§impl Default for ProjectTemplateService
impl Default for ProjectTemplateService
Source§fn default() -> ProjectTemplateService
fn default() -> ProjectTemplateService
Auto Trait Implementations§
impl Freeze for ProjectTemplateService
impl RefUnwindSafe for ProjectTemplateService
impl Send for ProjectTemplateService
impl Sync for ProjectTemplateService
impl Unpin for ProjectTemplateService
impl UnsafeUnpin 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