mirror of
https://github.com/tauri-apps/tauri.git
synced 2024-12-15 13:41:39 +03:00
Fix/hook env vars (#5452)
Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
This commit is contained in:
parent
e00b1e5f94
commit
5b1e99f264
@ -14,8 +14,7 @@ use crate::{
|
||||
};
|
||||
use anyhow::{bail, Context};
|
||||
use clap::{ArgAction, Parser};
|
||||
use log::warn;
|
||||
use log::{error, info};
|
||||
use log::{debug, error, info, warn};
|
||||
use std::{
|
||||
env::{set_current_dir, var_os},
|
||||
path::{Path, PathBuf},
|
||||
@ -112,8 +111,17 @@ pub fn command(mut options: Options) -> Result<()> {
|
||||
std::process::exit(1);
|
||||
}
|
||||
|
||||
let mut interface = AppInterface::new(config_, options.target.clone())?;
|
||||
let app_settings = interface.app_settings();
|
||||
let interface_options = options.clone().into();
|
||||
|
||||
if let Some(before_build) = config_.build.before_build_command.clone() {
|
||||
run_hook("beforeBuildCommand", before_build, options.debug)?;
|
||||
run_hook(
|
||||
"beforeBuildCommand",
|
||||
before_build,
|
||||
&interface,
|
||||
options.debug,
|
||||
)?;
|
||||
}
|
||||
|
||||
if let AppUrl::Url(WindowUrl::App(web_asset_path)) = &config_.build.dist_dir {
|
||||
@ -154,10 +162,6 @@ pub fn command(mut options: Options) -> Result<()> {
|
||||
list.extend(config_.build.features.clone().unwrap_or_default());
|
||||
}
|
||||
|
||||
let mut interface = AppInterface::new(config_, options.target.clone())?;
|
||||
let app_settings = interface.app_settings();
|
||||
let interface_options = options.clone().into();
|
||||
|
||||
let bin_path = app_settings.app_binary_path(&interface_options)?;
|
||||
let out_dir = bin_path.parent().unwrap();
|
||||
|
||||
@ -206,7 +210,12 @@ pub fn command(mut options: Options) -> Result<()> {
|
||||
// if we have a package to bundle, let's run the `before_bundle_command`.
|
||||
if package_types.as_ref().map_or(true, |p| !p.is_empty()) {
|
||||
if let Some(before_bundle) = config_.build.before_bundle_command.clone() {
|
||||
run_hook("beforeBundleCommand", before_bundle, options.debug)?;
|
||||
run_hook(
|
||||
"beforeBundleCommand",
|
||||
before_bundle,
|
||||
&interface,
|
||||
options.debug,
|
||||
)?;
|
||||
}
|
||||
}
|
||||
|
||||
@ -309,7 +318,7 @@ pub fn command(mut options: Options) -> Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn run_hook(name: &str, hook: HookCommand, debug: bool) -> Result<()> {
|
||||
fn run_hook(name: &str, hook: HookCommand, interface: &AppInterface, debug: bool) -> Result<()> {
|
||||
let (script, script_cwd) = match hook {
|
||||
HookCommand::Script(s) if s.is_empty() => (None, None),
|
||||
HookCommand::Script(s) => (Some(s), None),
|
||||
@ -318,13 +327,19 @@ fn run_hook(name: &str, hook: HookCommand, debug: bool) -> Result<()> {
|
||||
let cwd = script_cwd.unwrap_or_else(|| app_dir().clone());
|
||||
if let Some(script) = script {
|
||||
info!(action = "Running"; "{} `{}`", name, script);
|
||||
|
||||
let mut env = command_env(debug);
|
||||
env.extend(interface.env());
|
||||
|
||||
debug!("Setting environment for hook {:?}", env);
|
||||
|
||||
#[cfg(target_os = "windows")]
|
||||
let status = Command::new("cmd")
|
||||
.arg("/S")
|
||||
.arg("/C")
|
||||
.arg(&script)
|
||||
.current_dir(cwd)
|
||||
.envs(command_env(debug))
|
||||
.envs(env)
|
||||
.piped()
|
||||
.with_context(|| format!("failed to run `{}` with `cmd /C`", script))?;
|
||||
#[cfg(not(target_os = "windows"))]
|
||||
@ -332,7 +347,7 @@ fn run_hook(name: &str, hook: HookCommand, debug: bool) -> Result<()> {
|
||||
.arg("-c")
|
||||
.arg(&script)
|
||||
.current_dir(cwd)
|
||||
.envs(command_env(debug))
|
||||
.envs(env)
|
||||
.piped()
|
||||
.with_context(|| format!("failed to run `{}` with `sh -c`", script))?;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user