rtk-ai/rtk

feat(utils): add package_manager_filtered_exec() for pnpm workspace support

Open

#515 geöffnet am 11. März 2026

Auf GitHub ansehen
 (3 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)Rust (2.914 Forks)batch import
area:clieffort-smallenhancementgood first issuehelp wantedpriority:low

Repository-Metriken

Stars
 (48.085 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 11T 1h) (45 gemergte PRs in 30 T)

Beschreibung

Part of #512 — pnpm workspace filter support.

Phase 3: src/utils.rs

Add package_manager_filtered_exec()

/// Build a Command using pnpm --filter <workspace> exec, or fallback to package_manager_exec.
/// When filter is present, always uses pnpm (workspace scoping only works through pnpm).
pub fn package_manager_filtered_exec(tool: &str, pnpm_filter: Option<&str>) -> Command {
    match pnpm_filter {
        Some(workspace) => {
            let mut c = Command::new("pnpm");
            c.arg("--filter").arg(workspace).arg("exec").arg("--").arg(tool);
            c
        }
        None => package_manager_exec(tool),
    }
}

Note on exec vs run: pnpm --filter web exec -- prettier runs the binary from node_modules/.bin. Correct for binaries (prettier, tsc, vitest, playwright, eslint, biome). For script-based commands, lint_cmd already resolves the binary name internally via detect_linter() before calling this function.

When pnpm_filter is None, falls back to existing package_manager_exec() — zero behavior change for non-workspace users.

Contributor Guide