aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--readme.md2
-rw-r--r--src/main.rs26
2 files changed, 18 insertions, 10 deletions
diff --git a/readme.md b/readme.md
index 9aa43e5..2a71b3d 100644
--- a/readme.md
+++ b/readme.md
@@ -19,6 +19,8 @@ pages.
- Get help: `staticwiki --help`
- Convert to squashfs:
`staticwiki --bzip2 --tar < dump.xml.bz2 | mksquashfs - wiki.sfs -tar -comp zstd`
+ (note: the `-tar` option prevent mksquashfs from compressing in parallel for
+ some reason. no known fix except for writing to disk)
## License
diff --git a/src/main.rs b/src/main.rs
index e8c0375..34b00bb 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -43,10 +43,6 @@ fn main() {
for (i, result) in parse_mediawiki_dump::parse(input).enumerate() {
match result {
- Err(error) => {
- eprintln!("xml format error: {}", error);
- break;
- }
Ok(page) => {
if page.namespace == 0
&& match &page.format {
@@ -81,17 +77,27 @@ fn main() {
let mut header = Header::new_gnu();
header.set_size(html.as_bytes().len() as u64);
header.set_cksum();
- archive
- .append_data(&mut header, filename, html.as_bytes())
- .unwrap();
+ if let Err(e) = archive.append_data(&mut header, filename, html.as_bytes())
+ {
+ eprintln!("could not append to archive: {e}")
+ }
} else {
- let mut f = File::create(format!("out/{}", filename)).unwrap();
- f.write_all(html.as_bytes()).unwrap()
+ match File::create(format!("out/{}", filename)) {
+ Ok(mut f) => f.write_all(html.as_bytes()).unwrap(),
+ Err(e) => eprintln!("could not create file: {e}"),
+ }
}
- } else {
+ } else if args.verbose {
eprintln!("page ignored: {:?}", page.title);
}
}
+ Err(error) => {
+ eprintln!("xml format error: {}", error);
+ break;
+ }
+ }
+ if i % 10000 == 0 {
+ eprintln!("{i}")
}
if Some(i) == args.limit {
break;