From 318a19429a34ff48dbcc1894373fc6430435e36f Mon Sep 17 00:00:00 2001 From: Mroik Date: Mon, 27 Jan 2025 07:50:20 +0100 Subject: First commit --- src/app.rs | 31 +++++++++++++++++++++++++++++++ src/event.rs | 1 + src/main.rs | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 src/app.rs create mode 100644 src/event.rs create mode 100644 src/main.rs (limited to 'src') diff --git a/src/app.rs b/src/app.rs new file mode 100644 index 0000000..87caf62 --- /dev/null +++ b/src/app.rs @@ -0,0 +1,31 @@ +use std::io::{stdout, Stdout}; + +use rand::Rng; +use tokio::sync::mpsc::{channel, Receiver, Sender}; + +use crate::event::Event; + +pub struct App { + stdout: Stdout, + quote: Vec, + event_tx: Sender, + event_rx: Receiver, +} + +impl App { + pub fn new(quotes: &[Vec]) -> App { + let mut rng = rand::thread_rng(); + let chosen = rng.gen_range(0..quotes.len()); + let (event_tx, event_rx): (Sender, Receiver) = channel(10); + App { + stdout: stdout(), + quote: quotes[chosen].clone(), + event_rx, + event_tx, + } + } + + pub fn run() { + todo!() + } +} diff --git a/src/event.rs b/src/event.rs new file mode 100644 index 0000000..7c470eb --- /dev/null +++ b/src/event.rs @@ -0,0 +1 @@ +pub enum Event {} diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..ba5277e --- /dev/null +++ b/src/main.rs @@ -0,0 +1,51 @@ +mod app; +pub mod event; + +use std::{error::Error, fs::read_to_string, path::Path}; + +use clap::Parser; + +#[derive(Parser)] +struct Args { + #[arg(short, long)] + quote_folder: String, +} + +fn generate_quotes(path: &Path) -> Result>, Box> { + let mut ris = Vec::new(); + if path.is_file() { + ris.push( + read_to_string(path)? + .trim() + .split_whitespace() + .filter(|s| !s.is_empty()) + .map(|s| s.to_string()) + .collect(), + ); + } else { + for f in path.read_dir()? { + if f.is_err() { + continue; + } + let v = f.unwrap().path(); + if v.is_file() { + ris.push( + read_to_string(v)? + .trim() + .split_whitespace() + .filter(|s| !s.is_empty()) + .map(|s| s.to_string()) + .collect(), + ); + } + } + } + return Ok(ris); +} + +#[tokio::main] +async fn main() { + let args = Args::parse(); + let path = Path::new(&args.quote_folder); + let quotes = generate_quotes(&path).unwrap(); +} -- cgit v1.3