slave 0.2.0

Laravel-inspired CLI for Rust web apps: scaffold Axum projects with built-in auth, users, roles and Turso migrations
mod app;
mod base;
mod modules;

use std::process::ExitCode;

use slave_framework::database::Database;

use base::config::Config;
use base::state::AppState;

#[tokio::main]
async fn main() -> ExitCode {
    match run().await {
        Ok(()) => ExitCode::SUCCESS,
        Err(err) => {
            eprintln!("error: {err}");
            ExitCode::FAILURE
        }
    }
}

async fn run() -> slave_framework::Result<()> {
    slave_framework::env::load_dotenv()?;
    slave_framework::logging::init()?;

    let config = Config::from_env()?;
    let database = Database::open(&config.database_path).await?;
    let (host, port) = (config.host.clone(), config.port);
    let router = app::router(AppState::new(config, database));

    slave_framework::server::serve(router, &host, port).await
}