diff --git a/src/cli/django.rs b/src/cli/django.rs index 7164776..c793a90 100644 --- a/src/cli/django.rs +++ b/src/cli/django.rs @@ -31,7 +31,7 @@ pub enum Django { /// Run Django's manage.py shell. Shell, - + /// Run Django's manage.py test. Test, } diff --git a/src/cli/docker_compose.rs b/src/cli/docker_compose.rs index 95b1615..ec3c67f 100644 --- a/src/cli/docker_compose.rs +++ b/src/cli/docker_compose.rs @@ -5,12 +5,21 @@ use clap::Subcommand; /// Wraper for docker compose; autodiscover compose file and source .env file. #[derive(Subcommand, Debug)] pub enum DockerCompose { + /// Start bash session inside container + Bash, + /// Build containers. Build, /// Down containers. Down, + /// Exec command inside container. + Exec { + #[arg(value_enum)] + rest: Vec, + }, + /// Stop, build and start containers. Rebuild, diff --git a/src/command_builder.rs b/src/command_builder.rs index af36201..625c903 100644 --- a/src/command_builder.rs +++ b/src/command_builder.rs @@ -24,6 +24,12 @@ impl From<&String> for Args { } } +impl From<&[String]> for Args { + fn from(value: &[String]) -> Self { + Self(Vec::from_iter(value.iter().map(|x| x.to_string()))) + } +} + #[derive(Default)] pub struct CommandBuilder { args: Vec, diff --git a/src/main.rs b/src/main.rs index ea1f052..ed61d67 100644 --- a/src/main.rs +++ b/src/main.rs @@ -26,8 +26,10 @@ fn main() -> Result<()> { cli::Docker::StopAll => scripts::docker::stop_all(), }, cli::Commands::Compose { command } => match command { + cli::DockerCompose::Bash => scripts::docker_compose::bash(), cli::DockerCompose::Build => scripts::docker_compose::build(), cli::DockerCompose::Down => scripts::docker_compose::down(), + cli::DockerCompose::Exec { rest } => scripts::docker_compose::exec(&rest), cli::DockerCompose::Rebuild => scripts::docker_compose::rebuild(), cli::DockerCompose::Restart => scripts::docker_compose::restart(), cli::DockerCompose::Start => scripts::docker_compose::start(None), diff --git a/src/scripts/docker_compose.rs b/src/scripts/docker_compose.rs index 9f7e581..9ce4373 100644 --- a/src/scripts/docker_compose.rs +++ b/src/scripts/docker_compose.rs @@ -11,6 +11,13 @@ pub fn down() -> Result<()> { CommandBuilder::docker_compose().args("down").exec() } +pub fn exec(rest: &[String]) -> Result<()> { + CommandBuilder::docker_compose() + .args("exec appserver") + .args(rest) + .exec() +} + /// Start containers via `docker compose start`. Optionally pass containers to be started. /// ``` /// start(None); @@ -31,6 +38,10 @@ pub fn up() -> Result<()> { } // shortcuts +pub fn bash() -> Result<()> { + exec(&["bash".to_string()]) +} + pub fn rebuild() -> Result<()> { stop()?; build()?;