From e200b7f5a6c7cb2ef60729b496004d2110cbada3 Mon Sep 17 00:00:00 2001 From: zztkm <33755694+zztkm@users.noreply.github.com.> Date: Sun, 1 Feb 2026 03:00:24 +0000 Subject: [PATCH 1/2] =?UTF-8?q?serve=20=E3=82=B3=E3=83=9E=E3=83=B3?= =?UTF-8?q?=E3=83=89=E3=81=A7=E5=88=9D=E5=9B=9E=E3=83=93=E3=83=AB=E3=83=89?= =?UTF-8?q?=E3=81=8A=E3=82=88=E3=81=B3=E5=86=8D=E3=83=93=E3=83=AB=E3=83=89?= =?UTF-8?q?=E6=99=82=E3=81=AB=E5=87=A6=E7=90=86=E6=99=82=E9=96=93=E3=82=92?= =?UTF-8?q?=E8=A1=A8=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit build コマンドと同じフォーマット「build finished in {} ms」で 処理時間を表示するようにした。 Co-Authored-By: Claude Opus 4.5 --- CHANGELOG.md | 1 + Cargo.lock | 2 +- src/subcommand_serve.rs | 8 +++++++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fd284a..3e13f4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ ## main +- [ADD] `serve` コマンドで初回ビルドおよび再ビルド時に処理時間を表示 - [FIX] `serve` コマンドで `ls` 実行時にビルドが誤って走る問題を修正 - `notify-debouncer-mini` から `notify-debouncer-full` に移行し、`EventKind::Access` を除外するようにした - [#46](https://github.com/veltiosoft/vss/pull/46) diff --git a/Cargo.lock b/Cargo.lock index 5fb136d..c687ced 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2206,7 +2206,7 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "vss" -version = "0.18.0" +version = "0.19.0" dependencies = [ "anyhow", "axum", diff --git a/src/subcommand_serve.rs b/src/subcommand_serve.rs index 40fb286..7b86e36 100644 --- a/src/subcommand_serve.rs +++ b/src/subcommand_serve.rs @@ -12,7 +12,7 @@ use std::{ net::SocketAddr, path::{Path, PathBuf}, sync::{Arc, Mutex}, - time::Duration, + time::{Duration, Instant}, }; use tower_http::services::ServeDir; @@ -62,8 +62,11 @@ pub fn run(mut args: noargs::RawArgs) -> noargs::Result<()> { async fn run_serve(config_path: &Path, port: u16) -> Result<()> { // 初回ビルド println!("[INFO] Running initial build..."); + let start = Instant::now(); subcommand_build::run_build(config_path)?; + let duration = start.elapsed(); println!("[INFO] Initial build completed"); + println!("build finished in {} ms", duration.as_millis()); // 設定を読み込んで dist ディレクトリを取得 let dist_dir = get_dist_dir(config_path)?; @@ -145,10 +148,13 @@ fn watch_files(config_path: &Path, _rebuild_flag: Arc>) -> Result<() if should_rebuild { println!("[INFO] File changed, rebuilding..."); + let start = std::time::Instant::now(); if let Err(e) = subcommand_build::run_build(&config_path_clone) { eprintln!("[ERROR] Rebuild failed: {:#}", e); } else { + let duration = start.elapsed(); println!("[INFO] Rebuild completed"); + println!("build finished in {} ms", duration.as_millis()); } } } From f7d6b37a4db5509c70091bb9858d9d24d66a1df6 Mon Sep 17 00:00:00 2001 From: zztkm <33755694+zztkm@users.noreply.github.com.> Date: Sun, 1 Feb 2026 03:10:56 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=E3=83=93=E3=83=AB=E3=83=89=E6=99=82?= =?UTF-8?q?=E9=96=93=E8=A8=88=E6=B8=AC=E3=83=AD=E3=82=B8=E3=83=83=E3=82=AF?= =?UTF-8?q?=E3=82=92=E3=83=98=E3=83=AB=E3=83=91=E3=83=BC=E9=96=A2=E6=95=B0?= =?UTF-8?q?=E3=81=AB=E5=88=87=E3=82=8A=E5=87=BA=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit レビュー指摘対応:run_build_with_timing 関数を追加し、 初回ビルドと再ビルドで重複していたロジックを共通化した。 Co-Authored-By: Claude Opus 4.5 --- src/subcommand_serve.rs | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/subcommand_serve.rs b/src/subcommand_serve.rs index 7b86e36..9029c4a 100644 --- a/src/subcommand_serve.rs +++ b/src/subcommand_serve.rs @@ -18,6 +18,13 @@ use tower_http::services::ServeDir; use crate::subcommand_build; +/// ビルドを実行し、処理時間を返す +fn run_build_with_timing(config_path: &Path) -> Result { + let start = Instant::now(); + subcommand_build::run_build(config_path)?; + Ok(start.elapsed()) +} + /// serve コマンドのエントリポイント pub fn run(mut args: noargs::RawArgs) -> noargs::Result<()> { let config: Option = noargs::opt("config") @@ -62,9 +69,7 @@ pub fn run(mut args: noargs::RawArgs) -> noargs::Result<()> { async fn run_serve(config_path: &Path, port: u16) -> Result<()> { // 初回ビルド println!("[INFO] Running initial build..."); - let start = Instant::now(); - subcommand_build::run_build(config_path)?; - let duration = start.elapsed(); + let duration = run_build_with_timing(config_path)?; println!("[INFO] Initial build completed"); println!("build finished in {} ms", duration.as_millis()); @@ -148,13 +153,14 @@ fn watch_files(config_path: &Path, _rebuild_flag: Arc>) -> Result<() if should_rebuild { println!("[INFO] File changed, rebuilding..."); - let start = std::time::Instant::now(); - if let Err(e) = subcommand_build::run_build(&config_path_clone) { - eprintln!("[ERROR] Rebuild failed: {:#}", e); - } else { - let duration = start.elapsed(); - println!("[INFO] Rebuild completed"); - println!("build finished in {} ms", duration.as_millis()); + match run_build_with_timing(&config_path_clone) { + Ok(duration) => { + println!("[INFO] Rebuild completed"); + println!("build finished in {} ms", duration.as_millis()); + } + Err(e) => { + eprintln!("[ERROR] Rebuild failed: {:#}", e); + } } } }