aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMroik <mroik@delayed.space>2025-01-27 07:50:20 +0100
committerMroik <mroik@delayed.space>2025-02-01 19:32:57 +0100
commit318a19429a34ff48dbcc1894373fc6430435e36f (patch)
tree1ddff90083405e057d174b14ea3a39444c8adbb9 /src
First commit
Diffstat (limited to 'src')
-rw-r--r--src/app.rs31
-rw-r--r--src/event.rs1
-rw-r--r--src/main.rs51
3 files changed, 83 insertions, 0 deletions
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<String>,
+ event_tx: Sender<Event>,
+ event_rx: Receiver<Event>,
+}
+
+impl App {
+ pub fn new(quotes: &[Vec<String>]) -> App {
+ let mut rng = rand::thread_rng();
+ let chosen = rng.gen_range(0..quotes.len());
+ let (event_tx, event_rx): (Sender<Event>, Receiver<Event>) = 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<Vec<Vec<String>>, Box<dyn Error>> {
+ 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();
+}
XMR address: 854DmXNrxULU3ZFJVs4Wc8PFhbq29RhqHhY8W6cdWrtFN3qmooKyyeYPcDzZTNRxphhJ5UzASQfAdEMwSteVqymk28aLhqj