From e56d8e8d7af593574dba0b873fd215e8ab9c35f8 Mon Sep 17 00:00:00 2001 From: cuisongliu Date: Sun, 29 Dec 2024 15:41:17 +0800 Subject: [PATCH] feat(main): add json for kube version (#1) Signed-off-by: cuisongliu --- Cargo.toml | 2 ++ build.rs | 8 ++++---- src/main.rs | 8 +++++--- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 280ae32..0b817bd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,6 +21,7 @@ anyhow = "1.0.95" reqwest = "0.12.9" pulldown-cmark = "0.12.2" serde_json = "1.0" +linked-hash-map = "0.5.6" [build-dependencies] reqwest = "0.12.5" tokio = { version = "1.0.0", features = ["rt", "rt-multi-thread", "macros"] } @@ -28,6 +29,7 @@ anyhow = "1.0.95" pulldown-cmark = "0.12.2" serde = { version = "1", features = ["derive"] } serde_json = "1.0" +linked-hash-map = "0.5" [profile.release] lto = true strip = true diff --git a/build.rs b/build.rs index 54ff644..9a5eb97 100644 --- a/build.rs +++ b/build.rs @@ -3,7 +3,7 @@ use pulldown_cmark::HeadingLevel::H1; use pulldown_cmark::{Event, Options, Parser, Tag}; #[allow(clippy::single_component_path_imports)] use reqwest; -use serde_json as json; +use std::collections::BTreeMap; use std::fs::File; #[tokio::main] @@ -12,7 +12,7 @@ async fn main() -> anyhow::Result<(), Error> { "1.16", "1.17", "1.18", "1.19", "1.20", "1.21", "1.22", "1.23", "1.24", "1.25", "1.26", "1.27", "1.28", "1.29", "1.30", "1.31", ]; - let mut versions = Vec::new(); + let mut versions = BTreeMap::new(); for version in _support_versions { let url = format!( "https://raw.githubusercontent.com/kubernetes/kubernetes/refs/heads/master/CHANGELOG/CHANGELOG-{}.md", @@ -23,10 +23,10 @@ async fn main() -> anyhow::Result<(), Error> { let body = resp.text().await?; let h1 = parse_md(&body)?; println!("cargo:warning=fetch version is {:?}", h1); - versions.push(h1); + versions.insert(version.to_string(), h1); } let file = File::create("files/kube_versions.json")?; - json::to_writer(&file, &versions)?; + serde_json::to_writer_pretty(file, &versions)?; Ok(()) } #[allow(clippy::redundant_guards)] diff --git a/src/main.rs b/src/main.rs index b00cb99..4daed21 100644 --- a/src/main.rs +++ b/src/main.rs @@ -21,12 +21,14 @@ async fn main() -> anyhow::Result<()> { #[cfg(test)] mod tests { + use std::collections::BTreeMap; + #[test] fn test_file() -> anyhow::Result<()> { let asset = super::Asset::get("kube_versions.json").unwrap(); - let s = serde_json::from_slice::>>(&asset.data)?; - for v in s { - assert_ne!(v.len(), 0); + let s = serde_json::from_slice::>>(&asset.data)?; + for (_key, value) in s { + assert_ne!(value.len(), 0); } Ok(()) }