use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use crate::model::build::Build;
use crate::model::dependency::Dependency;
use crate::model::repository::Repository;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct Profile {
pub id: String,
pub activation: Option<Activation>,
pub build: Option<Build>,
#[serde(rename = "dependencies")]
pub dependencies: Option<Vec<Dependency>>,
#[serde(rename = "dependencyManagement")]
pub dependency_management: Option<ProfileDependencyManagement>,
pub properties: Option<HashMap<String, String>>,
#[serde(rename = "repositories")]
pub repositories: Option<Vec<Repository>>,
#[serde(rename = "pluginRepositories")]
pub plugin_repositories: Option<Vec<Repository>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct Activation {
pub active_by_default: Option<bool>,
pub jdk: Option<String>,
pub os: Option<ActivationOS>,
pub property: Option<ActivationProperty>,
pub file: Option<ActivationFile>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct ActivationOS {
pub name: Option<String>,
pub family: Option<String>,
pub arch: Option<String>,
pub version: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct ActivationProperty {
pub name: Option<String>,
pub value: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct ActivationFile {
pub missing: Option<String>,
pub exists: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct ProfileDependencyManagement {
#[serde(rename = "dependencies")]
pub dependencies: Option<Vec<Dependency>>,
}