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:
37
src/cli/ahab.rs
Normal file
37
src/cli/ahab.rs
Normal 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
29
src/cli/django.rs
Normal 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
7
src/cli/docker.rs
Normal 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
26
src/cli/docker_compose.rs
Normal 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
11
src/cli/mod.rs
Normal 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
18
src/cli/postgres.rs
Normal 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,
|
||||
},
|
||||
}
|
Reference in New Issue
Block a user