diff --git a/.gitignore b/.gitignore index 7df6c31c6..572cd9667 100644 --- a/.gitignore +++ b/.gitignore @@ -70,7 +70,6 @@ TODO.md # Tauri output /bundle.json /config.json -/src-tauri # rust compiled folders target diff --git a/tooling/cli.rs/Cargo.toml b/tooling/cli.rs/Cargo.toml index 20498a136..f7635258c 100644 --- a/tooling/cli.rs/Cargo.toml +++ b/tooling/cli.rs/Cargo.toml @@ -6,6 +6,7 @@ version = "1.0.0-beta-rc.0" authors = [ "Lucas Nogueira " ] edition = "2018" license = "Apache-2.0 OR MIT" +include = ["src/", "/templates", "MergeModules/", "*.json", "*.rs"] [[bin]] name = "cargo-tauri" diff --git a/tooling/cli.rs/src/MergeModules/Microsoft_VC142_CRT_x64.msm b/tooling/cli.rs/MergeModules/Microsoft_VC142_CRT_x64.msm similarity index 100% rename from tooling/cli.rs/src/MergeModules/Microsoft_VC142_CRT_x64.msm rename to tooling/cli.rs/MergeModules/Microsoft_VC142_CRT_x64.msm diff --git a/tooling/cli.rs/src/MergeModules/Microsoft_VC142_CRT_x86.msm b/tooling/cli.rs/MergeModules/Microsoft_VC142_CRT_x86.msm similarity index 100% rename from tooling/cli.rs/src/MergeModules/Microsoft_VC142_CRT_x86.msm rename to tooling/cli.rs/MergeModules/Microsoft_VC142_CRT_x86.msm diff --git a/tooling/cli.rs/metadata.json b/tooling/cli.rs/metadata.json new file mode 100644 index 000000000..18dd38552 --- /dev/null +++ b/tooling/cli.rs/metadata.json @@ -0,0 +1,8 @@ +{ + "cli.js": { + "version": "1.0.0-beta-rc.0", + "node": ">= 10.17.0" + }, + "tauri": "1.0.0-beta-rc.0", + "tauri-build": "1.0.0-beta-rc.0" +} diff --git a/tooling/cli.rs/src/build.rs b/tooling/cli.rs/src/build.rs index 808ae61d6..d57dcebd6 100644 --- a/tooling/cli.rs/src/build.rs +++ b/tooling/cli.rs/src/build.rs @@ -116,13 +116,13 @@ impl Build { let _ = std::fs::remove_file(out_dir.join("Microsoft_VC142_CRT_x64.msm")); ( "Microsoft_VC142_CRT_x86.msm", - include_bytes!("./MergeModules/Microsoft_VC142_CRT_x86.msm").to_vec(), + include_bytes!("../MergeModules/Microsoft_VC142_CRT_x86.msm").to_vec(), ) } else { let _ = std::fs::remove_file(out_dir.join("Microsoft_VC142_CRT_x86.msm")); ( "Microsoft_VC142_CRT_x64.msm", - include_bytes!("./MergeModules/Microsoft_VC142_CRT_x64.msm").to_vec(), + include_bytes!("../MergeModules/Microsoft_VC142_CRT_x64.msm").to_vec(), ) }; std::fs::write(out_dir.join(filename), vcruntime_msm)?; diff --git a/tooling/cli.rs/src/info.rs b/tooling/cli.rs/src/info.rs index 7fcdd1b73..7813e9797 100644 --- a/tooling/cli.rs/src/info.rs +++ b/tooling/cli.rs/src/info.rs @@ -16,17 +16,6 @@ use std::{ process::Command, }; -#[derive(Deserialize)] -struct PackageJsonEngines { - node: String, -} - -#[derive(Deserialize)] -struct PackageJson { - version: String, - engines: PackageJsonEngines, -} - #[derive(Deserialize)] struct YarnVersionInfo { data: Vec, @@ -43,6 +32,17 @@ struct CargoLock { package: Vec, } +#[derive(Deserialize)] +struct JsCliVersionMetadata { + version: String, + node: String, +} + +#[derive(Deserialize)] +struct VersionMetadata { + js_cli: JsCliVersionMetadata, +} + #[derive(Clone, Deserialize)] struct CargoManifestDependencyPackage { version: Option, @@ -279,16 +279,15 @@ impl Info { if let Some(node_version) = get_version("node", &[]).unwrap_or_default() { InfoBlock::new("Node.js environment").section().display(); - let cli_package_json: PackageJson = - serde_json::from_str(include_str!("../../cli.js/package.json"))?; + let metadata = serde_json::from_str::(include_str!("../metadata.json"))?; VersionBlock::new( " Node.js", node_version.chars().skip(1).collect::(), ) - .target_version(cli_package_json.engines.node.replace(">= ", "")) + .target_version(metadata.js_cli.node.replace(">= ", "")) .display(); - VersionBlock::new(" @tauri-apps/cli", cli_package_json.version) + VersionBlock::new(" @tauri-apps/cli", metadata.js_cli.version) .target_version(npm_latest_version(use_yarn, "@tauri-apps/cli").unwrap_or_default()) .display(); if let Some(app_dir) = &app_dir { diff --git a/tooling/cli.rs/src/init.rs b/tooling/cli.rs/src/init.rs index a8b73ad53..86fa63d71 100644 --- a/tooling/cli.rs/src/init.rs +++ b/tooling/cli.rs/src/init.rs @@ -14,16 +14,13 @@ use handlebars::{to_json, Handlebars}; use include_dir::{include_dir, Dir}; use serde::Deserialize; -const TEMPLATE_DIR: Dir = include_dir!("./templates"); +const TEMPLATE_DIR: Dir = include_dir!("templates"); #[derive(Deserialize)] -struct ManifestPackage { - version: String, -} - -#[derive(Deserialize)] -struct Manifest { - package: ManifestPackage, +struct VersionMetadata { + tauri: String, + #[serde(rename = "tauri-build")] + tauri_build: String, } pub struct Init { @@ -93,6 +90,7 @@ impl Init { pub fn run(self) -> crate::Result<()> { let logger = Logger::new("tauri:init"); let template_target_path = self.directory.join("src-tauri"); + let metadata = serde_json::from_str::(include_str!("../metadata.json"))?; if template_target_path.exists() && !self.force { logger.warn(format!( "Tauri dir ({:?}) not empty. Run `init --force template` to overwrite.", @@ -111,16 +109,9 @@ impl Init { ), ) } else { - let tauri_manifest: Manifest = - toml::from_str(include_str!("../../../core/tauri/Cargo.toml")).unwrap(); - let tauri_build_manifest: Manifest = - toml::from_str(include_str!("../../../core/tauri-build/Cargo.toml")).unwrap(); ( - format!(r#"{{ version = "{}" }}"#, tauri_manifest.package.version), - format!( - r#"{{ version = "{}" }}"#, - tauri_build_manifest.package.version - ), + format!(r#"{{ version = "{}" }}"#, metadata.tauri), + format!(r#"{{ version = "{}" }}"#, metadata.tauri_build), ) }; @@ -166,7 +157,13 @@ fn render_template>( ) -> crate::Result<()> { create_dir_all(out_dir.as_ref().join(dir.path()))?; for file in dir.files() { - let mut output_file = File::create(out_dir.as_ref().join(file.path()))?; + let mut file_path = file.path().to_path_buf(); + // cargo for some reason ignores the /templates folder packaging when it has a Cargo.toml file inside + // so we rename the extension to `.crate-manifest` + if file_path.extension().unwrap() == "crate-manifest" { + file_path.set_extension("toml"); + } + let mut output_file = File::create(out_dir.as_ref().join(file_path))?; if let Some(utf8) = file.contents_utf8() { handlebars .render_template_to_write(utf8, &data, &mut output_file) diff --git a/tooling/cli.rs/templates/src-tauri/.gitignore b/tooling/cli.rs/templates/src-tauri/.gitignore index 270a92d27..c12370459 100755 --- a/tooling/cli.rs/templates/src-tauri/.gitignore +++ b/tooling/cli.rs/templates/src-tauri/.gitignore @@ -2,9 +2,3 @@ # will have compiled files and executables /target/ WixTools - -# These are backup files generated by rustfmt -**/*.rs.bk - -config.json -bundle.json diff --git a/tooling/cli.rs/templates/src-tauri/Cargo.toml b/tooling/cli.rs/templates/src-tauri/Cargo.crate-manifest similarity index 100% rename from tooling/cli.rs/templates/src-tauri/Cargo.toml rename to tooling/cli.rs/templates/src-tauri/Cargo.crate-manifest