From 2de96a5486cc8c6c15ca73bb0937d96bf8d0a7e4 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Mon, 2 Mar 2020 11:28:40 +0530 Subject: [PATCH] WIP channel filter Signed-off-by: Harsh Shandilya --- src/channel.rs | 11 +++++++++++ src/main.rs | 19 +++++++++++++++---- src/parse.rs | 13 +++++-------- 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/src/channel.rs b/src/channel.rs index 185aa03..6c09e75 100644 --- a/src/channel.rs +++ b/src/channel.rs @@ -32,6 +32,17 @@ impl Channel { panic!("Failed to determine channel for {}", version) } } + + pub fn from_name(name: &str) -> Channel { + match name { + "stable" => Channel::Stable, + "dev" => Channel::Dev, + "alpha" => Channel::Alpha, + "beta" => Channel::Beta, + "rc" => Channel::RC, + _ => panic!("Failed to parse channel from '{}'", name), + } + } } impl Clone for Channel { diff --git a/src/main.rs b/src/main.rs index 92ab2d2..4a03099 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,12 +4,13 @@ extern crate log; extern crate roxmltree; extern crate ureq; -use clap::{crate_name, crate_version, App, Arg, ArgGroup}; -use log::{LevelFilter, Metadata, Record}; - mod channel; mod parse; +use crate::channel::Channel; +use clap::{crate_name, crate_version, App, Arg, ArgGroup}; +use log::{LevelFilter, Metadata, Record}; + /// Simple logger that simply outputs everything using println!() /// It prints all levels in debug builds, and nothing on release builds. struct StdOutLogger; @@ -44,6 +45,11 @@ fn main() { .short("a") .long("all") .takes_value(false), + Arg::with_name("channel") + .long("channel") + .takes_value(true) + .possible_values(&["stable", "alpha", "beta", "rc", "dev"]) + .default_value("stable"), Arg::with_name("condensed") .short("c") .long("condensed") @@ -61,7 +67,12 @@ fn main() { println!("No results found!"); } else if matches.is_present("condensed") || matches.is_present("all") { for package in packages.iter() { - println!("{:?}", package); + println!( + "{}", + package.get_condensed(Channel::from_name( + matches.value_of("channel").unwrap_or("stable") + )) + ); } } else { println!("{}", packages[0]); diff --git a/src/parse.rs b/src/parse.rs index d537b21..b8a5b59 100644 --- a/src/parse.rs +++ b/src/parse.rs @@ -1,7 +1,6 @@ use std::collections::HashMap; use std::convert::TryInto; use std::fmt; -use std::fmt::Debug; use std::fmt::Display; use std::fmt::Formatter; use std::result::Result; @@ -25,13 +24,11 @@ pub struct MavenPackage { latest_stable: Option, } -impl Debug for MavenPackage { - fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { - write!( - f, - "{}:{}:{}", - self.group_id, self.artifact_id, self.all_versions[0] - ) +impl MavenPackage { + pub(crate) fn get_condensed(&self, channel: Channel) -> String { + let mut result = String::new(); + result.push_str(&format!("{}:{}:", self.group_id, self.artifact_id)); + result } }