aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--server/src/library.rs11
-rw-r--r--tools/src/bin/import.rs18
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)?;