kmmp-project-manager 0.1.0

kmmp-project-manager is a Rust crate for Kotlin Multiplatform (KMP) projects, offering a lightweight alternative to Android Studio. It provides tools for project creation, structure management, build automation, code generation, IDE integration, dependency management, and project configuration.
Documentation
use crate::{
    Module,
    GradleProperties,
    SettingsGradle,
};

use serde::{Serialize,Deserialize};

/// Represents a project in the KMMP (Kotlin Multiplatform) context.
#[derive(Deserialize, Serialize, Debug, PartialEq)]
pub struct Project<'a> {
    /// The name of the project.
    #[deprecated(note = "maybe useless field")]
    pub name : &'a str,

    /// The list of modules associated with the project.
    pub modules : Vec<Module<'a>>,

    /// The Gradle properties of the project.
    pub properties : GradleProperties<'a>,
    
    /// The configuration of the settings.gradle file.
    pub setting_gradle : SettingsGradle<'a>,
}

impl<'a> Project<'a> {
    /// Creates a new `Project` instance.
    ///
    /// # Arguments
    ///
    /// * `name` - The name of the Gradle project.
    /// * `modules` - The list of modules in the project.
    /// * `properties` - The Gradle properties for the project.
    /// * `setting_gradle` - The Gradle settings.gradle configuration for the project.
    ///
    /// # Returns
    ///
    /// A new `Project` instance.
    pub fn new(
        name: &'a str,
        modules: Vec<Module<'a>>,
        properties: GradleProperties<'a>,
        setting_gradle: SettingsGradle<'a>,
    ) -> Self {
        Project {
            name,
            modules,
            properties,
            setting_gradle,
        }
    }
}

#[cfg(feature = "generate")]
impl crate::Generate for Project<'_> {
    fn generate(&self,directory : &str) {
        self.properties.generate(directory);
        self.setting_gradle.generate(directory);
        for module in &self.modules  {
            module.generate(directory)
        };
    }
}