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.
Files changed (2) hide show
  1. package/fpf +63 -8
  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.18"
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="reload(${reload_command})+change-prompt(Search> )"
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
- FPF_IPC_MANAGER_OVERRIDE="${manager_override}" \
2523
- FPF_IPC_FALLBACK_FILE="${fallback_file}" \
2524
- manager_search_entries "bun" "${query}" >/dev/null 2>&1 || true
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
- [[ -n "${selected_manager}" && -n "${selected_pkg}" ]] || continue
3044
- selected_managers+=("${selected_manager}")
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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fpf-cli",
3
- "version": "1.6.18",
3
+ "version": "1.6.21",
4
4
  "description": "Cross-platform fuzzy package finder powered by fzf",
5
5
  "bin": {
6
6
  "fpf": "fpf"