Fix rpm-ostree compatibility and postinst script issues

- Add --version and --help flags for rpm-ostree compatibility
- Fix postinst script to handle 'triggered' argument properly
- Maintain subcommand interface while adding flag support
- Improve error messages and help text
This commit is contained in:
robojerk 2025-08-15 18:18:40 -07:00
parent 86b2c1b4ea
commit 5fe7b0a519
3 changed files with 125 additions and 25 deletions

View file

@ -18,23 +18,26 @@ async fn main() -> AptOstreeResult<()> {
let args: Vec<String> = env::args().collect();
if args.len() < 2 {
println!("Usage: {} <command> [options]", args[0]);
println!("Commands:");
println!(" search <query> - Search for packages");
println!(" list - List all packages");
println!(" installed - List installed packages");
println!(" info <package> - Show package information");
println!(" install <package> - Install package (atomic)");
println!(" remove <package> - Remove package (atomic)");
println!(" upgrade - Upgrade system (atomic)");
println!(" status - Show system status");
println!(" rollback - Rollback to previous deployment");
println!(" help - Show this help");
show_help(&args[0]);
return Ok(());
}
let command = &args[1];
// Handle rpm-ostree compatible flags first
match command.as_str() {
"--version" | "-V" => {
show_version();
return Ok(());
}
"--help" | "-h" => {
show_help(&args[0]);
return Ok(());
}
_ => {}
}
// Handle subcommands (rpm-ostree style)
match command.as_str() {
"search" => {
if args.len() < 3 {
@ -84,22 +87,14 @@ async fn main() -> AptOstreeResult<()> {
rollback_system().await?;
}
"help" => {
println!("apt-ostree - Debian/Ubuntu equivalent of rpm-ostree");
println!("");
println!("Commands:");
println!(" search <query> - Search for packages");
println!(" list - List all packages");
println!(" installed - List installed packages");
println!(" info <package> - Show package information");
println!(" install <package> - Install package (atomic)");
println!(" remove <package> - Remove package (atomic)");
println!(" upgrade - Upgrade system (atomic)");
println!(" status - Show system status");
println!(" rollback - Rollback to previous deployment");
println!(" help - Show this help");
show_help(&args[0]);
}
"version" => {
show_version();
}
_ => {
error!("Unknown command: {}", command);
println!("Try '{} --help' for more information.", args[0]);
return Err(AptOstreeError::InvalidArgument(format!("Unknown command: {}", command)));
}
}
@ -107,6 +102,43 @@ async fn main() -> AptOstreeResult<()> {
Ok(())
}
/// Show version information (rpm-ostree compatible)
fn show_version() {
println!("apt-ostree {}", env!("CARGO_PKG_VERSION"));
println!("Debian/Ubuntu equivalent of rpm-ostree");
println!("Copyright (C) 2025 Robojerk");
println!("License GPL-3.0-or-later: <https://www.gnu.org/licenses/gpl-3.0.html>");
}
/// Show help information (rpm-ostree compatible)
fn show_help(program_name: &str) {
println!("Usage: {} <command> [options]", program_name);
println!("");
println!("Commands:");
println!(" search <query> - Search for packages");
println!(" list - List all packages");
println!(" installed - List installed packages");
println!(" info <package> - Show package information");
println!(" install <package> - Install package (atomic)");
println!(" remove <package> - Remove package (atomic)");
println!(" upgrade - Upgrade system (atomic)");
println!(" status - Show system status");
println!(" rollback - Rollback to previous deployment");
println!(" help - Show this help");
println!(" version - Show version information");
println!("");
println!("Options:");
println!(" --version, -V - Show version information");
println!(" --help, -h - Show this help");
println!("");
println!("Examples:");
println!(" {} --version", program_name);
println!(" {} --help", program_name);
println!(" {} status", program_name);
println!(" {} info apt", program_name);
println!(" {} install vim", program_name);
}
async fn search_packages(query: &str) -> AptOstreeResult<()> {
info!("Searching for packages matching: {}", query);