Options and depend setup
This commit is contained in:
parent
984c45fbcf
commit
0f04eed0c9
4 changed files with 2798 additions and 2 deletions
2713
Cargo.lock
generated
2713
Cargo.lock
generated
File diff suppressed because it is too large
Load diff
27
Cargo.toml
27
Cargo.toml
|
@ -6,3 +6,30 @@ edition = "2021"
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
## Core
|
||||||
|
tokio = { version = "^1.26", features = ["full"] }
|
||||||
|
|
||||||
|
## Web
|
||||||
|
axum = { version = "^0.6", features = ["ws"] }
|
||||||
|
|
||||||
|
askama = { version = "0.12.0", features = ["with-axum"] }
|
||||||
|
askama_axum = "0.3.0"
|
||||||
|
|
||||||
|
## Database
|
||||||
|
sea-orm = { version = "^0.11", features = ["sqlx-postgres", "runtime-tokio-rustls", "macros"] }
|
||||||
|
sea-orm-migration = "0.11.1"
|
||||||
|
|
||||||
|
## Auth
|
||||||
|
rand = { version = "0.8.5", features = ["std_rng"] }
|
||||||
|
|
||||||
|
blake3 = "1.3.3"
|
||||||
|
argon2 = "0.5.0"
|
||||||
|
zxcvbn = "2.2.1"
|
||||||
|
|
||||||
|
## Data
|
||||||
|
serde = { version = "1.0.156", features = ["derive"] }
|
||||||
|
serde_derive = { version = "1.0.156" }
|
||||||
|
|
||||||
|
## Misc
|
||||||
|
tracing = "0.1.37"
|
||||||
|
tracing-subscriber = "0.3.16"
|
||||||
|
|
38
src/main.rs
38
src/main.rs
|
@ -1,3 +1,37 @@
|
||||||
fn main() {
|
mod options;
|
||||||
println!("Hello, world!");
|
|
||||||
|
use std::net::SocketAddr;
|
||||||
|
use axum::Router;
|
||||||
|
use tracing::info;
|
||||||
|
use crate::options::{Opt, Options};
|
||||||
|
|
||||||
|
const VERSION: &str = env!("CARGO_PKG_VERSION");
|
||||||
|
|
||||||
|
#[tokio::main]
|
||||||
|
async fn main() {
|
||||||
|
tracing_subscriber::fmt::init();
|
||||||
|
|
||||||
|
let options = Options::get();
|
||||||
|
|
||||||
|
info!("Starting CorrugatedCardboard v{}", VERSION);
|
||||||
|
|
||||||
|
info!("\tInstance Name: {}", options.name);
|
||||||
|
info!("\tListen Address: {}", options.listen_addr);
|
||||||
|
info!("\tRegistrations Enabled: {}", options.registration);
|
||||||
|
|
||||||
|
info!("Connecting to database & checking for migrations");
|
||||||
|
|
||||||
|
info!("Starting server");
|
||||||
|
|
||||||
|
// Axum setup
|
||||||
|
let app = Router::new();
|
||||||
|
|
||||||
|
let addr: SocketAddr = options.listen_addr
|
||||||
|
.parse()
|
||||||
|
.expect("Unable to parse listen address!");
|
||||||
|
|
||||||
|
axum::Server::bind(&addr)
|
||||||
|
.serve(app.into_make_service())
|
||||||
|
.await
|
||||||
|
.expect("Failed to start the server!");
|
||||||
}
|
}
|
||||||
|
|
22
src/options.rs
Normal file
22
src/options.rs
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
use std::env;
|
||||||
|
|
||||||
|
// TODO: Make this better lol
|
||||||
|
pub struct Options {
|
||||||
|
pub name: String,
|
||||||
|
pub listen_addr: String,
|
||||||
|
pub database_url: String,
|
||||||
|
pub registration: bool
|
||||||
|
}
|
||||||
|
pub trait Opt {
|
||||||
|
fn get() -> Options;
|
||||||
|
}
|
||||||
|
impl Opt for Options {
|
||||||
|
fn get() -> Options {
|
||||||
|
Options {
|
||||||
|
name: env::var("NAME").unwrap_or_else(|_| "CorrugatedCardboard".to_string()),
|
||||||
|
listen_addr: env::var("HTTP_LISTEN_ADDR").unwrap_or_else(|_| "0.0.0.0:3926".to_string()),
|
||||||
|
database_url: env::var("DATABASE_URL").expect("DATABASE_URL is required!"),
|
||||||
|
registration: env::var("REGISTRATION").unwrap_or_else(|_| "false".to_string()).parse().unwrap()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue