summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock33
-rw-r--r--Cargo.toml8
-rw-r--r--build.rs20
-rw-r--r--gen/Cargo.toml13
-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
diff --git a/Cargo.lock b/Cargo.lock
index 0026df6..8c8e15a 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -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"
diff --git a/Cargo.toml b/Cargo.toml
index 4eba850..9a957ec 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -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"
diff --git a/build.rs b/build.rs
index d5c1444..39fcf05 100644
--- a/build.rs
+++ b/build.rs
@@ -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.rs b/gen/src/lib.rs
index 3bd2719..3bd2719 100644
--- a/gen.rs
+++ b/gen/src/lib.rs
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