Initial boilerplate
This commit is contained in:
commit
cd106914a1
10 changed files with 1936 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
target/
|
1838
Cargo.lock
generated
Normal file
1838
Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
9
Cargo.toml
Normal file
9
Cargo.toml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
[package]
|
||||||
|
name = "subtails"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
crossterm = "0.28.1"
|
||||||
|
ratatui = "0.29.0"
|
||||||
|
reqwest = "0.12.9"
|
12
src/audio/mod.rs
Normal file
12
src/audio/mod.rs
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
use std::sync::{mpsc::Sender, Arc};
|
||||||
|
|
||||||
|
use crate::{config::Settings, utils::Error};
|
||||||
|
|
||||||
|
pub enum AudioEvent {}
|
||||||
|
|
||||||
|
pub fn init(
|
||||||
|
settings: Arc<Settings>,
|
||||||
|
error_chan: Sender<Error>,
|
||||||
|
) -> Result<Sender<AudioEvent>, Error> {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
9
src/config/mod.rs
Normal file
9
src/config/mod.rs
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
use std::sync::Arc;
|
||||||
|
|
||||||
|
use crate::utils::Error;
|
||||||
|
|
||||||
|
pub struct Settings {}
|
||||||
|
|
||||||
|
pub fn init() -> Result<Arc<Settings>, Error> {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
32
src/main.rs
Normal file
32
src/main.rs
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
use std::process::exit;
|
||||||
|
|
||||||
|
use std::error::Error;
|
||||||
|
use std::sync::mpsc::channel;
|
||||||
|
|
||||||
|
mod audio;
|
||||||
|
mod config;
|
||||||
|
mod player;
|
||||||
|
mod ssonic;
|
||||||
|
mod utils;
|
||||||
|
|
||||||
|
fn init() -> Result<(), Box<dyn Error>> {
|
||||||
|
let settings = config::init()?;
|
||||||
|
let (error_in, error_out) = channel();
|
||||||
|
let audio_event_chan = audio::init(settings.clone(), error_in.clone())?;
|
||||||
|
let api_event_chan = ssonic::init(settings.clone(), error_in.clone())?;
|
||||||
|
let mut player = player::init(
|
||||||
|
settings.clone(),
|
||||||
|
audio_event_chan,
|
||||||
|
api_event_chan,
|
||||||
|
error_in.clone(),
|
||||||
|
)?;
|
||||||
|
player.begin()?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
match init() {
|
||||||
|
Err(_) => exit(1),
|
||||||
|
Ok(_) => exit(0),
|
||||||
|
};
|
||||||
|
}
|
9
src/player/begin.rs
Normal file
9
src/player/begin.rs
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
use crate::utils::Error;
|
||||||
|
|
||||||
|
use super::Player;
|
||||||
|
|
||||||
|
impl Player {
|
||||||
|
pub fn begin(&mut self) -> Result<(), Error> {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
}
|
16
src/player/mod.rs
Normal file
16
src/player/mod.rs
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
use std::sync::{mpsc::Sender, Arc};
|
||||||
|
|
||||||
|
use crate::{audio::AudioEvent, config::Settings, ssonic::APIEvent, utils::Error};
|
||||||
|
|
||||||
|
pub struct Player {}
|
||||||
|
|
||||||
|
pub fn init(
|
||||||
|
settings: Arc<Settings>,
|
||||||
|
audio_chan: Sender<AudioEvent>,
|
||||||
|
api_chan: Sender<APIEvent>,
|
||||||
|
error_chan: Sender<Error>,
|
||||||
|
) -> Result<Player, Error> {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
mod begin;
|
9
src/ssonic/mod.rs
Normal file
9
src/ssonic/mod.rs
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
use std::sync::{mpsc::Sender, Arc};
|
||||||
|
|
||||||
|
use crate::{config::Settings, utils::Error};
|
||||||
|
|
||||||
|
pub enum APIEvent {}
|
||||||
|
|
||||||
|
pub fn init(settings: Arc<Settings>, error_chan: Sender<Error>) -> Result<Sender<APIEvent>, Error> {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
1
src/utils.rs
Normal file
1
src/utils.rs
Normal file
|
@ -0,0 +1 @@
|
||||||
|
pub type Error = Box<dyn std::error::Error>;
|
Loading…
Reference in a new issue