From 703cf9c02bb106e638f7f682b27fa6c49a3e6dff Mon Sep 17 00:00:00 2001 From: Dorian Koch <doriank@fsmpi.rwth-aachen.de> Date: Thu, 26 Sep 2024 13:02:36 +0200 Subject: [PATCH] Make preset parameter optional --- src/main.rs | 14 +++++++++----- src/project.rs | 5 +++++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main.rs b/src/main.rs index a0b32e4..7f0611d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -22,7 +22,7 @@ struct Args { /// The preset of the lecture. Can be a toml file or a known course slug. #[clap(short, long)] - preset: String, + preset: Option<String>, #[cfg(feature = "mem_limit")] /// The memory limit for external tools like ffmpeg. @@ -55,14 +55,16 @@ fn main() { // process arguments let directory = args.directory.canonicalize_utf8().unwrap(); - let preset = Preset::find(&args.preset).unwrap(); - let course = preset.course; // let's see if we need to initialise the project let project_path = directory.join("project.toml"); let mut project = if project_path.exists() { toml::from_slice(&fs::read(&project_path).unwrap()).unwrap() } else { + assert!(args.preset.is_some()); + let preset = Preset::find(&args.preset.unwrap()).unwrap(); + let course = preset.course; + let dirname = directory.file_name().unwrap(); let date = parse_date(dirname).expect("Directory name is not in the expected format"); @@ -112,6 +114,8 @@ fn main() { stereo: args.stereo, start: None, end: None, + transcode_lowest: args.transcode.or(preset.transcode), + transcode_highest: args.transcode_start.unwrap_or(preset.transcode_start), fast: Vec::new(), questions: Vec::new(), metadata: None @@ -214,10 +218,10 @@ fn main() { }); // rescale the video - if let Some(lowest_res) = args.transcode.or(preset.transcode) { + if let Some(lowest_res) = project.source.transcode_lowest { for res in Resolution::STANDARD_RESOLUTIONS.into_iter().rev() { if res > project.source.metadata.as_ref().unwrap().source_res - || res > args.transcode_start.unwrap_or(preset.transcode_start) + || res > project.source.transcode_highest || res < lowest_res { continue; diff --git a/src/project.rs b/src/project.rs index 93d7a45..5e182e1 100644 --- a/src/project.rs +++ b/src/project.rs @@ -150,6 +150,11 @@ pub struct ProjectSource { #[serde_as(as = "Option<DisplayFromStr>")] pub end: Option<Time>, + #[serde_as(as = "Option<DisplayFromStr>")] + pub transcode_lowest: Option<Resolution>, + #[serde_as(as = "DisplayFromStr")] + pub transcode_highest: Resolution, + #[serde(default)] #[serde_as(as = "Vec<(DisplayFromStr, DisplayFromStr)>")] pub fast: Vec<(Time, Time)>, -- GitLab