Add base layout
This commit is contained in:
1
src/cmd/prae/.gitignore
vendored
Normal file
1
src/cmd/prae/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/target
|
15
src/cmd/prae/Cargo.toml
Normal file
15
src/cmd/prae/Cargo.toml
Normal file
@@ -0,0 +1,15 @@
|
||||
[package]
|
||||
name = "prae"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
tokio = { version = "1.0", features = ["full"] }
|
||||
tracing = "0.1"
|
||||
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
||||
anyhow = {version = "1.0.58"}
|
||||
|
||||
prae_api = { path = "../../lib/prae_api" }
|
||||
prae_core = { path = "../../lib/prae_core" }
|
15
src/cmd/prae/src/main.rs
Normal file
15
src/cmd/prae/src/main.rs
Normal file
@@ -0,0 +1,15 @@
|
||||
use tracing::{info, Level};
|
||||
use tracing_subscriber::FmtSubscriber;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> anyhow::Result<()> {
|
||||
let subscriber = FmtSubscriber::builder()
|
||||
.with_max_level(Level::INFO)
|
||||
.finish();
|
||||
|
||||
tracing::subscriber::set_global_default(subscriber)?;
|
||||
|
||||
info!("Starting prae");
|
||||
|
||||
prae_api::Server::new().start().await
|
||||
}
|
15
src/lib/prae_api/Cargo.toml
Normal file
15
src/lib/prae_api/Cargo.toml
Normal file
@@ -0,0 +1,15 @@
|
||||
[package]
|
||||
name = "prae_api"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
axum = { version = "0.4" }
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
serde_json = "1.0.68"
|
||||
tokio = { version = "1.0", features = ["full"] }
|
||||
tracing = "0.1"
|
||||
tracing-subscriber = { version = "0.3" }
|
||||
anyhow = { version = "1.0.58" }
|
34
src/lib/prae_api/src/lib.rs
Normal file
34
src/lib/prae_api/src/lib.rs
Normal file
@@ -0,0 +1,34 @@
|
||||
use std::net::SocketAddr;
|
||||
|
||||
use axum::{routing, Router};
|
||||
|
||||
pub struct Server {
|
||||
app: Router,
|
||||
addr: SocketAddr,
|
||||
}
|
||||
|
||||
impl Server {
|
||||
pub fn new() -> Server {
|
||||
let app = Router::new().route("/", routing::get(root));
|
||||
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
|
||||
|
||||
return Server { app, addr };
|
||||
}
|
||||
|
||||
pub async fn start(self) -> anyhow::Result<()> {
|
||||
tracing::info!("listening on {}", self.addr);
|
||||
|
||||
match axum::Server::bind(&self.addr)
|
||||
.serve(self.app.into_make_service())
|
||||
.await
|
||||
{
|
||||
Ok(_) => Ok(()),
|
||||
Err(e) => Err(e.into()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async fn root() -> &'static str {
|
||||
tracing::info!("some prae");
|
||||
return "PRAE";
|
||||
}
|
2
src/lib/prae_core/.gitignore
vendored
Normal file
2
src/lib/prae_core/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
/target
|
||||
/Cargo.lock
|
8
src/lib/prae_core/Cargo.toml
Normal file
8
src/lib/prae_core/Cargo.toml
Normal file
@@ -0,0 +1,8 @@
|
||||
[package]
|
||||
name = "prae_core"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
12
src/lib/prae_core/src/lib.rs
Normal file
12
src/lib/prae_core/src/lib.rs
Normal file
@@ -0,0 +1,12 @@
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
#[test]
|
||||
fn it_works() {
|
||||
let result = 2 + 2;
|
||||
assert_eq!(result, 4);
|
||||
}
|
||||
}
|
||||
|
||||
pub fn something() -> String {
|
||||
"".into()
|
||||
}
|
Reference in New Issue
Block a user