diff --git a/src/main.rs b/src/main.rs index 7f1bc9a..9a1cb9d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,18 +3,41 @@ mod loaders; use crate::loaders::sources::{load_sources, save_sources_to_toml}; use crate::loaders::packages::{get_installed_packages, save_packages_to_toml}; +use clap::Parser; + +#[derive(Parser)] +struct Cli { + #[arg(long, required = true)] + main_option: String, +} fn main() -> Result<(), Box> { - // Sources + let cli = Cli::parse(); + + let user_option = cli.main_option; + + match user_option.as_str() { + "load" => sources_fn()?, + "sync" => packages_sync_fn()?, + _ => println!("Invalid option"), + } + Ok(()) +} + +fn sources_fn() -> Result<(), Box>{ + // Sources let sources = load_sources("/etc/apt/sources.list")?; save_sources_to_toml(&sources, "sources.toml")?; println!("Saved sources to sources.toml"); - // Packages + Ok(()) +} + +fn packages_sync_fn() -> Result<(), Box> { + // Packages let packages = get_installed_packages()?; save_packages_to_toml(&packages, "packages.toml")?; println!("Saved packages to packages.toml"); Ok(()) } -