refactor(rename): kb → kebab — binary, env vars, XDG paths, file renames
두 번째 commit. 사용자 facing surface (CLI binary, env vars, XDG paths) + 코드 안 single-letter token (`KB_`, `kb.sqlite`, `/kb/`, tracing target) 일괄 rename. 그리고 3 개 file rename: - 디자인 doc `2026-04-27-kb-final-form-design.md` → `2026-04-27-kebab-final-form-design.md` - 최초 보고서 `kb_local_rust_report.md` → `kebab_local_rust_report.md` - workspace ignore `.kbignore` → `.kebabignore` ## 변경 - `crates/kebab-cli/Cargo.toml`: `[[bin]] name = "kb"` → `"kebab"`. - `crates/kebab-cli/src/main.rs`: `#[command(name = "kb", …)]` → `name = "kebab"`. - 모든 `KB_*` env var (코드 + doc + 테스트) → `KEBAB_*`. apply_env prefix 매칭 + 30+ 개 setting 키 모두. - XDG paths: `~/.config/kb` / `~/.local/share/kb` / `~/.cache/kb` / `~/.local/state/kb` → `~/.config/kebab` 등. config defaults + expand_path tests + paths.rs 의 hardcode 모두. - SQLite filename: `kb.sqlite` → `kebab.sqlite` (`SQLITE_FILE` const + 테스트 hardcode 모두). - tracing target: `target: "kb-*"` → `"kebab-*"` (10+ 곳). - snapshot fixture: `.kbignore` → `.kebabignore` (`fixtures/source-fs/ tree-1.snapshot.json` 갱신). ## 검증 - `cargo test --workspace -j 1` clean (linker OOM 회피 위해 직렬). - `cargo clippy --workspace --all-targets -- -D warnings` clean. 다음 commit 에서 docs sweep. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -74,13 +74,13 @@ impl SourceConnector for FsSourceConnector {
|
||||
scope.root.clone()
|
||||
};
|
||||
|
||||
// Union: config.workspace.exclude ∪ scope.exclude ∪ .kbignore.
|
||||
// Per §6.2 the union of `.kbignore` and `config.workspace.exclude`
|
||||
// Union: config.workspace.exclude ∪ scope.exclude ∪ .kebabignore.
|
||||
// Per §6.2 the union of `.kebabignore` and `config.workspace.exclude`
|
||||
// is the filter set. `scope.exclude` is added on top so a caller
|
||||
// can layer a per-call narrowing.
|
||||
let mut excludes = self.default_exclude.clone();
|
||||
excludes.extend(scope.exclude.iter().cloned());
|
||||
// .kbignore is re-read on every scan() so users can edit it without
|
||||
// .kebabignore is re-read on every scan() so users can edit it without
|
||||
// restarting any long-running process.
|
||||
let kbignore = read_kbignore(&root)?;
|
||||
|
||||
@@ -243,7 +243,7 @@ mod tests {
|
||||
fn scan_filters_by_kbignore() {
|
||||
let dir = tempfile::tempdir().unwrap();
|
||||
let root = dir.path();
|
||||
std::fs::write(root.join(".kbignore"), "*.tmp\n").unwrap();
|
||||
std::fs::write(root.join(".kebabignore"), "*.tmp\n").unwrap();
|
||||
std::fs::write(root.join("a.md"), b"x").unwrap();
|
||||
std::fs::write(root.join("b.tmp"), b"x").unwrap();
|
||||
|
||||
@@ -252,14 +252,14 @@ mod tests {
|
||||
.unwrap();
|
||||
let v = conn.scan(&SourceScope::default()).unwrap();
|
||||
let names: Vec<_> = v.iter().map(|a| a.workspace_path.0.clone()).collect();
|
||||
// Decision: `.kbignore` itself IS emitted as a RawAsset (MediaType::Other("")).
|
||||
// Decision: `.kebabignore` itself IS emitted as a RawAsset (MediaType::Other("")).
|
||||
// Rationale: a config file that affects ingest is itself part of the
|
||||
// workspace contents; the markdown extractor (P1-2) will reject Other("")
|
||||
// on its own. If we ever decide to omit `.kbignore` from the asset list,
|
||||
// on its own. If we ever decide to omit `.kebabignore` from the asset list,
|
||||
// this test will catch it.
|
||||
assert!(
|
||||
names.contains(&".kbignore".to_string()),
|
||||
".kbignore must be emitted as an asset; got: {names:?}"
|
||||
names.contains(&".kebabignore".to_string()),
|
||||
".kebabignore must be emitted as an asset; got: {names:?}"
|
||||
);
|
||||
assert!(names.contains(&"a.md".to_string()));
|
||||
assert!(!names.contains(&"b.tmp".to_string()));
|
||||
@@ -285,7 +285,7 @@ mod tests {
|
||||
fn scan_unions_config_exclude_and_kbignore() {
|
||||
let dir = tempfile::tempdir().unwrap();
|
||||
let root = dir.path();
|
||||
std::fs::write(root.join(".kbignore"), "*.tmp\n").unwrap();
|
||||
std::fs::write(root.join(".kebabignore"), "*.tmp\n").unwrap();
|
||||
std::fs::write(root.join("a.md"), b"x").unwrap();
|
||||
std::fs::write(root.join("b.tmp"), b"x").unwrap();
|
||||
std::fs::write(root.join("c.log"), b"x").unwrap();
|
||||
|
||||
Reference in New Issue
Block a user