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.
Files changed (2) hide show
  1. package/fpf +86 -18
  2. 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.17"
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 port="${FZF_PORT:-}"
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 ! [[ "${port}" =~ ^[0-9]+$ ]] || [[ "${port}" -le 0 || "${port}" -gt 65535 ]]; then
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}" != "bun" ]]; then
2497
- send_fzf_prompt_action "Search> " || true
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
- FPF_IPC_MANAGER_OVERRIDE="${manager_override}" \
2509
- FPF_IPC_FALLBACK_FILE="${fallback_file}" \
2510
- manager_search_entries "bun" "${query}" >/dev/null 2>&1 || {
2511
- send_fzf_prompt_action "Search> " || true
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
- [[ -n "${selected_manager}" && -n "${selected_pkg}" ]] || continue
3029
- selected_managers+=("${selected_manager}")
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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fpf-cli",
3
- "version": "1.6.17",
3
+ "version": "1.6.20",
4
4
  "description": "Cross-platform fuzzy package finder powered by fzf",
5
5
  "bin": {
6
6
  "fpf": "fpf"