fix(cli.rs): crate packaging (#1481)

Co-authored-by: nothingismagick <denjell@mailscript.com>
This commit is contained in:
Lucas Fernandes Nogueira
2021-04-14 13:37:29 -03:00
committed by GitHub
parent 0ddcd7eed3
commit 5f3a12c557
10 changed files with 40 additions and 42 deletions

1
.gitignore vendored
View File

@@ -70,7 +70,6 @@ TODO.md
# Tauri output
/bundle.json
/config.json
/src-tauri
# rust compiled folders
target

View File

@@ -6,6 +6,7 @@ version = "1.0.0-beta-rc.0"
authors = [ "Lucas Nogueira <lucas@tauri.studio>" ]
edition = "2018"
license = "Apache-2.0 OR MIT"
include = ["src/", "/templates", "MergeModules/", "*.json", "*.rs"]
[[bin]]
name = "cargo-tauri"

View File

@@ -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"
}

View File

@@ -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)?;

View File

@@ -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<String>,
@@ -43,6 +32,17 @@ struct CargoLock {
package: Vec<CargoLockPackage>,
}
#[derive(Deserialize)]
struct JsCliVersionMetadata {
version: String,
node: String,
}
#[derive(Deserialize)]
struct VersionMetadata {
js_cli: JsCliVersionMetadata,
}
#[derive(Clone, Deserialize)]
struct CargoManifestDependencyPackage {
version: Option<String>,
@@ -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::<VersionMetadata>(include_str!("../metadata.json"))?;
VersionBlock::new(
" Node.js",
node_version.chars().skip(1).collect::<String>(),
)
.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 {

View File

@@ -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::<VersionMetadata>(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<P: AsRef<Path>>(
) -> 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)

View File

@@ -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