fpf-cli 1.6.17 → 1.6.20
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 +86 -18
- 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
|
}
|
|
@@ -2391,14 +2421,32 @@ fzf_supports_listen() {
|
|
|
2391
2421
|
|
|
2392
2422
|
send_fzf_listen_action() {
|
|
2393
2423
|
local action_payload="$1"
|
|
2394
|
-
local
|
|
2424
|
+
local listen_target="${FZF_PORT:-}"
|
|
2395
2425
|
local host="127.0.0.1"
|
|
2426
|
+
local port=""
|
|
2396
2427
|
local payload_size
|
|
2397
2428
|
|
|
2398
|
-
if
|
|
2429
|
+
if [[ "${listen_target}" =~ ^[0-9]+$ ]]; then
|
|
2430
|
+
port="${listen_target}"
|
|
2431
|
+
elif [[ "${listen_target}" =~ ^([^:]+):([0-9]+)$ ]]; then
|
|
2432
|
+
host="${BASH_REMATCH[1]}"
|
|
2433
|
+
port="${BASH_REMATCH[2]}"
|
|
2434
|
+
elif [[ "${listen_target}" =~ ^https?://([^:/]+):([0-9]+)$ ]]; then
|
|
2435
|
+
host="${BASH_REMATCH[1]}"
|
|
2436
|
+
port="${BASH_REMATCH[2]}"
|
|
2437
|
+
elif [[ "${listen_target}" =~ ^\[([^]]+)\]:([0-9]+)$ ]]; then
|
|
2438
|
+
host="${BASH_REMATCH[1]}"
|
|
2439
|
+
port="${BASH_REMATCH[2]}"
|
|
2440
|
+
fi
|
|
2441
|
+
|
|
2442
|
+
if [[ -z "${port}" ]] || ! [[ "${port}" =~ ^[0-9]+$ ]] || [[ "${port}" -le 0 || "${port}" -gt 65535 ]]; then
|
|
2399
2443
|
return 1
|
|
2400
2444
|
fi
|
|
2401
2445
|
|
|
2446
|
+
if [[ "${host}" == "0.0.0.0" || "${host}" == "*" ]]; then
|
|
2447
|
+
host="127.0.0.1"
|
|
2448
|
+
fi
|
|
2449
|
+
|
|
2402
2450
|
payload_size="$(printf "%s" "${action_payload}" | wc -c | tr -d '[:space:]')"
|
|
2403
2451
|
|
|
2404
2452
|
if command_exists curl; then
|
|
@@ -2471,6 +2519,7 @@ run_ipc_query_notify_action() {
|
|
|
2471
2519
|
local fallback_file="${FPF_IPC_FALLBACK_FILE:-}"
|
|
2472
2520
|
local min_chars="${FPF_RELOAD_MIN_CHARS:-2}"
|
|
2473
2521
|
local target_manager=""
|
|
2522
|
+
local should_warm_bun=0
|
|
2474
2523
|
|
|
2475
2524
|
if ! [[ "${min_chars}" =~ ^[0-9]+$ ]]; then
|
|
2476
2525
|
min_chars=2
|
|
@@ -2493,23 +2542,19 @@ run_ipc_query_notify_action() {
|
|
|
2493
2542
|
target_manager="bun"
|
|
2494
2543
|
fi
|
|
2495
2544
|
|
|
2496
|
-
if [[ "${target_manager}"
|
|
2497
|
-
|
|
2498
|
-
return 0
|
|
2499
|
-
fi
|
|
2500
|
-
|
|
2501
|
-
if ! manager_command_ready bun; then
|
|
2502
|
-
send_fzf_prompt_action "Search> " || true
|
|
2503
|
-
return 0
|
|
2545
|
+
if [[ "${target_manager}" == "bun" ]] && manager_command_ready bun; then
|
|
2546
|
+
should_warm_bun=1
|
|
2504
2547
|
fi
|
|
2505
2548
|
|
|
2506
2549
|
send_fzf_prompt_action "Loading> " || true
|
|
2507
2550
|
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
2551
|
+
if [[ "${should_warm_bun}" -eq 1 ]]; then
|
|
2552
|
+
FPF_IPC_MANAGER_OVERRIDE="${manager_override}" \
|
|
2553
|
+
FPF_IPC_FALLBACK_FILE="${fallback_file}" \
|
|
2554
|
+
manager_search_entries "bun" "${query}" >/dev/null 2>&1 || true
|
|
2555
|
+
fi
|
|
2556
|
+
|
|
2557
|
+
run_ipc_reload_action "${query}" || send_fzf_prompt_action "Search> " || true
|
|
2513
2558
|
}
|
|
2514
2559
|
|
|
2515
2560
|
manager_install() {
|
|
@@ -2780,6 +2825,7 @@ run_fuzzy_selector() {
|
|
|
2780
2825
|
fzf_args+=(--bind="ctrl-r:reload:${reload_cmd}")
|
|
2781
2826
|
fi
|
|
2782
2827
|
elif [[ -n "${reload_cmd}" ]]; then
|
|
2828
|
+
fzf_args+=(--bind="change:reload:${reload_cmd}")
|
|
2783
2829
|
fzf_args+=(--bind="ctrl-r:reload:${reload_cmd}")
|
|
2784
2830
|
fi
|
|
2785
2831
|
|
|
@@ -3020,17 +3066,39 @@ main() {
|
|
|
3020
3066
|
local selected_managers=()
|
|
3021
3067
|
local selected_packages=()
|
|
3022
3068
|
local selected_line
|
|
3069
|
+
local selected_line_number=0
|
|
3070
|
+
local selected_parse_failures=0
|
|
3023
3071
|
local selected_manager
|
|
3024
3072
|
local selected_pkg
|
|
3073
|
+
local normalized_selected_manager
|
|
3025
3074
|
while IFS= read -r selected_line; do
|
|
3075
|
+
selected_line_number=$((selected_line_number + 1))
|
|
3026
3076
|
[[ -n "${selected_line}" ]] || continue
|
|
3027
3077
|
IFS=$'\t' read -r selected_manager selected_pkg _ <<<"${selected_line}"
|
|
3028
|
-
|
|
3029
|
-
|
|
3078
|
+
selected_manager="$(trim_whitespace "${selected_manager}")"
|
|
3079
|
+
selected_pkg="$(trim_whitespace "${selected_pkg}")"
|
|
3080
|
+
|
|
3081
|
+
if [[ -z "${selected_manager}" || -z "${selected_pkg}" ]]; then
|
|
3082
|
+
selected_parse_failures=$((selected_parse_failures + 1))
|
|
3083
|
+
log_selection_parse_skip "${selected_line_number}" "missing manager/package fields" "${selected_line}"
|
|
3084
|
+
continue
|
|
3085
|
+
fi
|
|
3086
|
+
|
|
3087
|
+
normalized_selected_manager="$(normalize_manager "${selected_manager}")"
|
|
3088
|
+
if ! manager_supported "${normalized_selected_manager}"; then
|
|
3089
|
+
selected_parse_failures=$((selected_parse_failures + 1))
|
|
3090
|
+
log_selection_parse_skip "${selected_line_number}" "unsupported manager '${normalized_selected_manager}'" "${selected_line}"
|
|
3091
|
+
continue
|
|
3092
|
+
fi
|
|
3093
|
+
|
|
3094
|
+
selected_managers+=("${normalized_selected_manager}")
|
|
3030
3095
|
selected_packages+=("${selected_pkg}")
|
|
3031
3096
|
done <<<"${selected}"
|
|
3032
3097
|
|
|
3033
3098
|
if [[ "${#selected_packages[@]}" -eq 0 ]]; then
|
|
3099
|
+
if [[ "${selected_parse_failures}" -gt 0 ]] && selection_debug_enabled; then
|
|
3100
|
+
log "Debug(selection): no executable entries after parsing ${selected_parse_failures} selected line(s)"
|
|
3101
|
+
fi
|
|
3034
3102
|
log "Selection canceled"
|
|
3035
3103
|
exit 0
|
|
3036
3104
|
fi
|