fpf-cli 1.6.18 → 1.6.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fpf +63 -8
- package/package.json +1 -1
package/fpf
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
set -euo pipefail
|
|
4
4
|
|
|
5
5
|
SCRIPT_NAME="fpf"
|
|
6
|
-
SCRIPT_VERSION="1.6.
|
|
6
|
+
SCRIPT_VERSION="1.6.20"
|
|
7
7
|
TMP_ROOT="${TMPDIR:-/tmp}/fpf"
|
|
8
8
|
SESSION_TMP_ROOT=""
|
|
9
9
|
HELP_FILE=""
|
|
@@ -92,6 +92,36 @@ normalize_cache_query() {
|
|
|
92
92
|
}'
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
+
trim_whitespace() {
|
|
96
|
+
local value="$1"
|
|
97
|
+
value="${value#"${value%%[![:space:]]*}"}"
|
|
98
|
+
value="${value%"${value##*[![:space:]]}"}"
|
|
99
|
+
printf "%s" "${value}"
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
selection_debug_enabled() {
|
|
103
|
+
case "${FPF_DEBUG_SELECTION:-0}" in
|
|
104
|
+
1|true|yes|on)
|
|
105
|
+
return 0
|
|
106
|
+
;;
|
|
107
|
+
*)
|
|
108
|
+
return 1
|
|
109
|
+
;;
|
|
110
|
+
esac
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
log_selection_parse_skip() {
|
|
114
|
+
local line_number="$1"
|
|
115
|
+
local reason="$2"
|
|
116
|
+
local raw_line="$3"
|
|
117
|
+
local raw_repr=""
|
|
118
|
+
|
|
119
|
+
selection_debug_enabled || return 0
|
|
120
|
+
|
|
121
|
+
printf -v raw_repr "%q" "${raw_line}"
|
|
122
|
+
log "Debug(selection): skipped line ${line_number}: ${reason}; raw=${raw_repr}"
|
|
123
|
+
}
|
|
124
|
+
|
|
95
125
|
platform_cache_token() {
|
|
96
126
|
uname -s | tr '[:upper:]' '[:lower:]'
|
|
97
127
|
}
|
|
@@ -2479,7 +2509,7 @@ run_ipc_reload_action() {
|
|
|
2479
2509
|
fi
|
|
2480
2510
|
|
|
2481
2511
|
reload_command="$(build_dynamic_reload_command_for_query "${manager_override}" "${fallback_file}" "${query}")"
|
|
2482
|
-
action_payload="
|
|
2512
|
+
action_payload="change-prompt(Search> )+reload(${reload_command})"
|
|
2483
2513
|
send_fzf_listen_action "${action_payload}"
|
|
2484
2514
|
}
|
|
2485
2515
|
|
|
@@ -2512,16 +2542,18 @@ run_ipc_query_notify_action() {
|
|
|
2512
2542
|
target_manager="bun"
|
|
2513
2543
|
fi
|
|
2514
2544
|
|
|
2515
|
-
if [[ "${target_manager}" == "bun" ]] && manager_command_ready bun; then
|
|
2545
|
+
if [[ "${target_manager}" == "bun" ]] && manager_command_ready bun && [[ -n "${FZF_PORT:-}" ]]; then
|
|
2516
2546
|
should_warm_bun=1
|
|
2517
2547
|
fi
|
|
2518
2548
|
|
|
2519
2549
|
send_fzf_prompt_action "Loading> " || true
|
|
2520
2550
|
|
|
2521
2551
|
if [[ "${should_warm_bun}" -eq 1 ]]; then
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2552
|
+
(
|
|
2553
|
+
FPF_IPC_MANAGER_OVERRIDE="${manager_override}" \
|
|
2554
|
+
FPF_IPC_FALLBACK_FILE="${fallback_file}" \
|
|
2555
|
+
manager_search_entries "bun" "${query}" >/dev/null 2>&1 || true
|
|
2556
|
+
) &
|
|
2525
2557
|
fi
|
|
2526
2558
|
|
|
2527
2559
|
run_ipc_reload_action "${query}" || send_fzf_prompt_action "Search> " || true
|
|
@@ -2795,6 +2827,7 @@ run_fuzzy_selector() {
|
|
|
2795
2827
|
fzf_args+=(--bind="ctrl-r:reload:${reload_cmd}")
|
|
2796
2828
|
fi
|
|
2797
2829
|
elif [[ -n "${reload_cmd}" ]]; then
|
|
2830
|
+
fzf_args+=(--bind="change:reload:${reload_cmd}")
|
|
2798
2831
|
fzf_args+=(--bind="ctrl-r:reload:${reload_cmd}")
|
|
2799
2832
|
fi
|
|
2800
2833
|
|
|
@@ -3035,17 +3068,39 @@ main() {
|
|
|
3035
3068
|
local selected_managers=()
|
|
3036
3069
|
local selected_packages=()
|
|
3037
3070
|
local selected_line
|
|
3071
|
+
local selected_line_number=0
|
|
3072
|
+
local selected_parse_failures=0
|
|
3038
3073
|
local selected_manager
|
|
3039
3074
|
local selected_pkg
|
|
3075
|
+
local normalized_selected_manager
|
|
3040
3076
|
while IFS= read -r selected_line; do
|
|
3077
|
+
selected_line_number=$((selected_line_number + 1))
|
|
3041
3078
|
[[ -n "${selected_line}" ]] || continue
|
|
3042
3079
|
IFS=$'\t' read -r selected_manager selected_pkg _ <<<"${selected_line}"
|
|
3043
|
-
|
|
3044
|
-
|
|
3080
|
+
selected_manager="$(trim_whitespace "${selected_manager}")"
|
|
3081
|
+
selected_pkg="$(trim_whitespace "${selected_pkg}")"
|
|
3082
|
+
|
|
3083
|
+
if [[ -z "${selected_manager}" || -z "${selected_pkg}" ]]; then
|
|
3084
|
+
selected_parse_failures=$((selected_parse_failures + 1))
|
|
3085
|
+
log_selection_parse_skip "${selected_line_number}" "missing manager/package fields" "${selected_line}"
|
|
3086
|
+
continue
|
|
3087
|
+
fi
|
|
3088
|
+
|
|
3089
|
+
normalized_selected_manager="$(normalize_manager "${selected_manager}")"
|
|
3090
|
+
if ! manager_supported "${normalized_selected_manager}"; then
|
|
3091
|
+
selected_parse_failures=$((selected_parse_failures + 1))
|
|
3092
|
+
log_selection_parse_skip "${selected_line_number}" "unsupported manager '${normalized_selected_manager}'" "${selected_line}"
|
|
3093
|
+
continue
|
|
3094
|
+
fi
|
|
3095
|
+
|
|
3096
|
+
selected_managers+=("${normalized_selected_manager}")
|
|
3045
3097
|
selected_packages+=("${selected_pkg}")
|
|
3046
3098
|
done <<<"${selected}"
|
|
3047
3099
|
|
|
3048
3100
|
if [[ "${#selected_packages[@]}" -eq 0 ]]; then
|
|
3101
|
+
if [[ "${selected_parse_failures}" -gt 0 ]] && selection_debug_enabled; then
|
|
3102
|
+
log "Debug(selection): no executable entries after parsing ${selected_parse_failures} selected line(s)"
|
|
3103
|
+
fi
|
|
3049
3104
|
log "Selection canceled"
|
|
3050
3105
|
exit 0
|
|
3051
3106
|
fi
|