fpf-cli 1.6.18 → 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 +56 -3
  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
  }
@@ -2795,6 +2825,7 @@ run_fuzzy_selector() {
2795
2825
  fzf_args+=(--bind="ctrl-r:reload:${reload_cmd}")
2796
2826
  fi
2797
2827
  elif [[ -n "${reload_cmd}" ]]; then
2828
+ fzf_args+=(--bind="change:reload:${reload_cmd}")
2798
2829
  fzf_args+=(--bind="ctrl-r:reload:${reload_cmd}")
2799
2830
  fi
2800
2831
 
@@ -3035,17 +3066,39 @@ main() {
3035
3066
  local selected_managers=()
3036
3067
  local selected_packages=()
3037
3068
  local selected_line
3069
+ local selected_line_number=0
3070
+ local selected_parse_failures=0
3038
3071
  local selected_manager
3039
3072
  local selected_pkg
3073
+ local normalized_selected_manager
3040
3074
  while IFS= read -r selected_line; do
3075
+ selected_line_number=$((selected_line_number + 1))
3041
3076
  [[ -n "${selected_line}" ]] || continue
3042
3077
  IFS=$'\t' read -r selected_manager selected_pkg _ <<<"${selected_line}"
3043
- [[ -n "${selected_manager}" && -n "${selected_pkg}" ]] || continue
3044
- 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}")
3045
3095
  selected_packages+=("${selected_pkg}")
3046
3096
  done <<<"${selected}"
3047
3097
 
3048
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
3049
3102
  log "Selection canceled"
3050
3103
  exit 0
3051
3104
  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.20",
4
4
  "description": "Cross-platform fuzzy package finder powered by fzf",
5
5
  "bin": {
6
6
  "fpf": "fpf"