slave 0.2.0

Laravel-inspired CLI for Rust web apps: scaffold Axum projects with built-in auth, users, roles and Turso migrations
//! `slave` — the command-line companion for the slave web framework.

mod cargo;
mod cli;
mod commands;
mod generator;
mod naming;
mod project;
mod templates;
mod timestamp;

use std::process::ExitCode;

use clap::Parser;

use crate::cli::{Cli, Command};
use crate::commands::make::Artifact;
use crate::commands::migrate::Action;

fn main() -> ExitCode {
    let cli = Cli::parse();

    let result = match cli.command {
        Command::New(args) => commands::new::run(&args),
        Command::MakeModel(args) => commands::make::run(Artifact::Model, &args),
        Command::MakeController(args) => commands::make::run(Artifact::Controller, &args),
        Command::MakeMigration { name } => commands::make_migration::run(&name),
        Command::Migrate => commands::migrate::run(Action::Run),
        Command::MigrateStatus => commands::migrate::run(Action::Status),
        Command::MigrateRollback => commands::migrate::run(Action::Rollback),
        Command::Serve(args) => commands::serve::run(&args),
    };

    match result {
        Ok(()) => ExitCode::SUCCESS,
        Err(err) => {
            eprintln!("error: {err:#}");
            ExitCode::FAILURE
        }
    }
}