/* Program: Bibliofile Language: Rustc 1.71.0 ide: CLion Operating system: Fedora 38/WSL Purpose: TUI-based ereader and library manager for Linux terminal environments. Last edited: 7/27/23 */ mod html_module; use epub::doc::EpubDoc; //library for navigating epubs use std::*; use std::path::Path; use std::process::exit; use tuikit::term::{Term, TermHeight}; use tuikit::prelude::*; //this function will determine if Bibliofile has been opened before. If it has not, it will create a library folder under /opt/bibliofile. fn library_exists(){ //if /var/lib/bibliofile/library does not exist, create it. let mut library_exist_var = Path::exists("/var/lib/bibliofile/library".as_ref()); println!("{}", library_exist_var); if library_exist_var == false{ fs::create_dir_all("/var/lib/bibliofile/library").expect("Error...could not create library. If this is your first time running Bibliofile, try running with sudo."); } } //initial function. Reads the ebook passed by argument. //TODO: add visual library to pull up ebooks. fn main() { library_exists(); if env::args().len() == 1 { println!("you need to enter a book. Closing program."); } else { let args: Vec = env::args().collect(); let filename = &args[1]; epub_func(filename); } } //parses epub files fn epub_func(epub_file: &str){ let doc = EpubDoc::new(&epub_file); assert!(doc.is_ok()); let mut doc = doc.unwrap(); let term: Term<()> = Term::with_height(TermHeight::Percent(90)).unwrap(); let _ = term.clear(); let mut page_num = 1; //If letter q pressed, closes program. while let Ok(ev) = term.poll_event() { let _ = term.clear(); match ev { Event::Key(Key::ESC) | Event::Key(Key::Char('q')) => break, _ => {} } doc.set_current_page(page_num); let content = doc.get_current_str(); let str_content = content.unwrap(); let text = html_module::main(str_content.0); let _ = term.print(0, 0, &*text); let _ = term.present(); } }