From 9ac13fa25676bc253e0c36a5bfd9b359c1b05b5f Mon Sep 17 00:00:00 2001
From: th-kim0823
Date: Sun, 10 May 2026 20:26:03 +0900
Subject: [PATCH] fix(cli): make query optional when --bulk is set (fb-42)
---
crates/kebab-cli/src/main.rs | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/crates/kebab-cli/src/main.rs b/crates/kebab-cli/src/main.rs
index 647860f..c8b385d 100644
--- a/crates/kebab-cli/src/main.rs
+++ b/crates/kebab-cli/src/main.rs
@@ -94,7 +94,8 @@ enum Cmd {
/// Lexical / vector / hybrid search over chunks.
Search {
- query: String,
+ /// Query text. Not required when `--bulk` is set (queries from stdin).
+ query: Option,
#[arg(long, default_value_t = 10)]
k: usize,
@@ -771,6 +772,14 @@ fn run(cli: &Cli) -> anyhow::Result<()> {
let cfg = kebab_config::Config::load(cli.config.as_deref())?;
+ // p9-fb-42: bulk mode requires no query; single-query mode requires query.
+ let query_text = match query.as_ref() {
+ Some(q) => q.clone(),
+ None => {
+ return Err(anyhow::anyhow!("query is required unless --bulk is set"));
+ }
+ };
+
// p9-fb-36: normalize --media aliases (md → markdown).
fn normalize_media_alias(s: &str) -> String {
match s.to_ascii_lowercase().as_str() {
@@ -822,7 +831,7 @@ fn run(cli: &Cli) -> anyhow::Result<()> {
};
let q = kebab_core::SearchQuery {
- text: query.clone(),
+ text: query_text,
mode: (*mode).into(),
k: *k,
filters,