Skip to content

Commit

Permalink
move formatting functions into dedicated file
Browse files Browse the repository at this point in the history
  • Loading branch information
RatanRSur committed May 6, 2019
1 parent 8466cf3 commit 88611da
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 53 deletions.
48 changes: 48 additions & 0 deletions src/formatting.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
use ansi_term::Style;
use std::collections::HashMap;
use strfmt::strfmt;

pub fn package_output(margin_width: usize, package_name: &str, urls: &Vec<String>) -> String {
let mut buf = String::new();
buf.push_str(&bold(left_pad_to_width(margin_width, package_name)));
for (i, url) in urls.iter().enumerate() {
if i != 0 {
buf.push_str(&left_pad_to_width(margin_width, ""));
}
buf.push(' ');
buf.push_str(url);
buf.push('\n');
}
buf
}

pub fn format_url(template: &str, old_version: &str, new_version: &str) -> String {
let format_args: HashMap<String, &str> = [
("version".to_string(), new_version),
("old_version".to_string(), old_version),
]
.iter()
.cloned()
.collect();

strfmt(template, &format_args).unwrap()
}

pub fn section_header(margin_width: usize, header: &str) -> String {
let mut buf = String::new();
buf.push_str(&left_pad_to_width(margin_width, ""));
buf.push(' ');
buf.push_str(header);
bold(buf)
}

fn left_pad_to_width(width: usize, str: &str) -> String {
let mut buf = String::new();
(0..(width - str.len())).for_each(|_| buf.push(' '));
buf.push_str(str);
buf
}

fn bold(str: String) -> String {
Style::new().bold().paint(str).to_string()
}
64 changes: 11 additions & 53 deletions src/main.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
use ansi_term::Style;
use clap::{App, Arg};
use lazy_static::lazy_static;
use std::collections::BTreeMap;
Expand All @@ -11,13 +10,14 @@ use std::fs::File;
use std::io::prelude::*;
use std::io::{self, BufReader};
use std::str::FromStr;
use strfmt::strfmt;

use std::process::Command;

use chrono::naive::NaiveDateTime;
use regex::Regex;

mod formatting;

#[derive(Debug)]
struct Upgrade {
timestamp: NaiveDateTime,
Expand Down Expand Up @@ -139,7 +139,7 @@ fn main() -> io::Result<()> {
let home_page_outputs: Vec<String> = home_page_group
.iter()
.map(|package| (&package.name, vec![package.home_page_url.clone()]))
.map(|(name, urls)| package_output(margin_width, &name, &urls))
.map(|(name, urls)| formatting::package_output(margin_width, &name, &urls))
.collect();
let template_outputs: Vec<String> = template_group
.iter()
Expand All @@ -149,7 +149,7 @@ fn main() -> io::Result<()> {
upgrades
.iter()
.map(|upgrade| {
format_url(
formatting::format_url(
project_urls::TEMPLATES.get(package.name.as_str()).unwrap(),
&upgrade.old_version,
&upgrade.new_version,
Expand All @@ -158,10 +158,10 @@ fn main() -> io::Result<()> {
.collect(),
)
})
.map(|(name, urls)| package_output(margin_width, &name, &urls))
.map(|(name, urls)| formatting::package_output(margin_width, &name, &urls))
.collect();
let mono_page_outputs = mono_page_group.iter().map(|(package, mono_page_url)| {
package_output(
formatting::package_output(
margin_width,
&package.name,
&vec![String::from(**mono_page_url)],
Expand All @@ -170,12 +170,15 @@ fn main() -> io::Result<()> {

if !home_page_group.is_empty() {
println!("");
println!("{}", section_header(margin_width, "Homepages"));
println!("{}", formatting::section_header(margin_width, "Homepages"));
home_page_outputs.iter().for_each(|s| print!("{}", s));
}
if !template_group.is_empty() {
println!("");
println!("{}", section_header(margin_width, "Release Notes"));
println!(
"{}",
formatting::section_header(margin_width, "Release Notes")
);
template_outputs.iter().for_each(|s| print!("{}", s));
}
if !mono_page_group.is_empty() {
Expand All @@ -194,51 +197,6 @@ fn main() -> io::Result<()> {
Ok(())
}

fn section_header(margin_width: usize, header: &str) -> String {
let mut buf = String::new();
buf.push_str(&left_pad_to_width(margin_width, ""));
buf.push(' ');
buf.push_str(header);
bold(buf)
}

fn package_output(margin_width: usize, package_name: &str, urls: &Vec<String>) -> String {
let mut buf = String::new();
buf.push_str(&bold(left_pad_to_width(margin_width, package_name)));
for (i, url) in urls.iter().enumerate() {
if i != 0 {
buf.push_str(&left_pad_to_width(margin_width, ""));
}
buf.push(' ');
buf.push_str(url);
buf.push('\n');
}
buf
}

fn left_pad_to_width(width: usize, str: &str) -> String {
let mut buf = String::new();
(0..(width - str.len())).for_each(|_| buf.push(' '));
buf.push_str(str);
buf
}

fn bold(str: String) -> String {
Style::new().bold().paint(str).to_string()
}

fn format_url(template: &str, old_version: &str, new_version: &str) -> String {
let format_args: HashMap<String, &str> = [
("version".to_string(), new_version),
("old_version".to_string(), old_version),
]
.iter()
.cloned()
.collect();

strfmt(template, &format_args).unwrap()
}

fn get_upgrades_by_name(
since_time: NaiveDateTime,
installed_packages_by_name: &HashMap<String, Package>,
Expand Down

0 comments on commit 88611da

Please sign in to comment.