aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src-tauri
diff options
context:
space:
mode:
Diffstat (limited to 'src-tauri')
-rw-r--r--src-tauri/Cargo.toml1
-rw-r--r--src-tauri/build.rs7
-rw-r--r--src-tauri/src/core/modpack.rs11
3 files changed, 13 insertions, 6 deletions
diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
index b375c6e..ccec463 100644
--- a/src-tauri/Cargo.toml
+++ b/src-tauri/Cargo.toml
@@ -52,6 +52,7 @@ ctor = "0.6.3"
inventory = "0.3.21"
[build-dependencies]
+dotenvy = { version = "0.15", default-features = false }
tauri-build = { version = "2.0", features = [] }
[target.'cfg(all(windows, target_env = "gnu"))'.build-dependencies]
diff --git a/src-tauri/build.rs b/src-tauri/build.rs
index 63f98e2..00f5755 100644
--- a/src-tauri/build.rs
+++ b/src-tauri/build.rs
@@ -1,4 +1,11 @@
fn main() {
+ // Load .env file if present so optional build-time vars (e.g. CURSEFORGE_API_KEY)
+ // are available to option_env!() without requiring CI to have a real .env file.
+ if let Ok(path) = dotenvy::dotenv() {
+ println!("cargo:rerun-if-changed={}", path.display());
+ }
+ println!("cargo:rerun-if-env-changed=CURSEFORGE_API_KEY");
+
// For MinGW targets, use embed-resource to generate proper COFF format
#[cfg(all(windows, target_env = "gnu"))]
{
diff --git a/src-tauri/src/core/modpack.rs b/src-tauri/src/core/modpack.rs
index 2998167..97d2fa1 100644
--- a/src-tauri/src/core/modpack.rs
+++ b/src-tauri/src/core/modpack.rs
@@ -294,6 +294,8 @@ fn parse_multimc(archive: &mut Archive) -> Result<ParsedModpack, String> {
// ── CurseForge API resolution ─────────────────────────────────────────────
+const CURSEFORGE_API_KEY: Option<&str> = option_env!("CURSEFORGE_API_KEY");
+
async fn resolve_curseforge_files(files: &[ModpackFile]) -> Result<Vec<ModpackFile>, String> {
let file_ids: Vec<u64> = files
.iter()
@@ -366,12 +368,9 @@ async fn cf_post(
endpoint: &str,
body: &serde_json::Value,
) -> Result<serde_json::Value, String> {
- let api_key = std::env::var("CURSEFORGE_API_KEY")
- .map_err(|_| "CURSEFORGE_API_KEY is not set".to_string())?;
- if api_key.trim().is_empty() {
- return Err("CURSEFORGE_API_KEY is empty".to_string());
- }
-
+ let api_key = CURSEFORGE_API_KEY
+ .ok_or("CurseForge modpack support requires CURSEFORGE_API_KEY set at build time")?;
+
let resp = client
.post(format!("https://api.curseforge.com{endpoint}"))
.header("x-api-key", api_key)