Files
fish/conf.d/pnpm-filter.fish
T

42 lines
1.6 KiB
Fish
Raw Normal View History

2026-10-14 13:32:31 -04:00
# ~/.config/fish/conf.d/pnpm-filter.fish
# Shared helper: pick a workspace package name via gum filter
function __pnpm_pick_pkg
pnpm m ls --depth -1 --json 2>/dev/null \
| jq -r '.[] | select(.name != null) | .name' \
| gum filter --placeholder "Select package…" --height 12
end
# pnpmf: add deps to a selected package
# usage: pnpmf viem zod
function pnpmf -d "pnpm add to a workspace package (gum filter)"
set -l pkg (__pnpm_pick_pkg); or return
gum spin --title "Adding $argv → $pkg" -- pnpm --filter $pkg add $argv
end
# pnpmfd: add devDependencies
function pnpmfd -d "pnpm add -D to a workspace package"
set -l pkg (__pnpm_pick_pkg); or return
gum spin --title "Adding (dev) $argv → $pkg" -- pnpm --filter $pkg add -D $argv
end
# pnpmfr: remove deps
function pnpmfr -d "pnpm remove from a workspace package"
set -l pkg (__pnpm_pick_pkg); or return
pnpm --filter $pkg remove $argv
end
# pnpmfw: link a sibling workspace package (workspace:^)
function pnpmfw -d "pnpm add --workspace sibling package"
set -l pkg (__pnpm_pick_pkg); or return
set -l dep (__pnpm_pick_pkg); or return
pnpm --filter $pkg add $dep --workspace
end
# pnpmfx: run a script in a selected package, script also picked via gum
function pnpmfx -d "pnpm run script in a workspace package"
set -l pkg (__pnpm_pick_pkg); or return
set -l dir (pnpm m ls --depth -1 --json | jq -r ".[] | select(.name == \"$pkg\") | .path")
set -l script (jq -r '.scripts | keys[]' $dir/package.json | gum filter --placeholder "Script…"); or return
pnpm --filter $pkg run $script
end