Rename the injector and package it with an embedded payload for Windows, Linux, and macOS x64/ARM64. Add a core-only ImGui native build, multi-platform CI and release packaging, and shared per-user storage with legacy config migration.
47 lines
1.6 KiB
Rust
47 lines
1.6 KiB
Rust
//! Locates the remapped Prestige payload jar (built by `gradlew remapJar`) so lib.rs can embed it with include_bytes!.
|
|
use std::env;
|
|
use std::fs;
|
|
use std::path::PathBuf;
|
|
|
|
fn main() {
|
|
println!("cargo:rerun-if-env-changed=PRESTIGE_PAYLOAD");
|
|
let jar = match env::var("PRESTIGE_PAYLOAD") {
|
|
Ok(p) => PathBuf::from(p),
|
|
Err(_) => newest_remapped_jar(),
|
|
};
|
|
if !jar.is_file() {
|
|
panic!(
|
|
"payload jar not found: {} (run `gradlew remapJar` or set PRESTIGE_PAYLOAD)",
|
|
jar.display()
|
|
);
|
|
}
|
|
println!("cargo:rerun-if-changed={}", jar.display());
|
|
println!("cargo:rustc-env=PRESTIGE_PAYLOAD_JAR={}", jar.display());
|
|
}
|
|
|
|
fn newest_remapped_jar() -> PathBuf {
|
|
let libs = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()).join("../../../build/libs");
|
|
let mut best: Option<(std::time::SystemTime, PathBuf)> = None;
|
|
if let Ok(entries) = fs::read_dir(&libs) {
|
|
for entry in entries.flatten() {
|
|
let name = entry.file_name().to_string_lossy().to_string();
|
|
if !name.starts_with("prestige-")
|
|
|| !name.ends_with(".jar")
|
|
|| name.ends_with("-dev.jar")
|
|
|| name.ends_with("-sources.jar")
|
|
{
|
|
continue;
|
|
}
|
|
let time = entry
|
|
.metadata()
|
|
.and_then(|m| m.modified())
|
|
.unwrap_or(std::time::UNIX_EPOCH);
|
|
if best.as_ref().map_or(true, |(t, _)| time > *t) {
|
|
best = Some((time, entry.path()));
|
|
}
|
|
}
|
|
}
|
|
best.map(|(_, p)| p)
|
|
.unwrap_or_else(|| libs.join("prestige-0.1.0.jar"))
|
|
}
|