aboutsummaryrefslogtreecommitdiff
path: root/release
diff options
context:
space:
mode:
Diffstat (limited to 'release')
-rw-r--r--release/0.1.0/bin/nogpadc.exebin0 -> 2237440 bytes
-rw-r--r--release/Cargo.toml8
-rw-r--r--release/src/bin/release_project.rs70
3 files changed, 78 insertions, 0 deletions
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
--- /dev/null
+++ b/release/0.1.0/bin/nogpadc.exe
Binary files 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<String, ReleaseItem>,
+ pub deps: HashMap<String, ReleaseItem>,
+}
+
+#[derive(Debug, Deserialize)]
+pub struct ReleaseItem {
+ pub raw: String,
+ pub target: String,
+ pub files: Vec<String>,
+}
+
+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<String>) {
+ 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