generate index files with given filename, disable by default

This commit is contained in:
yggverse 2025-02-12 19:53:21 +02:00
parent dbd9fa3960
commit dd91aa054d
3 changed files with 27 additions and 25 deletions

View file

@ -3,9 +3,9 @@ use clap::Parser;
#[derive(Parser, Debug)]
#[command(version, about, long_about = None)]
pub struct Argument {
/// Generate index files (`index.gmi` by default, empty to disable)
#[arg(short, long, default_value_t = String::from("index.gmi"))]
pub index: String,
/// Generate index files with given filename (disabled by default)
#[arg(short, long)]
pub index: Option<String>,
/// Limit channel items (unlimited by default)
#[arg(short, long, default_value_t = 0)]

View file

@ -94,36 +94,38 @@ fn crawl(argument: &Argument, output: &Output) -> Result<(), Box<dyn Error>> {
File::create(destination.item())?.write_all(data.join("\n\n").as_bytes())?;
if !argument.index.is_empty() {
index.insert(destination.path); // request index file update
if !argument.index.is_none() {
index.insert(destination.path); // request index file update in this location
}
}
// renew pending index files on items crawl completed
for path in index {
let subject = format!("{path}{}", argument.index);
if let Some(ref index_argument) = argument.index {
for path in index {
let subject = format!("{path}{index_argument}");
let mut index = File::create(&subject)?;
let mut data = Vec::with_capacity(argument.limit);
let mut index = File::create(&subject)?;
let mut data = Vec::with_capacity(argument.limit);
let mut total = 0;
for file in read_dir(&path)? {
let name = file?.file_name().into_string().unwrap();
let mut total = 0;
for file in read_dir(&path)? {
let name = file?.file_name().into_string().unwrap();
if name == argument.index {
continue;
if &name == index_argument {
continue;
}
let mut buffer = String::from("##"); // correct heading levels
File::open(format!("{path}{name}"))?.read_to_string(&mut buffer)?;
data.push(buffer);
total += 1;
}
let mut buffer = String::from("##"); // correct heading levels
File::open(format!("{path}{name}"))?.read_to_string(&mut buffer)?;
data.push(buffer);
index.write_all(data.join("\n\n").as_bytes())?;
total += 1;
output.debug(&format!("renew `{subject}` (total: {total})"));
}
index.write_all(data.join("\n\n").as_bytes())?;
output.debug(&format!("renew `{subject}` (total: {total})"));
}
// print totals