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.
37 lines
999 B
Rust
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()
|
|
);
|
|
}
|