feat: prepare initial cli layout

Made initial command scopes
d -> docker related commands
dc -> docker compose related commands
dj -> django related commands
pg -> postgres related commands
This commit is contained in:
2023-05-21 22:35:12 +02:00
parent f6e9c7953a
commit eb232a93f8
12 changed files with 220 additions and 0 deletions

37
src/cli/ahab.rs Normal file
View File

@@ -0,0 +1,37 @@
use super::{Django, Docker, DockerCompose, Postgres};
use clap::{Parser, Subcommand};
/// A program for interacting with various dockerized applications.
#[derive(Parser, Debug)]
#[command(author, version, about, long_about=None)]
pub struct Ahab {
#[command(subcommand)]
pub command: Commands,
}
#[derive(Debug, Subcommand)]
pub enum Commands {
/// Docker related subcommands
D {
#[command(subcommand)]
command: Docker,
},
/// Docker compose related subcommands
Dc {
#[command(subcommand)]
command: DockerCompose,
},
/// Docker compose related subcommands
Dj {
#[command(subcommand)]
command: Django,
},
/// Postgres related subcommands
Pg {
#[command(subcommand)]
command: Postgres,
},
}

29
src/cli/django.rs Normal file
View File

@@ -0,0 +1,29 @@
use std::path::PathBuf;
use clap::Parser;
#[derive(Parser, Debug)]
pub enum Django {
/// Prepare empty management command 'command' in app 'app'.
MakeCommand {
#[arg(value_enum)]
app: PathBuf,
#[arg(value_enum)]
command: String,
},
/// Run Django's manage.py makemigrations.
Makemigrations,
/// Pass arguments to Django's manage.py.
Manage {
#[arg(value_enum)]
rest: Vec<String>,
},
/// Run Django's manage.py migrate.
Migrate,
/// Run Django's manage.py shell.
Shell,
}

7
src/cli/docker.rs Normal file
View File

@@ -0,0 +1,7 @@
use clap::Parser;
#[derive(Parser, Debug)]
pub enum Docker {
/// Stop all containers via `docker stop $(docker ps -q)`
StopAll,
}

26
src/cli/docker_compose.rs Normal file
View File

@@ -0,0 +1,26 @@
use clap::Subcommand;
/// Wraper for docker compose; autodiscover compose file and source .env file.
#[derive(Subcommand, Debug)]
pub enum DockerCompose {
/// Build containers.
Build,
/// Down containers.
Down,
/// Stop, build and start containers.
Rebuild,
/// Stop and start containers.
Restart,
/// Start containers.
Start,
/// Stop containers.
Stop,
/// Up containers.
Up,
}

11
src/cli/mod.rs Normal file
View File

@@ -0,0 +1,11 @@
mod ahab;
mod django;
mod docker;
mod docker_compose;
mod postgres;
pub use ahab::{Ahab, Commands};
pub use django::Django;
pub use docker::Docker;
pub use docker_compose::DockerCompose;
pub use postgres::Postgres;

18
src/cli/postgres.rs Normal file
View File

@@ -0,0 +1,18 @@
use std::path::PathBuf;
use clap::Subcommand;
#[derive(Subcommand, Debug)]
pub enum Postgres {
/// Import dump via pg_restore
Import {
#[arg(value_enum)]
path: PathBuf,
},
/// Dump via pg_dump with format=c
Dump {
#[arg(value_enum)]
path: PathBuf,
},
}