use crate::{
Repositories,
Plugins,
};
use serde::{Serialize,Deserialize};
#[cfg(feature = "generate")]
use std::{
fs::File,
io::Write
};
#[derive(Deserialize, Serialize, Debug, PartialEq, PartialOrd )]
#[serde(bound(deserialize = "'de: 'a"))]
pub struct SettingsGradle<'a> {
pub plugins : Plugins<'a>,
pub plugin_repositories : Repositories<'a>,
pub dependency_repositories : Repositories<'a>,
}
impl<'a> SettingsGradle<'a> {
pub const FILE_NAME : &str = "settings.gradle.kts";
pub fn new(
plugins: Plugins<'a>,
plugin_repositories: Repositories<'a>,
dependency_repositories: Repositories<'a>,
) -> Self {
SettingsGradle {
plugins,
plugin_repositories,
dependency_repositories,
}
}
}
impl std::fmt::Display for SettingsGradle<'_> {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f,"pluginManagement {{\n {}\n{}\n }}",self.plugin_repositories.to_string(),self.plugins.to_string())?;
write!(f,"dependencyResolutionManagement {{\n {}\n }}",self.dependency_repositories.to_string())
}
}
#[cfg(feature = "generate")]
impl crate::Generate for SettingsGradle<'_> {
fn generate(&self,directory : &str) {
let create_directory = format!("{}\\{}",directory,Self::FILE_NAME);
let _ = File::create(&create_directory).expect("Error Creating File").write_all(self.to_string().as_bytes());
}
}