xspring 0.1.3

A tool to scaffold spring boot projects interactively like the vs code extension for scaffolding a spring boot project
Documentation
use serde::{Deserialize, Serialize};
use std::fmt;

#[derive(Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct InitializrMetadata {
    pub dependencies: Dependencies,
    pub boot_version: MetadataValue,
    pub java_version: MetadataValue,
    pub language: MetadataValue,
    pub packaging: MetadataValue,
    #[serde(rename = "type")]
    pub project_type: MetadataValue,
    pub name: DefaultText,
    pub description: DefaultText,
}

#[derive(Serialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct QueryParam {
    #[serde(rename = "type")]
    pub project_type: String,
    pub language: String,
    pub boot_version: String,
    pub group_id: String,
    pub artifact_id: String,
    pub name: String,
    pub description: String,
    pub packaging: String,
    pub java_version: String,
    pub dependencies: String,
    pub base_dir: String,
}

#[derive(Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct Dependencies {
    pub values: Vec<DependencyCategories>,
}

#[derive(Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct DependencyCategories {
    pub name: String,
    pub values: Vec<Value>,
}

#[derive(Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct MetadataValue {
    pub default: String,
    pub values: Vec<Value>,
}

#[derive(Deserialize, Debug)]
pub struct DefaultText {
    pub default: String,
}

#[derive(Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct Value {
    pub id: String,
    pub name: String,
}

impl fmt::Display for Value {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        write!(f, "{}", self.name)
    }
}