Files
driftwood/build.rs
lashman fa28955919 Implement Driftwood AppImage manager - Phases 1 and 2
Phase 1 - Application scaffolding:
- GTK4/libadwaita application window with AdwNavigationView
- GSettings-backed window state persistence
- GResource-compiled CSS and schema
- Library view with grid/list toggle, search, sorting, filtering
- Detail view with file info, desktop integration controls
- Preferences window with scan directories, theme, behavior settings
- CLI with list, scan, integrate, remove, clean, inspect commands
- AppImage discovery, metadata extraction, desktop integration
- Orphaned desktop entry detection and cleanup
- AppImage packaging script

Phase 2 - Intelligence layer:
- Database schema v2 with migration for status tracking columns
- FUSE detection engine (libfuse2/3, fusermount, /dev/fuse, AppImageLauncher)
- Wayland awareness engine (session type, toolkit detection, XWayland)
- Update info parsing from AppImage ELF sections (.upd_info)
- GitHub/GitLab Releases API integration for update checking
- Update download with progress tracking and atomic apply
- Launch wrapper with FUSE auto-detection and usage tracking
- Duplicate and multi-version detection with recommendations
- Dashboard with system health, library stats, disk usage
- Update check dialog (single and batch)
- Duplicate resolution dialog
- Status badges on library cards and detail view
- Extended CLI: status, check-updates, duplicates, launch commands

49 tests passing across all modules.
2026-02-26 23:04:27 +02:00

37 lines
999 B
Rust

use std::path::PathBuf;
use std::process::Command;
fn main() {
// Compile GResources
glib_build_tools::compile_resources(
&["data"],
"data/resources.gresource.xml",
"driftwood.gresource",
);
// Compile GSettings schema for development builds
let out_dir = PathBuf::from(std::env::var("OUT_DIR").unwrap());
let schema_dir = out_dir.join("gschemas");
std::fs::create_dir_all(&schema_dir).expect("Failed to create schema dir");
std::fs::copy(
"data/app.driftwood.Driftwood.gschema.xml",
schema_dir.join("app.driftwood.Driftwood.gschema.xml"),
)
.expect("Failed to copy schema");
let status = Command::new("glib-compile-schemas")
.arg(&schema_dir)
.status()
.expect("Failed to run glib-compile-schemas");
if !status.success() {
panic!("glib-compile-schemas failed");
}
println!(
"cargo::rustc-env=GSETTINGS_SCHEMA_DIR={}",
schema_dir.display()
);
}