From 890c488e0fe43b7ad49695c705d5f9c07f406b33 Mon Sep 17 00:00:00 2001 From: Anson Biggs Date: Sat, 24 Feb 2024 03:41:03 +0000 Subject: [PATCH] Use Fewer Posts for Building in Development --- src/main.rs | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/main.rs b/src/main.rs index 8950eca..be0d57f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,6 +11,7 @@ use maud::{html, Markup}; use reqwest::blocking::get; use scraper::{Html, Selector}; use std::cmp::Reverse; +use std::env; use std::error::Error; use std::fs; use std::fs::write; @@ -22,7 +23,7 @@ use rayon::prelude::*; fn fetch_feed(url: &str) -> Result, Box> { let content = get(url)?.text()?; let feed = parser::parse(content.as_bytes())?; - println!("Feed {} returned {} items", url, feed.entries.len()); + println!("\tFeed {} returned {} items", url, feed.entries.len()); Ok(feed.entries) } @@ -259,7 +260,17 @@ fn group_by_nth(slice: &[T], n: usize) -> Vec> { .collect() } -fn generate_index(entries: Vec) -> Markup { +fn generate_index(mut entries: Vec) -> Markup { + let running_in_gitlab = env::var("CI").map(|val| val == "true").unwrap_or(false); + + if running_in_gitlab { + println!("Building for deployment"); + entries.truncate(30); + } else { + println!("Building for development"); + entries.truncate(10); + } + html! { (maud::DOCTYPE) html { @@ -297,6 +308,7 @@ fn main() -> Result<(), Box> { let binding = fs::read_to_string("feeds.txt").unwrap(); let feed_urls: Vec<&str> = binding.lines().collect(); + println!("Fetching feeds:"); let raw_entries: Vec, String>> = feed_urls .into_par_iter() .map(|url| { @@ -304,7 +316,6 @@ fn main() -> Result<(), Box> { }) .collect(); - // Flatten the entries and filter out the errors let mut entries: Vec = Vec::new(); for entry in raw_entries { match entry { @@ -312,13 +323,12 @@ fn main() -> Result<(), Box> { Err(e) => println!("{}", e), } } + // Remove any entries that don't have a timestamp, and then sort by timestamps entries.retain(|entry| entry.published.is_some() || entry.updated.is_some()); entries .sort_by_key(|entry| Reverse(entry.published.unwrap_or(entry.updated.unwrap_or_default()))); - entries.truncate(30); - let html_string = generate_index(entries).into_string(); let output_path = Path::new("output/index.html");