diff options
-rw-r--r-- | server/src/library.rs | 11 | ||||
-rw-r--r-- | tools/src/bin/import.rs | 18 |
2 files changed, 17 insertions, 12 deletions
diff --git a/server/src/library.rs b/server/src/library.rs index ea8b095..6e6e13d 100644 --- a/server/src/library.rs +++ b/server/src/library.rs @@ -7,7 +7,9 @@ use anyhow::{anyhow, bail, Context, Ok}; use jellycommon::{DirectoryInfo, ItemInfo}; use log::info; use std::{ + ffi::OsStr, fs::File, + os::unix::prelude::OsStrExt, path::{Path, PathBuf}, sync::Arc, }; @@ -107,12 +109,14 @@ impl Node { lib_path = lib_path.join(identifier.clone()); } + info!("scanning directory {:?}", path); let children = path .read_dir()? .filter_map(|e| { let e = e.unwrap(); - if (e.path().extension().is_none() || e.metadata().unwrap().is_dir()) - && !e.path().ends_with("directory.json") + eprintln!("{:?}", e.path()); + if e.path().extension() == Some(&OsStr::from_bytes(b"jelly")) + || e.metadata().unwrap().is_dir() { Some(e.path()) } else { @@ -140,11 +144,12 @@ impl Node { let datafile = File::open(path.clone()).context("cant load metadata")?; let data: ItemInfo = serde_json::from_reader(datafile).context("invalid metadata")?; let identifier = path - .with_extension("") .file_name() .unwrap() .to_str() .unwrap() + .strip_suffix(".jelly") + .unwrap() .to_string(); Ok(Some( Node::Item(Arc::new(Item { diff --git a/tools/src/bin/import.rs b/tools/src/bin/import.rs index 0249c70..2de488b 100644 --- a/tools/src/bin/import.rs +++ b/tools/src/bin/import.rs @@ -12,25 +12,25 @@ use std::{fs::File, io::Write, path::PathBuf}; #[derive(Parser)] struct Args { - #[clap(short = 'I', long)] + #[arg(short = 'I', long)] item: PathBuf, - #[clap(short, long)] + #[arg(short, long)] banner: Option<PathBuf>, - #[clap(short, long)] + #[arg(short, long)] title: Option<String>, - #[clap(short = 'D', long)] + #[arg(short = 'D', long)] description_head: Option<String>, - #[clap(short = 'd', long)] + #[arg(short = 'd', long)] description: Option<String>, - #[clap(short = 'N', long)] + #[arg(short = 'N', long)] dry: bool, - #[clap(short = 'i', long)] - input: Option<PathBuf>, + #[arg(short = 'i', long, num_args(0..))] + input: Vec<PathBuf>, } fn main() -> anyhow::Result<()> { @@ -69,7 +69,7 @@ fn main() -> anyhow::Result<()> { iteminfo.description_head = d; } - if let Some(input_path) = args.input { + for input_path in args.input { let input = File::open(input_path.clone()).unwrap(); let mut input = EbmlReader::new(input); import_read(&input_path, &mut input, &mut iteminfo)?; |