From c0244a9d6f657934313e03f67a4b9fa9d93d34b7 Mon Sep 17 00:00:00 2001 From: "1992414357@qq.com" <1992414357@qq.com> Date: Wed, 28 May 2025 09:11:31 +0800 Subject: . --- release/0.1.0/bin/nogpadc.exe | Bin 0 -> 2237440 bytes release/Cargo.toml | 8 +++++ release/src/bin/release_project.rs | 70 +++++++++++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 release/0.1.0/bin/nogpadc.exe create mode 100644 release/Cargo.toml create mode 100644 release/src/bin/release_project.rs (limited to 'release') diff --git a/release/0.1.0/bin/nogpadc.exe b/release/0.1.0/bin/nogpadc.exe new file mode 100644 index 0000000..5cf21ea Binary files /dev/null and b/release/0.1.0/bin/nogpadc.exe differ diff --git a/release/Cargo.toml b/release/Cargo.toml new file mode 100644 index 0000000..e43d5fb --- /dev/null +++ b/release/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "release" +authors = [ "CatilGrass" ] +edition = "2024" + +[dependencies] +serde = { version = "1.0.219", features = ["derive"] } +toml = "0.7.8" \ No newline at end of file diff --git a/release/src/bin/release_project.rs b/release/src/bin/release_project.rs new file mode 100644 index 0000000..c608ff8 --- /dev/null +++ b/release/src/bin/release_project.rs @@ -0,0 +1,70 @@ +use std::fs::{copy, create_dir_all, remove_dir_all}; +use std::path::PathBuf; + +use serde::Deserialize; +use std::collections::HashMap; +use std::fs; + +#[derive(Debug, Deserialize)] +pub struct Config { + pub release: Release, +} + +#[derive(Debug, Deserialize)] +pub struct Release { + pub root: HashMap, + pub deps: HashMap, +} + +#[derive(Debug, Deserialize)] +pub struct ReleaseItem { + pub raw: String, + pub target: String, + pub files: Vec, +} + +pub fn main() { + let root = PathBuf::from(env!("CARGO_MANIFEST_DIR")).parent().unwrap().to_path_buf(); + + let toml_config = root.join("Release.toml"); + let config: Config = toml::from_str(fs::read_to_string(toml_config).unwrap().as_str()) + .expect("Failed to parse TOML"); + + let release_root = + root.join("release"); + + let release_dir_current_version = + release_root.join(env!("PROJECT_VERSION")); + + let target_dir = + root.join(".cargo").join("shared").join("target").join("release").join("deps"); + + // 清理目录 + let _ = remove_dir_all(&release_dir_current_version); + + for data in config.release.root { + println!("Releasing \"{}\" files", data.0); + let raw_path = root.join(data.1.raw); + let target_path = release_dir_current_version.join(data.1.target); + copy_files(&raw_path, &target_path, data.1.files); + } + + for data in config.release.deps { + println!("Releasing \"{}\" files", data.0); + let raw_path = target_dir.join(data.1.raw); + let target_path = release_dir_current_version.join(data.1.target); + copy_files(&raw_path, &target_path, data.1.files); + } +} + +fn copy_files (raw: &PathBuf, target: &PathBuf, file_names: Vec) { + create_dir_all(target).unwrap(); + + for file in file_names.iter() { + let file_path_raw = raw.join(file); + let file_path_target = target.join(file); + if file_path_raw.exists() { + let _ = copy(&file_path_raw, &file_path_target); + } + } +} \ No newline at end of file -- cgit