mirror of https://github.com/zino-rs/zino
Change the front-end json structure and cancel the manual implementation of Deserialize
This commit is contained in:
parent
87f2e67a33
commit
a3fc4dfb29
|
@ -428,22 +428,33 @@
|
|||
}
|
||||
|
||||
function checkedOptions() {
|
||||
const options = {};
|
||||
let option_groups = {};
|
||||
document.querySelectorAll('.closet').forEach(closet => {
|
||||
const groupName = closet.querySelector('.option-title').textContent;
|
||||
options[groupName] = [];
|
||||
option_groups[groupName] = [];
|
||||
closet.querySelectorAll('.checked').forEach(option => {
|
||||
if (!option.classList.contains('all-options')) {
|
||||
options[groupName].push(option.getAttribute('data-feature'));
|
||||
option_groups[groupName].push(option.getAttribute('data-feature'));
|
||||
} else {
|
||||
let all_flag = option.getAttribute('data-feature')
|
||||
if (all_flag != null) {
|
||||
options[groupName] = [option.getAttribute('data-feature')]
|
||||
option_groups[groupName] = [option.getAttribute('data-feature')]
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
return options;
|
||||
let option = {
|
||||
zino_feature: option_groups['Framework']
|
||||
.concat(option_groups['zino-features'])
|
||||
.sort(),
|
||||
core_feature: option_groups['core-features']
|
||||
.concat(option_groups['Database'])
|
||||
.concat(option_groups['Accessor'])
|
||||
.concat(option_groups['Connector'])
|
||||
.concat(option_groups['locale'])
|
||||
.sort()
|
||||
}
|
||||
return option;
|
||||
}
|
||||
|
||||
async function generateCargoToml() {
|
||||
|
|
|
@ -6,11 +6,8 @@ use axum::{
|
|||
};
|
||||
use clap::Parser;
|
||||
use include_dir::Dir;
|
||||
use serde::{
|
||||
de::{MapAccess, Visitor},
|
||||
Deserialize, Deserializer,
|
||||
};
|
||||
use std::{env, fmt, fs};
|
||||
use serde::Deserialize;
|
||||
use std::{env, fs};
|
||||
use toml_edit::{Array, DocumentMut as Document};
|
||||
use zino::prelude::*;
|
||||
use zino_core::error::Error;
|
||||
|
@ -118,51 +115,13 @@ async fn update_current_dir(Path(path): Path<String>) -> impl IntoResponse {
|
|||
})
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
/// Features struct.
|
||||
#[derive(Debug, Deserialize)]
|
||||
struct Features {
|
||||
zino_feature: Vec<String>,
|
||||
core_feature: Vec<String>,
|
||||
}
|
||||
|
||||
impl<'de> Deserialize<'de> for Features {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||
where
|
||||
D: Deserializer<'de>,
|
||||
{
|
||||
struct FeaturesVisitor;
|
||||
|
||||
impl<'de> Visitor<'de> for FeaturesVisitor {
|
||||
type Value = Features;
|
||||
|
||||
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
|
||||
formatter.write_str("a map with keys and values")
|
||||
}
|
||||
|
||||
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
|
||||
where
|
||||
M: MapAccess<'de>,
|
||||
{
|
||||
let mut zino_feature = Vec::new();
|
||||
let mut core_feature = Vec::new();
|
||||
|
||||
while let Some((key, value)) = map.next_entry::<String, Vec<String>>()? {
|
||||
match key.as_str() {
|
||||
"Framework" | "zino-features" => zino_feature.extend(value),
|
||||
_ => core_feature.extend(value),
|
||||
}
|
||||
}
|
||||
|
||||
Ok(Features {
|
||||
zino_feature,
|
||||
core_feature,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
deserializer.deserialize_map(FeaturesVisitor)
|
||||
}
|
||||
}
|
||||
|
||||
/// Generates dependencies in `Cargo.toml` file.
|
||||
async fn generate_cargo_toml(mut req: zino::Request) -> zino::Result {
|
||||
let mut res = zino::Response::default().context(&req);
|
||||
|
@ -185,32 +144,36 @@ async fn generate_cargo_toml(mut req: zino::Request) -> zino::Result {
|
|||
if cargo_toml.get("dependencies").is_none() {
|
||||
cargo_toml["dependencies"] = toml_edit::table();
|
||||
}
|
||||
if let Some(dependencies) = cargo_toml.get_mut("dependencies") {
|
||||
let mut zino_feature = Array::default();
|
||||
for feature in body.zino_feature {
|
||||
zino_feature.push(feature);
|
||||
}
|
||||
if let Some(zino) = dependencies.get_mut("zino") {
|
||||
zino["features"] = toml_edit::value(zino_feature);
|
||||
} else {
|
||||
|
||||
{
|
||||
// let mut zino_feature = Array::default();
|
||||
// for feature in body.zino_feature {
|
||||
// zino_feature.push(feature);
|
||||
// }
|
||||
|
||||
let zino_feature: Array = body.zino_feature.into_iter().collect();
|
||||
if cargo_toml["dependencies"].get("zino").is_none() {
|
||||
let mut zino_table = toml_edit::table();
|
||||
zino_table["version"] = toml_edit::value("0.23.3");
|
||||
zino_table["version"] = toml_edit::value("0.24.3");
|
||||
zino_table["features"] = toml_edit::value(zino_feature);
|
||||
dependencies["zino"] = zino_table;
|
||||
cargo_toml["dependencies"]["zino"] = zino_table;
|
||||
} else {
|
||||
cargo_toml["dependencies"]["zino"]["features"] = toml_edit::value(zino_feature);
|
||||
}
|
||||
|
||||
let mut core_feature = Array::default();
|
||||
for feature in body.core_feature {
|
||||
core_feature.push(feature);
|
||||
}
|
||||
// let mut core_feature = Array::default();
|
||||
// for feature in body.core_feature {
|
||||
// core_feature.push(feature);
|
||||
// }
|
||||
|
||||
if dependencies.get("zino-core").is_none() {
|
||||
let core_feature: Array = body.core_feature.into_iter().collect();
|
||||
if cargo_toml["dependencies"].get("zino-core").is_none() {
|
||||
let mut core_table = toml_edit::table();
|
||||
core_table["version"] = toml_edit::value("0.24.3");
|
||||
core_table["features"] = toml_edit::value(core_feature);
|
||||
dependencies["zino-core"] = core_table;
|
||||
cargo_toml["dependencies"]["zino-core"] = core_table;
|
||||
} else {
|
||||
dependencies["zino-core"]["features"] = toml_edit::value(core_feature);
|
||||
cargo_toml["dependencies"]["zino-core"]["features"] = toml_edit::value(core_feature);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue