mirror of
https://gitlab.com/Anson-Projects/anson-stuff/zinetest.git
synced 2025-06-15 13:36:39 +00:00
Use Fewer Posts for Building in Development
This commit is contained in:
parent
a46030a251
commit
890c488e0f
20
src/main.rs
20
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<Vec<Entry>, Box<dyn Error>> {
|
||||
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<T: Clone>(slice: &[T], n: usize) -> Vec<Vec<T>> {
|
||||
.collect()
|
||||
}
|
||||
|
||||
fn generate_index(entries: Vec<Entry>) -> Markup {
|
||||
fn generate_index(mut entries: Vec<Entry>) -> 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<dyn Error>> {
|
||||
let binding = fs::read_to_string("feeds.txt").unwrap();
|
||||
let feed_urls: Vec<&str> = binding.lines().collect();
|
||||
|
||||
println!("Fetching feeds:");
|
||||
let raw_entries: Vec<Result<Vec<Entry>, String>> = feed_urls
|
||||
.into_par_iter()
|
||||
.map(|url| {
|
||||
@ -304,7 +316,6 @@ fn main() -> Result<(), Box<dyn Error>> {
|
||||
})
|
||||
.collect();
|
||||
|
||||
// Flatten the entries and filter out the errors
|
||||
let mut entries: Vec<Entry> = Vec::new();
|
||||
for entry in raw_entries {
|
||||
match entry {
|
||||
@ -312,13 +323,12 @@ fn main() -> Result<(), Box<dyn Error>> {
|
||||
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");
|
||||
|
Loading…
x
Reference in New Issue
Block a user