diff options
| -rw-r--r-- | Cargo.lock | 33 | ||||
| -rw-r--r-- | Cargo.toml | 8 | ||||
| -rw-r--r-- | build.rs | 20 | ||||
| -rw-r--r-- | gen/Cargo.toml | 13 | ||||
| -rw-r--r-- | gen/src/constants.rs (renamed from gen/constants.rs) | 0 | ||||
| -rw-r--r-- | gen/src/env.rs (renamed from gen/env.rs) | 0 | ||||
| -rw-r--r-- | gen/src/gen_commands_file.rs (renamed from gen/gen_commands_file.rs) | 2 | ||||
| -rw-r--r-- | gen/src/gen_compile_info.rs (renamed from gen/gen_compile_info.rs) | 2 | ||||
| -rw-r--r-- | gen/src/gen_completions_entries.rs (renamed from gen/gen_completions_entries.rs) | 2 | ||||
| -rw-r--r-- | gen/src/gen_iscc_script.rs (renamed from gen/gen_iscc_script.rs) | 2 | ||||
| -rw-r--r-- | gen/src/gen_mod_files.rs (renamed from gen/gen_mod_files.rs) | 2 | ||||
| -rw-r--r-- | gen/src/gen_override_renderer.rs (renamed from gen/gen_override_renderer.rs) | 23 | ||||
| -rw-r--r-- | gen/src/gen_renderers_file.rs (renamed from gen/gen_renderers_file.rs) | 2 | ||||
| -rw-r--r-- | gen/src/gen_specific_renderer.rs (renamed from gen/gen_specific_renderer.rs) | 2 | ||||
| -rw-r--r-- | gen/src/lib.rs (renamed from gen.rs) | 0 | ||||
| -rw-r--r-- | gen/src/resolve_types.rs (renamed from gen/resolve_types.rs) | 0 |
16 files changed, 78 insertions, 33 deletions
@@ -1194,6 +1194,7 @@ dependencies = [ "framework", "hex_display", "jvlib", + "protocol", "serde", "sha1_hash", "sheet_system", @@ -1221,9 +1222,8 @@ dependencies = [ "just_enough_vcs", "just_fmt", "just_progress", - "just_template", + "jv_cli_gen", "log", - "regex", "render_system_macros", "ron", "rust-i18n", @@ -1254,14 +1254,26 @@ dependencies = [ [[package]] name = "just_template" -version = "0.1.0" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28f77e78b7de1bd14c242241bbd802efd1e4b7a3717ea5f2eb05aba5e069d8b9" +checksum = "db3edb658c34b10b69c4b3b58f7ba989cd09c82c0621dee1eef51843c2327225" dependencies = [ "just_fmt", ] [[package]] +name = "jv_cli_gen" +version = "0.1.0-dev" +dependencies = [ + "chrono", + "just_fmt", + "just_template", + "regex", + "tokio", + "toml 0.9.8", +] + +[[package]] name = "jvlib" version = "0.1.0" dependencies = [ @@ -1587,6 +1599,19 @@ dependencies = [ ] [[package]] +name = "protocol" +version = "0.1.0" +dependencies = [ + "framework", + "serde", + "sheet_system", + "thiserror", + "tokio", + "vault_system", + "workspace_system", +] + +[[package]] name = "quote" version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -7,6 +7,7 @@ homepage = "https://github.com/JustEnoughVCS/CommandLine/" [workspace] members = [ + "gen", "utils/", "tools/build_helper", "macros/cmd_system_macros", @@ -37,13 +38,8 @@ panic = "abort" strip = true [build-dependencies] -just_fmt = "0.1.2" - +jv_cli_gen = { path = "gen" } tokio = { version = "1", features = ["rt", "rt-multi-thread"] } -chrono = "0.4" -toml = "0.9" -regex = "1.12" -just_template = "0.1.0" [workspace.dependencies] proc-macro2 = "1.0" @@ -1,18 +1,16 @@ use std::env; use std::path::PathBuf; -use crate::r#gen::{ - gen_commands_file::generate_commands_file, - gen_compile_info::generate_compile_info, - gen_completions_entries::generate_completions_file, - gen_iscc_script::generate_installer_script, - gen_mod_files::generate_collect_files, - gen_override_renderer::{generate_override_renderer, generate_override_renderers_list}, - gen_renderers_file::generate_renderers_file, - gen_specific_renderer::generate_specific_renderer, +use jv_cli_gen::gen_commands_file::generate_commands_file; +use jv_cli_gen::gen_compile_info::generate_compile_info; +use jv_cli_gen::gen_completions_entries::generate_completions_file; +use jv_cli_gen::gen_iscc_script::generate_installer_script; +use jv_cli_gen::gen_mod_files::generate_collect_files; +use jv_cli_gen::gen_override_renderer::{ + generate_override_renderer, generate_override_renderers_list, }; - -pub mod r#gen; +use jv_cli_gen::gen_renderers_file::generate_renderers_file; +use jv_cli_gen::gen_specific_renderer::generate_specific_renderer; #[tokio::main] async fn main() { diff --git a/gen/Cargo.toml b/gen/Cargo.toml new file mode 100644 index 0000000..186082b --- /dev/null +++ b/gen/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "jv_cli_gen" +edition = "2024" +version.workspace = true + +[dependencies] +just_fmt = "0.1.2" + +tokio = { version = "1", features = ["rt", "rt-multi-thread"] } +chrono = "0.4" +toml = "0.9" +regex = "1.12" +just_template = "0.1.3" diff --git a/gen/constants.rs b/gen/src/constants.rs index 140743d..140743d 100644 --- a/gen/constants.rs +++ b/gen/src/constants.rs diff --git a/gen/env.rs b/gen/src/env.rs index c45830e..c45830e 100644 --- a/gen/env.rs +++ b/gen/src/env.rs diff --git a/gen/gen_commands_file.rs b/gen/src/gen_commands_file.rs index b68ac0a..c90e356 100644 --- a/gen/gen_commands_file.rs +++ b/gen/src/gen_commands_file.rs @@ -3,7 +3,7 @@ use std::path::PathBuf; use just_fmt::pascal_case; use just_template::{Template, tmpl, tmpl_param}; -use crate::r#gen::constants::{COMMAND_LIST, COMMAND_LIST_TEMPLATE, COMMANDS_PATH, REGISTRY_TOML}; +use crate::constants::{COMMAND_LIST, COMMAND_LIST_TEMPLATE, COMMANDS_PATH, REGISTRY_TOML}; /// Generate registry file from Registry.toml configuration using just_template pub async fn generate_commands_file(repo_root: &PathBuf) { diff --git a/gen/gen_compile_info.rs b/gen/src/gen_compile_info.rs index 8d68d89..02666ac 100644 --- a/gen/gen_compile_info.rs +++ b/gen/src/gen_compile_info.rs @@ -2,7 +2,7 @@ use std::path::PathBuf; use just_template::{Template, tmpl_param}; -use crate::r#gen::{ +use crate::{ constants::{COMPILE_INFO_RS, COMPILE_INFO_RS_TEMPLATE}, env::{get_git_branch, get_git_commit, get_platform, get_toolchain, get_version}, }; diff --git a/gen/gen_completions_entries.rs b/gen/src/gen_completions_entries.rs index 0e030e6..7f780b7 100644 --- a/gen/gen_completions_entries.rs +++ b/gen/src/gen_completions_entries.rs @@ -1,7 +1,7 @@ use just_template::{Template, tmpl}; use std::path::PathBuf; -use crate::r#gen::constants::{COMPLETIONS, COMPLETIONS_PATH, COMPLETIONS_TEMPLATE}; +use crate::constants::{COMPLETIONS, COMPLETIONS_PATH, COMPLETIONS_TEMPLATE}; /// Generate completions file from comp directory using just_template pub async fn generate_completions_file(repo_root: &PathBuf) { diff --git a/gen/gen_iscc_script.rs b/gen/src/gen_iscc_script.rs index 23328ab..eabaab3 100644 --- a/gen/gen_iscc_script.rs +++ b/gen/src/gen_iscc_script.rs @@ -2,7 +2,7 @@ use std::path::PathBuf; use just_template::{Template, tmpl_param}; -use crate::r#gen::{ +use crate::{ constants::{SETUP_JV_CLI_ISS, SETUP_JV_CLI_ISS_TEMPLATE}, env::{get_author, get_site, get_version}, }; diff --git a/gen/gen_mod_files.rs b/gen/src/gen_mod_files.rs index 6e44eac..d0b0800 100644 --- a/gen/gen_mod_files.rs +++ b/gen/src/gen_mod_files.rs @@ -1,6 +1,6 @@ use std::path::PathBuf; -use crate::r#gen::constants::REGISTRY_TOML; +use crate::constants::REGISTRY_TOML; /// Generate collect files from directory structure pub async fn generate_collect_files(repo_root: &PathBuf) { diff --git a/gen/gen_override_renderer.rs b/gen/src/gen_override_renderer.rs index 2a8ba37..63b3464 100644 --- a/gen/gen_override_renderer.rs +++ b/gen/src/gen_override_renderer.rs @@ -4,7 +4,7 @@ use just_template::{Template, tmpl}; use regex::Regex; use tokio::fs; -use crate::r#gen::{ +use crate::{ constants::{ COMMANDS_PATH, OVERRIDE_RENDERER_ENTRY, OVERRIDE_RENDERER_ENTRY_TEMPLATE, OVERRIDE_RENDERERS, OVERRIDE_RENDERERS_TEMPLATE, REGISTRY_TOML, @@ -169,6 +169,14 @@ pub fn get_output_types(code: &String) -> Option<Vec<String>> { output_types.push(type_name.to_string()); } + // Find all early_cmd_output! macros + let early_cmd_output_re = + Regex::new(r"early_cmd_output!\s*\(\s*([^,]+)\s*=>\s*[^)]+\s*\)").ok()?; + for cap in early_cmd_output_re.captures_iter(code) { + let type_name = cap[1].trim(); + output_types.push(type_name.to_string()); + } + Some(output_types) } @@ -194,10 +202,15 @@ mod tests { use other::cmds::output::JVCustomOutputOutside; async fn exec() -> Result<(), CmdExecuteError> { - cmd_output!(output, JVCustomOutput) - cmd_output!(output, JVCustomOutput2) - cmd_output!(output, JVCustomOutputNotExist) - cmd_output!(output, JVCustomOutputOutside) + early_cmd_output!(JVCustomOutput => output) + early_cmd_output!(JVCustomOutput2 => { + output + }) + cmd_output!(JVCustomOutputNotExist => output) + cmd_output!(JVCustomOutputOutside + => { + output + }) } "; diff --git a/gen/gen_renderers_file.rs b/gen/src/gen_renderers_file.rs index f16c504..7ac1853 100644 --- a/gen/gen_renderers_file.rs +++ b/gen/src/gen_renderers_file.rs @@ -2,7 +2,7 @@ use std::path::PathBuf; use just_template::{Template, tmpl}; -use crate::r#gen::constants::{ +use crate::constants::{ OVERRIDE_RENDERER_DISPATCHER, OVERRIDE_RENDERER_DISPATCHER_TEMPLATE, REGISTRY_TOML, }; diff --git a/gen/gen_specific_renderer.rs b/gen/src/gen_specific_renderer.rs index 95e6900..c68dcec 100644 --- a/gen/gen_specific_renderer.rs +++ b/gen/src/gen_specific_renderer.rs @@ -3,7 +3,7 @@ use std::{collections::HashMap, path::PathBuf}; use just_template::{Template, tmpl}; use regex::Regex; -use crate::r#gen::{ +use crate::{ constants::{RENDERERS_PATH, SPECIFIC_RENDERER_MATCHING, SPECIFIC_RENDERER_MATCHING_TEMPLATE}, resolve_types::resolve_type_paths, }; diff --git a/gen/resolve_types.rs b/gen/src/resolve_types.rs index 6079abc..6079abc 100644 --- a/gen/resolve_types.rs +++ b/gen/src/resolve_types.rs |
