aboutsummaryrefslogtreecommitdiff
path: root/server/book-export/src
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-10-24 21:04:17 +0200
committermetamuffin <metamuffin@disroot.org>2025-10-24 21:04:17 +0200
commit269da6178e51f727a2b80a784e59981a13704df4 (patch)
tree0fd4a764530c706ebc32a2e59edc87c09a9e4fc3 /server/book-export/src
parente67d2d03f9e2d66a24a6b7561146af589e019891 (diff)
downloadhurrycurry-269da6178e51f727a2b80a784e59981a13704df4.tar
hurrycurry-269da6178e51f727a2b80a784e59981a13704df4.tar.bz2
hurrycurry-269da6178e51f727a2b80a784e59981a13704df4.tar.zst
book export file output option
Diffstat (limited to 'server/book-export/src')
-rw-r--r--server/book-export/src/main.rs19
1 files changed, 13 insertions, 6 deletions
diff --git a/server/book-export/src/main.rs b/server/book-export/src/main.rs
index b2731308..d89aa3d4 100644
--- a/server/book-export/src/main.rs
+++ b/server/book-export/src/main.rs
@@ -23,7 +23,7 @@ use anyhow::Result;
use clap::{Parser, ValueEnum};
use hurrycurry_data::{book::book, index::DataIndex};
use hurrycurry_locale::Locale;
-use std::path::PathBuf;
+use std::{fs::File, io::Write, path::PathBuf};
#[derive(Parser)]
struct Args {
@@ -35,6 +35,8 @@ struct Args {
format: ExportFormat,
#[arg(short, long, default_value = "5star")]
map: String,
+ #[arg(short, long)]
+ output: Option<PathBuf>,
}
#[derive(ValueEnum, Clone, Copy)]
@@ -52,15 +54,20 @@ fn main() -> Result<()> {
let book = book(&data, &serverdata)?;
- match args.format {
- ExportFormat::Json => {
- println!("{}", serde_json::to_string(&book).unwrap())
- }
+ let output = match args.format {
+ ExportFormat::Json => serde_json::to_string(&book).unwrap(),
ExportFormat::Html => {
let mut locale = Locale::load(&args.locale_dir.join(format!("{}.ini", args.locale)))?;
locale.merge(Locale::load(&args.locale_dir.join("en.ini"))?);
- println!("{}", render_html_book(&data, &book, &locale));
+ render_html_book(&data, &book, &locale)
}
+ };
+
+ if let Some(path) = args.output {
+ File::create(path)?.write_all(output.as_bytes())?;
+ } else {
+ println!("{output}")
}
+
Ok(())
}