Просмотр исходного кода

feat: serve follows logs by default, --no-follow to skip

serve now streams container logs via logs --follow automatically after
launching the cluster.  Pass --no-follow to skip (e.g. for scripting).

- Added --follow (default: true) flag to serve CLI command
- Uses clap ArgAction::SetFalse so --no-follow sets it to false
Alexander Korolev 4 месяцев назад
Родитель
Сommit
e84b676397
3 измененных файлов с 10 добавлено и 2 удалено
  1. 4 0
      src/cli.rs
  2. 4 2
      src/docker/mod.rs
  3. 2 0
      src/main.rs

+ 4 - 0
src/cli.rs

@@ -34,6 +34,10 @@ pub enum Commands {
         /// Skip pre-serve hooks (cluster-level + recipe-level).
         /// Skip pre-serve hooks (cluster-level + recipe-level).
         #[arg(long, default_value = "false")]
         #[arg(long, default_value = "false")]
         skip_before_serve: bool,
         skip_before_serve: bool,
+
+        /// Follow logs after serving (use --no-follow to skip).
+        #[arg(long, action = clap::ArgAction::SetFalse, default_value_t = true)]
+        follow: bool,
     },
     },
 
 
     /// Показать логи контейнеров
     /// Показать логи контейнеров

+ 4 - 2
src/docker/mod.rs

@@ -12,6 +12,7 @@ use crate::{
     ssh::{run_ssh, run_ssh_follow, run_ssh_with_retry},
     ssh::{run_ssh, run_ssh_follow, run_ssh_with_retry},
 };
 };
 
 
+#[allow(clippy::too_many_arguments)]
 pub async fn serve(
 pub async fn serve(
     config: &Config,
     config: &Config,
     recipe_name: &str,
     recipe_name: &str,
@@ -19,6 +20,7 @@ pub async fn serve(
     node_name: Option<&str>,
     node_name: Option<&str>,
     keep: bool,
     keep: bool,
     skip_before_serve: bool,
     skip_before_serve: bool,
+    follow: bool,
     dry_run: bool,
     dry_run: bool,
 ) -> Result<()> {
 ) -> Result<()> {
     let recipe = load_recipe(recipe_name).await?;
     let recipe = load_recipe(recipe_name).await?;
@@ -91,9 +93,9 @@ pub async fn serve(
         dry_run,
         dry_run,
     )
     )
     .await?;
     .await?;
-    if !dry_run {
+    if !dry_run && follow {
         info!("{}", fluent_i18n::t!("container-log-header"));
         info!("{}", fluent_i18n::t!("container-log-header"));
-        show_logs(config, &cluster, recipe_name, false, dry_run).await?;
+        show_logs(config, &cluster, recipe_name, true, dry_run).await?;
     }
     }
     Ok(())
     Ok(())
 }
 }

+ 2 - 0
src/main.rs

@@ -83,6 +83,7 @@ async fn main() -> Result<()> {
             node,
             node,
             keep,
             keep,
             skip_before_serve,
             skip_before_serve,
+            follow,
         } => {
         } => {
             docker::serve(
             docker::serve(
                 &config,
                 &config,
@@ -91,6 +92,7 @@ async fn main() -> Result<()> {
                 node.as_deref(),
                 node.as_deref(),
                 keep,
                 keep,
                 skip_before_serve,
                 skip_before_serve,
+                follow,
                 dry_run,
                 dry_run,
             )
             )
             .await?;
             .await?;