diff --git a/src/cmd/core.rs b/src/cmd/core.rs index 272672d..b4d56b2 100644 --- a/src/cmd/core.rs +++ b/src/cmd/core.rs @@ -1,24 +1,14 @@ -use std::io; -use std::io::Write; +use config::Config; +use crate::settings; +use crate::transcoder::repository::Repository; -pub fn configure_command(config_path: &str) { - let repository_dir = get_user_input("Enter your desired video repository directory path: "); - let interval = get_user_input("Enter how long Zealot should wait in between runs (in minutes): "); +pub fn setup_command(repository_dir: &str) { + println!("Initializing video repository at {}...", repository_dir); - println!("Updating config file {} with repository path {} and interval {}.", config_path, repository_dir, interval); -} - -fn get_user_input(message: &str) -> String { - // print our message to the user, then flush STDIN so the message is sent - print!("{}", message); - io::stdout().flush().unwrap(); - - // now create our string object and read the input - let mut input = String::new(); - io::stdin() - .read_line(&mut input) - .expect("Failed to get user input"); - - // obviously, return the trimmed result as a String object - return input.trim().to_string(); + // create and initialize our config and repository objects + let c: Config = settings::load_config(); + let r: Repository = Repository::new(&shellexpand::tilde(&c.get_string("transcoder.repository").unwrap())); + + // initialize the video repository + r.initialize(); } diff --git a/src/main.rs b/src/main.rs index d19aae9..9fde30e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -19,7 +19,7 @@ struct Cli { #[derive(Subcommand)] enum Commands { /// displays version info about this program - Configure {}, + Setup {}, } fn main() { @@ -37,7 +37,7 @@ fn main() { match &cli.command { // sub-commands will be handled here - Some(Commands::Configure {}) => cmd::core::configure_command(config_path), + Some(Commands::Setup {}) => cmd::core::setup_command(config_path), // run the main program without any commands None => { diff --git a/src/transcoder/repository.rs b/src/transcoder/repository.rs index 44b40f5..f04a243 100644 --- a/src/transcoder/repository.rs +++ b/src/transcoder/repository.rs @@ -11,16 +11,9 @@ pub struct Repository { impl Repository { pub fn new(base_path: &str) -> Repository { - // create the base directory path - create_directory(base_path); - - // create the needed sub-directories let ingest_path = Path::new(base_path).join("ingest"); - create_directory(ingest_path.to_str().unwrap()); let archive_path = Path::new(base_path).join("archive"); - create_directory(archive_path.to_str().unwrap()); let output_path = Path::new(base_path).join("output"); - create_directory(output_path.to_str().unwrap()); return Repository { base_dir: String::from(base_path), @@ -30,6 +23,16 @@ impl Repository { }; } + pub fn initialize(&self) { + // create the base directory path + create_directory(&self.base_dir); + + // create the needed sub-directories + create_directory(&self.ingest_dir.as_str()); + create_directory(&self.archive_dir.as_str()); + create_directory(&self.output_dir.as_str()); + } + pub fn search_ingest(&self) -> Vec { // read file entries from ingest let files = fs::read_dir(&self.ingest_dir).unwrap();