diff --git a/src/commands/containers/utils.rs b/src/commands/containers/utils.rs index 0e26eb0..b6d523f 100644 --- a/src/commands/containers/utils.rs +++ b/src/commands/containers/utils.rs @@ -1,3 +1,5 @@ +use serde_json::Value; + use super::types::{Container, CreateContainers, CreateContainersResponse}; use crate::state::http::HttpClient; @@ -8,7 +10,7 @@ pub async fn create_containers( ) -> Vec { http.request::( "POST", - format!("/deployment/{}/containers", deployment_id).as_str(), + format!("/ignite/deployments/{}/containers", deployment_id).as_str(), Some(( serde_json::to_string(&CreateContainers { count }) .unwrap() @@ -21,3 +23,14 @@ pub async fn create_containers( .expect("Failed to create containers") .containers } + +pub async fn rollout(http: HttpClient, deployment_id: String) { + http.request::( + "POST", + format!("/ignite/deployments/{}/rollouts", deployment_id).as_str(), + None, + ) + .await + .expect("Failed to rollout") + .expect("Failed to rollout"); +} diff --git a/src/commands/deploy/mod.rs b/src/commands/deploy/mod.rs index 9397703..c7c74ad 100644 --- a/src/commands/deploy/mod.rs +++ b/src/commands/deploy/mod.rs @@ -5,6 +5,7 @@ use std::env::current_dir; use std::path::PathBuf; use clap::Parser; +use console::style; use hyper::Method; use reqwest::multipart::{Form, Part}; use tokio::fs; @@ -12,7 +13,7 @@ use tokio::fs; use self::types::{Event, Message}; use self::util::{compress, env_file_to_map}; use crate::commands::containers::types::ContainerOptions; -use crate::commands::containers::utils::create_containers; +use crate::commands::containers::utils::{create_containers, rollout}; use crate::commands::ignite::create::{CreateOptions, DeploymentConfig}; use crate::commands::ignite::types::SingleDeployment; use crate::commands::ignite::util::{create_deployment, create_deployment_config}; @@ -255,7 +256,11 @@ pub async fn handle_deploy(options: DeployOptions, state: State) -> Result<(), s "PUSH_FAILURE" => { connection.close().await; println!(""); - panic!("Push failed, for help contact us on https://discord.gg/hop and mention the deployment id: {}", deployment.id); + panic!( + "Push failed, for help contact us on {} and mention the deployment id: {}", + style("https://discord.gg/hop").underlined().bold(), + deployment.id + ); } // ignore rest @@ -263,10 +268,11 @@ pub async fn handle_deploy(options: DeployOptions, state: State) -> Result<(), s } } - log::info!("Pushed deployment `{}`", deployment.name); - if existing { - log::warn!("Rollouts are not supported yet"); + if deployment.container_count > 0 { + log::info!("Rolling out new containers..."); + rollout(state.http, deployment.id.clone()).await; + } } else { if let Some(containers) = container_options.containers { create_containers(state.http, deployment.id.clone(), containers).await; @@ -274,9 +280,10 @@ pub async fn handle_deploy(options: DeployOptions, state: State) -> Result<(), s } log::info!( - "Created deployment, you can find it at {}{}", - WEB_DEPLOYMENTS_URL, - deployment.id + "Deployed successfuly, you can find it at: {}", + style(format!("{}{}", WEB_DEPLOYMENTS_URL, deployment.id)) + .underlined() + .bold() ); Ok(()) diff --git a/src/store/auth.rs b/src/store/auth.rs index 5f31cb1..19a0f88 100644 --- a/src/store/auth.rs +++ b/src/store/auth.rs @@ -66,7 +66,7 @@ impl Auth { .await .expect("Failed to write auth store"); - log::info!("Saved credentials to {}", path.display()); + log::debug!("Saved credentials to {}", path.display()); Ok(self) } diff --git a/src/store/context.rs b/src/store/context.rs index f089828..49b89c9 100644 --- a/src/store/context.rs +++ b/src/store/context.rs @@ -124,7 +124,7 @@ impl Context { .await .expect("Failed to write auth store"); - log::info!("Saved context to {}", path.display()); + log::debug!("Saved context to {}", path.display()); Ok(self) }