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.
This commit is contained in:
36
build.rs
Normal file
36
build.rs
Normal file
@@ -0,0 +1,36 @@
|
||||
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()
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user