Import from root chezmoi source
This commit is contained in:
commit
3eeef30313
61 files changed
+2833
No files matched your search
@@ -0,0 +1,40 @@
|
||||
function fab -d "Fuzzy find and execute a Fabric pattern"
|
||||
set -l json_file ~/.config/fabric/pattern_explainations.json
|
||||
|
||||
if not test -f $json_file
|
||||
set_color red; echo "Error: $json_file not found."; set_color normal
|
||||
return 1
|
||||
end
|
||||
|
||||
# 1. Safely capture piped input (if any) to a temp file
|
||||
# This preserves all formatting, newlines, and avoids variable escaping issues
|
||||
set -l temp_input (mktemp)
|
||||
if not isatty stdin
|
||||
cat > $temp_input
|
||||
end
|
||||
|
||||
# 2. Parse JSON to TSV -> fzf (Name in list, Description in preview) -> Extract Name
|
||||
set -l selection (jq -r '.[] | "\(.name)\t\(.description)"' $json_file | \
|
||||
fzf --delimiter '\t' \
|
||||
--with-nth 1 \
|
||||
--preview 'echo {2}' \
|
||||
--preview-window 'right:60%:wrap' \
|
||||
--prompt 'Pattern > ' \
|
||||
--info inline \
|
||||
--bind 'ctrl-/:toggle-preview')
|
||||
|
||||
# 3. Execute with or without the piped data
|
||||
if test -n "$selection"
|
||||
set -l pattern (string split -f 1 \t "$selection")
|
||||
|
||||
# If our temp file has data (-s), pipe it. Otherwise, run bare.
|
||||
if test -s $temp_input
|
||||
cat $temp_input | fabric --pattern "$pattern"
|
||||
else
|
||||
fabric --pattern "$pattern"
|
||||
end
|
||||
end
|
||||
|
||||
# 4. Clean up
|
||||
rm -f $temp_input
|
||||
end
|
||||
Reference in new issue
Block a user