diff --git a/.gitignore b/.gitignore index 34f0334..619d2a9 100644 --- a/.gitignore +++ b/.gitignore @@ -5,5 +5,5 @@ !/Target/release/*.deb !/Target/release/*.exe -!/Target/release/PRun -!/Target/release/Run +!/Target/release/PSummary +!/Target/release/Summary diff --git a/README.md b/README.md index 871c006..fd4bfe5 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,10 @@ Exclude certain files or directories (defailt is Specify a custom pattern for matching (defailt is `.git`) +#### --Separator: + +Define a custom separator + ## Dependencies `Summary` relies on several Rust crates to provide its functionality: diff --git a/Source/Struct/Binary/Command.rs b/Source/Struct/Binary/Command.rs new file mode 100644 index 0000000..2a79ad1 --- /dev/null +++ b/Source/Struct/Binary/Command.rs @@ -0,0 +1,34 @@ +pub struct Struct { + pub Separator: Option::Separator, + pub Fn: Box Pin + Send + 'static>> + Send + 'static>, +} + +impl Struct { + pub fn Fn() -> Self { + Self { + Separator: std::path::MAIN_SEPARATOR, + Fn: Box::new(|| { + Box::pin(async move { + let Option = Entry::Struct::Fn(&Option::Struct::Fn(Struct::Fn())); + + match Option.Parallel { + true => { + Parallel::Fn(Option).await; + } + false => { + Sequential::Fn(Option); + } + }; + }) + }), + } + } +} + +pub mod Entry; +pub mod Option; + +use crate::Fn::Binary::Command::{Parallel, Sequential}; + +use futures::Future; +use std::pin::Pin; diff --git a/Source/Struct/Binary/Command/Entry.rs b/Source/Struct/Binary/Command/Entry.rs new file mode 100644 index 0000000..5b62589 --- /dev/null +++ b/Source/Struct/Binary/Command/Entry.rs @@ -0,0 +1,25 @@ +pub type Type = Vec>; + +pub struct Struct { + pub Command: Command, + pub Entry: Type, + pub Parallel: Parallel, + pub Pattern: Pattern, + pub Separator: Separator, +} + +impl Struct { + pub fn Fn(Option: &Option) -> Self { + Self { + Command: Option.Command.clone(), + Entry: crate::Fn::Binary::Command::Entry::Fn(Option), + Parallel: Option.Parallel, + Pattern: Option.Pattern.clone(), + Separator: Option.Separator, + } + } +} + +use crate::Struct::Binary::Command::Option::{ + Command, Parallel, Pattern, Separator, Struct as Option, +}; diff --git a/Source/Struct/Binary/Command/Option.rs b/Source/Struct/Binary/Command/Option.rs new file mode 100644 index 0000000..67a990c --- /dev/null +++ b/Source/Struct/Binary/Command/Option.rs @@ -0,0 +1,37 @@ +pub type Command = Vec; + +pub type Parallel = bool; +pub type Pattern = String; +pub type Separator = char; + +pub struct Struct { + pub Exclude: Vec, + pub Parallel: Parallel, + pub Pattern: Pattern, + pub Root: String, + pub Separator: Separator, +} + +impl Struct { + pub fn Fn(Option { Separator, .. }: Option) -> Self { + Self { + Parallel: Fn().get_flag("Parallel"), + Root: Fn().get_one::("Root").expect("Cannot Root.").to_owned(), + Exclude: Fn() + .get_one::("Exclude") + .expect("Cannot Exclude.") + .split(" ") + .map(|Command| Command.to_string()) + .collect::>(), + Pattern: Fn().get_one::("Pattern").expect("Cannot Pattern.").to_owned(), + Command: Fn() + .get_many::("Command") + .expect("Cannot Command.") + .map(|Command| Command.to_string()) + .collect::>(), + Separator, + } + } +} + +use crate::{Fn::Binary::Command::Fn, Struct::Binary::Command::Struct as Option}; diff --git a/Source/Struct/Binary/mod.rs b/Source/Struct/Binary/mod.rs new file mode 100644 index 0000000..9da7843 --- /dev/null +++ b/Source/Struct/Binary/mod.rs @@ -0,0 +1 @@ +pub mod Command; diff --git a/Source/Struct/mod.rs b/Source/Struct/mod.rs new file mode 100644 index 0000000..a56e8ce --- /dev/null +++ b/Source/Struct/mod.rs @@ -0,0 +1 @@ +pub mod Binary; diff --git a/target/.rustc_info.json b/target/.rustc_info.json index 9a3321f..115988f 100644 --- a/target/.rustc_info.json +++ b/target/.rustc_info.json @@ -1 +1 @@ -{"rustc_fingerprint":8489967503101715510,"outputs":{"15611795083382425170":{"success":true,"status":"","code":0,"stdout":"rustc 1.82.0-nightly (c1a6199e9 2024-07-24)\nbinary: rustc\ncommit-hash: c1a6199e9d92bb785c17a6d7ffd8b8b552f79c10\ncommit-date: 2024-07-24\nhost: x86_64-pc-windows-msvc\nrelease: 1.82.0-nightly\nLLVM version: 18.1.7\n","stderr":""},"16202457509552398077":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\n","stderr":""},"1185988223601034215":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\nC:\\Users\\Nikola\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\npacked\n___\ndebug_assertions\noverflow_checks\npanic=\"unwind\"\nproc_macro\nrelocation_model=\"pic\"\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"msvc\"\ntarget_family=\"windows\"\ntarget_feature=\"cmpxchg16b\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"lahfsahf\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"sse3\"\ntarget_has_atomic\ntarget_has_atomic=\"128\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_has_atomic_equal_alignment=\"128\"\ntarget_has_atomic_equal_alignment=\"16\"\ntarget_has_atomic_equal_alignment=\"32\"\ntarget_has_atomic_equal_alignment=\"64\"\ntarget_has_atomic_equal_alignment=\"8\"\ntarget_has_atomic_equal_alignment=\"ptr\"\ntarget_has_atomic_load_store\ntarget_has_atomic_load_store=\"128\"\ntarget_has_atomic_load_store=\"16\"\ntarget_has_atomic_load_store=\"32\"\ntarget_has_atomic_load_store=\"64\"\ntarget_has_atomic_load_store=\"8\"\ntarget_has_atomic_load_store=\"ptr\"\ntarget_os=\"windows\"\ntarget_pointer_width=\"64\"\ntarget_thread_local\ntarget_vendor=\"pc\"\nub_checks\nwindows\n","stderr":""}},"successes":{}} \ No newline at end of file +{"rustc_fingerprint":9035159094269925662,"outputs":{"15729799797837862367":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\nC:\\Users\\Nikola\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\npacked\n___\ndebug_assertions\noverflow_checks\npanic=\"unwind\"\nproc_macro\nrelocation_model=\"pic\"\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"msvc\"\ntarget_family=\"windows\"\ntarget_feature=\"cmpxchg16b\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"lahfsahf\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"sse3\"\ntarget_has_atomic\ntarget_has_atomic=\"128\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_has_atomic_equal_alignment=\"128\"\ntarget_has_atomic_equal_alignment=\"16\"\ntarget_has_atomic_equal_alignment=\"32\"\ntarget_has_atomic_equal_alignment=\"64\"\ntarget_has_atomic_equal_alignment=\"8\"\ntarget_has_atomic_equal_alignment=\"ptr\"\ntarget_has_atomic_load_store\ntarget_has_atomic_load_store=\"128\"\ntarget_has_atomic_load_store=\"16\"\ntarget_has_atomic_load_store=\"32\"\ntarget_has_atomic_load_store=\"64\"\ntarget_has_atomic_load_store=\"8\"\ntarget_has_atomic_load_store=\"ptr\"\ntarget_os=\"windows\"\ntarget_pointer_width=\"64\"\ntarget_thread_local\ntarget_vendor=\"pc\"\nub_checks\nwindows\n","stderr":""},"14305839045545480886":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\n","stderr":""},"12744816824612481171":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\nC:\\Users\\Nikola\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\npacked\n___\ndebug_assertions\noverflow_checks\npanic=\"unwind\"\nproc_macro\nrelocation_model=\"pic\"\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"msvc\"\ntarget_family=\"windows\"\ntarget_feature=\"cmpxchg16b\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"lahfsahf\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"sse3\"\ntarget_has_atomic\ntarget_has_atomic=\"128\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_has_atomic_equal_alignment=\"128\"\ntarget_has_atomic_equal_alignment=\"16\"\ntarget_has_atomic_equal_alignment=\"32\"\ntarget_has_atomic_equal_alignment=\"64\"\ntarget_has_atomic_equal_alignment=\"8\"\ntarget_has_atomic_equal_alignment=\"ptr\"\ntarget_has_atomic_load_store\ntarget_has_atomic_load_store=\"128\"\ntarget_has_atomic_load_store=\"16\"\ntarget_has_atomic_load_store=\"32\"\ntarget_has_atomic_load_store=\"64\"\ntarget_has_atomic_load_store=\"8\"\ntarget_has_atomic_load_store=\"ptr\"\ntarget_os=\"windows\"\ntarget_pointer_width=\"64\"\ntarget_thread_local\ntarget_vendor=\"pc\"\nub_checks\nwindows\n","stderr":""},"16495917692426387086":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\n","stderr":""},"4614504638168534921":{"success":true,"status":"","code":0,"stdout":"rustc 1.82.0-nightly (c1a6199e9 2024-07-24)\nbinary: rustc\ncommit-hash: c1a6199e9d92bb785c17a6d7ffd8b8b552f79c10\ncommit-date: 2024-07-24\nhost: x86_64-pc-windows-msvc\nrelease: 1.82.0-nightly\nLLVM version: 18.1.7\n","stderr":""}},"successes":{}} \ No newline at end of file