mirror of
https://github.com/notohh/rustlings.git
synced 2024-11-21 13:32:23 -05:00
44 lines
1.1 KiB
Rust
44 lines
1.1 KiB
Rust
use anyhow::{bail, Context, Result};
|
|
use clap::Subcommand;
|
|
use std::path::PathBuf;
|
|
|
|
use crate::DEBUG_PROFILE;
|
|
|
|
mod check;
|
|
mod new;
|
|
mod update;
|
|
|
|
#[derive(Subcommand)]
|
|
pub enum DevCommands {
|
|
/// Create a new project for third-party Rustlings exercises
|
|
New {
|
|
/// The path to create the project in
|
|
path: PathBuf,
|
|
/// Don't try to initialize a Git repository in the project directory
|
|
#[arg(long)]
|
|
no_git: bool,
|
|
},
|
|
/// Run checks on the exercises
|
|
Check,
|
|
/// Update the `Cargo.toml` file for the exercises
|
|
Update,
|
|
}
|
|
|
|
impl DevCommands {
|
|
pub fn run(self) -> Result<()> {
|
|
match self {
|
|
Self::New { path, no_git } => {
|
|
if DEBUG_PROFILE {
|
|
bail!("Disabled in the debug build");
|
|
}
|
|
|
|
new::new(&path, no_git).context(INIT_ERR)
|
|
}
|
|
Self::Check => check::check(),
|
|
Self::Update => update::update(),
|
|
}
|
|
}
|
|
}
|
|
|
|
const INIT_ERR: &str = "Initialization failed.
|
|
After resolving the issue, delete the `rustlings` directory (if it was created) and try again";
|