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:
parent
86b2c1b4ea
commit
5fe7b0a519
3 changed files with 125 additions and 25 deletions
82
src/main.rs
82
src/main.rs
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue