fpf-cli 1.6.37 → 1.6.38
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 +58 -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.38"
|
|
7
7
|
TMP_ROOT="${TMPDIR:-/tmp}/fpf"
|
|
8
8
|
SESSION_TMP_ROOT=""
|
|
9
9
|
HELP_FILE=""
|
|
@@ -2853,9 +2853,23 @@ manager_installed_names_cached() {
|
|
|
2853
2853
|
mark_installed_packages() {
|
|
2854
2854
|
local source_file="$1"
|
|
2855
2855
|
local output_file="$2"
|
|
2856
|
+
local unique_managers_file
|
|
2857
|
+
local manager_counts_file
|
|
2856
2858
|
local installed_file
|
|
2857
2859
|
local installed_map_file
|
|
2860
|
+
local installed_part_file
|
|
2861
|
+
local manager_match_count
|
|
2862
|
+
local installed_match_count
|
|
2863
|
+
local installed_part_files=()
|
|
2864
|
+
local gather_pids=()
|
|
2858
2865
|
local manager
|
|
2866
|
+
local gather_pid
|
|
2867
|
+
|
|
2868
|
+
unique_managers_file="$(mktemp "${SESSION_TMP_ROOT}/installed-managers.XXXXXX")"
|
|
2869
|
+
awk -F'\t' 'NF >= 1 && $1 != "" { print $1 }' "${source_file}" | awk '!seen[$0]++' >"${unique_managers_file}"
|
|
2870
|
+
|
|
2871
|
+
manager_counts_file="$(mktemp "${SESSION_TMP_ROOT}/installed-counts.XXXXXX")"
|
|
2872
|
+
awk -F'\t' 'NF >= 1 && $1 != "" { counts[$1]++ } END { for (mgr in counts) print mgr "\t" counts[mgr] }' "${source_file}" >"${manager_counts_file}"
|
|
2859
2873
|
|
|
2860
2874
|
if [[ "${FPF_SKIP_INSTALLED_MARKERS:-0}" == "1" ]]; then
|
|
2861
2875
|
awk -F'\t' '
|
|
@@ -2865,6 +2879,11 @@ mark_installed_packages() {
|
|
|
2865
2879
|
print $1 "\t" $2 "\t " desc
|
|
2866
2880
|
}
|
|
2867
2881
|
' "${source_file}" >"${output_file}"
|
|
2882
|
+
while IFS= read -r manager; do
|
|
2883
|
+
[[ -n "${manager}" ]] || continue
|
|
2884
|
+
loading_progress_mark_done "${manager}" "installed marker check skipped"
|
|
2885
|
+
done <"${unique_managers_file}"
|
|
2886
|
+
rm -f "${unique_managers_file}" "${manager_counts_file}"
|
|
2868
2887
|
return
|
|
2869
2888
|
fi
|
|
2870
2889
|
|
|
@@ -2873,13 +2892,39 @@ mark_installed_packages() {
|
|
|
2873
2892
|
|
|
2874
2893
|
while IFS= read -r manager; do
|
|
2875
2894
|
[[ -n "${manager}" ]] || continue
|
|
2876
|
-
|
|
2877
|
-
|
|
2878
|
-
|
|
2879
|
-
|
|
2895
|
+
installed_part_file="$(mktemp "${SESSION_TMP_ROOT}/installed-map.${manager}.XXXXXX")"
|
|
2896
|
+
installed_part_files+=("${installed_part_file}")
|
|
2897
|
+
|
|
2898
|
+
(
|
|
2899
|
+
manager_match_count="$(awk -F'\t' -v mgr="${manager}" '$1 == mgr { print $2; found=1; exit } END { if (!found) print 0 }' "${manager_counts_file}")"
|
|
2900
|
+
if ! [[ "${manager_match_count}" =~ ^[0-9]+$ ]]; then
|
|
2901
|
+
manager_match_count=0
|
|
2902
|
+
fi
|
|
2903
|
+
|
|
2904
|
+
loading_progress_mark_running "${manager}" "marking installed status for ${manager_match_count} matches"
|
|
2905
|
+
installed_file="$(mktemp "${SESSION_TMP_ROOT}/installed.${manager}.XXXXXX")"
|
|
2906
|
+
manager_installed_names_cached "${manager}" "${installed_file}" || true
|
|
2907
|
+
installed_match_count=0
|
|
2908
|
+
if [[ -s "${installed_file}" ]]; then
|
|
2909
|
+
awk -F'\t' -v mgr="${manager}" 'NF > 0 && $1 != "" { print mgr "\t" $1 }' "${installed_file}" >"${installed_part_file}"
|
|
2910
|
+
installed_match_count="$(awk 'END { print NR + 0 }' "${installed_part_file}")"
|
|
2911
|
+
fi
|
|
2912
|
+
rm -f "${installed_file}"
|
|
2913
|
+
loading_progress_mark_done "${manager}" "${manager_match_count} matches, ${installed_match_count} installed"
|
|
2914
|
+
) &
|
|
2915
|
+
gather_pids+=("$!")
|
|
2916
|
+
done <"${unique_managers_file}"
|
|
2917
|
+
|
|
2918
|
+
for gather_pid in "${gather_pids[@]-}"; do
|
|
2919
|
+
wait "${gather_pid}" || true
|
|
2920
|
+
done
|
|
2921
|
+
|
|
2922
|
+
for installed_part_file in "${installed_part_files[@]-}"; do
|
|
2923
|
+
if [[ -s "${installed_part_file}" ]]; then
|
|
2924
|
+
cat "${installed_part_file}" >>"${installed_map_file}"
|
|
2880
2925
|
fi
|
|
2881
|
-
rm -f "${
|
|
2882
|
-
done
|
|
2926
|
+
rm -f "${installed_part_file}"
|
|
2927
|
+
done
|
|
2883
2928
|
|
|
2884
2929
|
awk -F'\t' '
|
|
2885
2930
|
FILENAME == ARGV[1] {
|
|
@@ -2898,6 +2943,7 @@ mark_installed_packages() {
|
|
|
2898
2943
|
}
|
|
2899
2944
|
' "${installed_map_file}" "${source_file}" >"${output_file}"
|
|
2900
2945
|
|
|
2946
|
+
rm -f "${unique_managers_file}" "${manager_counts_file}"
|
|
2901
2947
|
rm -f "${installed_map_file}"
|
|
2902
2948
|
}
|
|
2903
2949
|
|
|
@@ -2966,7 +3012,7 @@ collect_search_display_rows() {
|
|
|
2966
3012
|
if [[ -s "${part_file}" ]]; then
|
|
2967
3013
|
result_count="$(awk 'END { print NR + 0 }' "${part_file}")"
|
|
2968
3014
|
fi
|
|
2969
|
-
|
|
3015
|
+
loading_progress_mark_running "${manager}" "${result_count} matches indexed; waiting for installed check"
|
|
2970
3016
|
) &
|
|
2971
3017
|
gather_pids+=("$!")
|
|
2972
3018
|
done
|
|
@@ -2994,6 +3040,10 @@ collect_search_display_rows() {
|
|
|
2994
3040
|
awk -v limit="${query_limit}" 'NR <= limit' "${output_file}" >"${output_file}.limited"
|
|
2995
3041
|
mv "${output_file}.limited" "${output_file}"
|
|
2996
3042
|
fi
|
|
3043
|
+
else
|
|
3044
|
+
for manager in "${managers[@]-}"; do
|
|
3045
|
+
loading_progress_mark_done "${manager}" "0 packages matched"
|
|
3046
|
+
done
|
|
2997
3047
|
fi
|
|
2998
3048
|
|
|
2999
3049
|
rm -f "${merged_source_file}" "${merged_marked_file}"
|