new file: Makefile
new file: TODO.md modified: src/config.rs modified: src/detect.rs modified: src/diagnose.rs new file: src/gui.rs modified: src/main.rs modified: src/service.rs modified: src/setup.rs modified: src/tray.rs new file: src/util.rs new file: umutray.desktop
This commit is contained in:
@@ -3,6 +3,38 @@ use anyhow::Result;
|
||||
use std::collections::HashMap;
|
||||
use std::path::{Path, PathBuf};
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct DetectHit {
|
||||
pub display: String,
|
||||
pub prefix: PathBuf,
|
||||
/// True if this launcher is already in config with this exact prefix.
|
||||
pub configured: bool,
|
||||
}
|
||||
|
||||
/// Scan default Wine prefix locations and return hits against known presets.
|
||||
pub fn scan_for_gui(config: &Config) -> Vec<DetectHit> {
|
||||
let roots: Vec<PathBuf> = default_roots().into_iter().filter(|r| r.is_dir()).collect();
|
||||
let prefixes = scan_prefixes(&roots);
|
||||
let mut hits = Vec::new();
|
||||
for preset in crate::config::presets() {
|
||||
for prefix in &prefixes {
|
||||
if prefix.join("drive_c").join(&preset.exe_path).exists() {
|
||||
let configured = config
|
||||
.find(&preset.name)
|
||||
.map(|l| l.prefix_dir == *prefix)
|
||||
.unwrap_or(false);
|
||||
hits.push(DetectHit {
|
||||
display: preset.display.clone(),
|
||||
prefix: prefix.clone(),
|
||||
configured,
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
hits
|
||||
}
|
||||
|
||||
const MAX_DEPTH: u32 = 3;
|
||||
|
||||
pub fn run(config: &Config, extra_dirs: &[PathBuf], apply: bool) -> Result<()> {
|
||||
|
||||
Reference in New Issue
Block a user