Skip to content

Commit

Permalink
fix(codegen): read platform-specific config file (#3966)
Browse files Browse the repository at this point in the history
  • Loading branch information
lucasfernog committed Apr 25, 2022
1 parent 58b3f48 commit edf85bc
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 7 deletions.
5 changes: 5 additions & 0 deletions .changes/codegen-platform-config.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tauri-codegen": patch
---

Read platform-specific configuration files when generating code without the `TAURI_CONFIG` env var.
17 changes: 10 additions & 7 deletions core/tauri-codegen/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ pub enum CodegenConfigError {
#[error("unable to parse inline JSON TAURI_CONFIG env var: {0}")]
FormatInline(serde_json::Error),

#[error(transparent)]
Json(#[from] serde_json::Error),

#[error("{0}")]
ConfigError(#[from] ConfigError),
}
Expand All @@ -44,21 +47,21 @@ pub fn get_config(path: &Path) -> Result<(Config, PathBuf), CodegenConfigError>
Cow::Borrowed(path)
};

// this should be impossible because of the use of `current_dir()` above, but handle it anyways
let parent = path
.parent()
.map(ToOwned::to_owned)
.ok_or_else(|| CodegenConfigError::Parent(path.into_owned()))?;

// in the future we may want to find a way to not need the TAURI_CONFIG env var so that
// it is impossible for the content of two separate configs to get mixed up. The chances are
// already unlikely unless the developer goes out of their way to run the cli on a different
// project than the target crate.
let config = if let Ok(env) = std::env::var("TAURI_CONFIG") {
serde_json::from_str(&env).map_err(CodegenConfigError::FormatInline)?
} else {
tauri_utils::config::parse(path.to_path_buf())?
serde_json::from_value(tauri_utils::config::parse::read_from(parent.clone())?)?
};

// this should be impossible because of the use of `current_dir()` above, but handle it anyways
let parent = path
.parent()
.map(ToOwned::to_owned)
.ok_or_else(|| CodegenConfigError::Parent(path.into_owned()))?;

Ok((config, parent))
}

0 comments on commit edf85bc

Please sign in to comment.