commit d4011b827873d1617a22bb1f8679545f1dca423d from: witcher date: Sat Apr 22 16:59:31 2023 UTC split commandline args into module commit - 8c9adc2511caca816c705ced15a289ebcca7eeb5 commit + d4011b827873d1617a22bb1f8679545f1dca423d blob - f8b440c832f920be1b56be73d129c3e56e1a9f7a blob + de1b6cfabb8c4af8fc8158360af06a00dc8bad46 --- src/main.rs +++ src/main.rs @@ -2,60 +2,15 @@ // // SPDX-License-Identifier: GPL-3.0-only -use clap::{Parser, Subcommand}; +mod args; + +use args::Operation; +use clap::Parser; use raur::Raur; -#[derive(Debug, Clone, Parser)] -#[command(author, version, about)] -struct Arguments { - #[command(subcommand)] - command: Commands, -} - -#[derive(Debug, Clone, PartialEq, Subcommand)] -enum Commands { - /// Show packages flagged out-of-date. - Flagged, - /// Show packages without a maintainer. - Orphaned, -} - -trait Operation { - fn filter(&self, p: &raur::Package) -> bool; - fn format(&self, p: &raur::Package) -> String; -} - -impl Operation for Commands { - fn filter(&self, p: &raur::Package) -> bool { - match self { - Self::Flagged => p.out_of_date.is_some(), - Self::Orphaned => p.maintainer.is_none(), - } - } - - fn format(&self, p: &raur::Package) -> String { - match self { - Self::Flagged => { - if let Some(d) = p.out_of_date { - if let Some(date) = chrono::naive::NaiveDateTime::from_timestamp_opt(d, 0) { - let d = date.format("%Y-%m-%d").to_string(); - format!("{}: {}", p.name, d) - } else { - eprintln!("Invalid UNIX timestamp: {}", d); - format!("{}: {}", p.name, d) - } - } else { - p.name.to_string() - } - } - Self::Orphaned => p.name.clone(), - } - } -} - #[tokio::main] async fn main() -> anyhow::Result<()> { - let args = Arguments::parse(); + let args = args::Arguments::parse(); let pacmanconf = pacmanconf::Config::new()?; let mut alpm = alpm::Alpm::new(pacmanconf.root_dir.as_str(), pacmanconf.db_path.as_str())?; blob - /dev/null blob + 9eb0ac820396ee8e15bbc0c9d6b98f38571417d4 (mode 644) --- /dev/null +++ src/args.rs @@ -0,0 +1,53 @@ +// SPDX-FileCopyrightText: 2023 witcher +// +// SPDX-License-Identifier: GPL-3.0-only + +use clap::{Parser, Subcommand}; + +pub trait Operation { + fn filter(&self, p: &raur::Package) -> bool; + fn format(&self, p: &raur::Package) -> String; +} + +#[derive(Debug, Clone, Parser)] +#[command(author, version, about)] +pub struct Arguments { + #[command(subcommand)] + pub command: Commands, +} + +#[derive(Debug, Clone, PartialEq, Subcommand)] +pub enum Commands { + /// Show packages flagged out-of-date. + Flagged, + /// Show packages without a maintainer. + Orphaned, +} + +impl Operation for Commands { + fn filter(&self, p: &raur::Package) -> bool { + match self { + Self::Flagged => p.out_of_date.is_some(), + Self::Orphaned => p.maintainer.is_none(), + } + } + + fn format(&self, p: &raur::Package) -> String { + match self { + Self::Flagged => { + if let Some(d) = p.out_of_date { + if let Some(date) = chrono::naive::NaiveDateTime::from_timestamp_opt(d, 0) { + let d = date.format("%Y-%m-%d").to_string(); + format!("{}: {}", p.name, d) + } else { + eprintln!("Invalid UNIX timestamp: {}", d); + format!("{}: {}", p.name, d) + } + } else { + p.name.to_string() + } + } + Self::Orphaned => p.name.clone(), + } + } +}