fpf-cli 1.1.0 → 1.4.0
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/LICENSE +201 -674
- package/README.md +8 -2
- package/fpf +225 -13
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -36,15 +36,18 @@ By default, `fpf` auto-detects your package manager.
|
|
|
36
36
|
|
|
37
37
|
On macOS, default auto mode uses both `brew` and `bun` together.
|
|
38
38
|
|
|
39
|
+
On Linux, default auto mode uses your distro manager plus installed cross-platform managers (`snap`, `flatpak`, `brew`, `npm`, `bun`).
|
|
40
|
+
|
|
41
|
+
On Windows (Git Bash / MSYS / Cygwin), default auto mode uses installed Windows managers (`winget`, `choco`, `scoop`) plus `npm` and `bun`.
|
|
42
|
+
|
|
39
43
|
## Supported Managers
|
|
40
44
|
|
|
41
45
|
- Linux: `apt`, `dnf`, `pacman`, `zypper`, `emerge`
|
|
46
|
+
- Windows: `winget`, `choco`, `scoop`
|
|
42
47
|
- Cross-platform: `snap`, `flatpak`
|
|
43
48
|
- Dev: `npm`, `bun`
|
|
44
49
|
- macOS: `brew`
|
|
45
50
|
|
|
46
|
-
(`winget` intentionally not included.)
|
|
47
|
-
|
|
48
51
|
## Manager Override Flags
|
|
49
52
|
|
|
50
53
|
- `-ap` apt
|
|
@@ -53,6 +56,9 @@ On macOS, default auto mode uses both `brew` and `bun` together.
|
|
|
53
56
|
- `-zy` zypper
|
|
54
57
|
- `-em` emerge
|
|
55
58
|
- `-br` brew
|
|
59
|
+
- `-wg` winget
|
|
60
|
+
- `-ch` choco
|
|
61
|
+
- `-sc` scoop
|
|
56
62
|
- `-sn` snap
|
|
57
63
|
- `-fp` flatpak
|
|
58
64
|
- `-np` npm
|
package/fpf
CHANGED
|
@@ -43,13 +43,13 @@ run_as_root() {
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
manager_list() {
|
|
46
|
-
printf "%s\n" "apt dnf pacman zypper emerge brew snap flatpak npm bun"
|
|
46
|
+
printf "%s\n" "apt dnf pacman zypper emerge brew winget choco scoop snap flatpak npm bun"
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
manager_supported() {
|
|
50
50
|
local manager="$1"
|
|
51
51
|
case "${manager}" in
|
|
52
|
-
apt|dnf|pacman|zypper|emerge|brew|snap|flatpak|npm|bun)
|
|
52
|
+
apt|dnf|pacman|zypper|emerge|brew|winget|choco|scoop|snap|flatpak|npm|bun)
|
|
53
53
|
return 0
|
|
54
54
|
;;
|
|
55
55
|
*)
|
|
@@ -79,6 +79,15 @@ manager_command_ready() {
|
|
|
79
79
|
brew)
|
|
80
80
|
command_exists brew
|
|
81
81
|
;;
|
|
82
|
+
winget)
|
|
83
|
+
command_exists winget
|
|
84
|
+
;;
|
|
85
|
+
choco)
|
|
86
|
+
command_exists choco
|
|
87
|
+
;;
|
|
88
|
+
scoop)
|
|
89
|
+
command_exists scoop
|
|
90
|
+
;;
|
|
82
91
|
snap)
|
|
83
92
|
command_exists snap
|
|
84
93
|
;;
|
|
@@ -127,6 +136,9 @@ manager_label() {
|
|
|
127
136
|
zypper) printf "Zypper" ;;
|
|
128
137
|
emerge) printf "Portage (emerge)" ;;
|
|
129
138
|
brew) printf "Homebrew" ;;
|
|
139
|
+
winget) printf "WinGet" ;;
|
|
140
|
+
choco) printf "Chocolatey" ;;
|
|
141
|
+
scoop) printf "Scoop" ;;
|
|
130
142
|
snap) printf "Snap" ;;
|
|
131
143
|
flatpak) printf "Flatpak" ;;
|
|
132
144
|
npm) printf "npm" ;;
|
|
@@ -146,6 +158,14 @@ detect_default_manager() {
|
|
|
146
158
|
fi
|
|
147
159
|
fi
|
|
148
160
|
|
|
161
|
+
if [[ "${os}" == MINGW* || "${os}" == MSYS* || "${os}" == CYGWIN* || "${os}" == "Windows_NT" ]]; then
|
|
162
|
+
if command_exists winget; then printf "winget"; return; fi
|
|
163
|
+
if command_exists choco; then printf "choco"; return; fi
|
|
164
|
+
if command_exists scoop; then printf "scoop"; return; fi
|
|
165
|
+
if command_exists npm; then printf "npm"; return; fi
|
|
166
|
+
if command_exists bun; then printf "bun"; return; fi
|
|
167
|
+
fi
|
|
168
|
+
|
|
149
169
|
if [[ "${os}" == "Linux" ]]; then
|
|
150
170
|
local distro_id=""
|
|
151
171
|
local distro_like=""
|
|
@@ -196,6 +216,9 @@ detect_default_manager() {
|
|
|
196
216
|
fi
|
|
197
217
|
|
|
198
218
|
if command_exists brew; then printf "brew"; return; fi
|
|
219
|
+
if command_exists winget; then printf "winget"; return; fi
|
|
220
|
+
if command_exists choco; then printf "choco"; return; fi
|
|
221
|
+
if command_exists scoop; then printf "scoop"; return; fi
|
|
199
222
|
if command_exists npm; then printf "npm"; return; fi
|
|
200
223
|
if command_exists bun; then printf "bun"; return; fi
|
|
201
224
|
|
|
@@ -204,24 +227,67 @@ detect_default_manager() {
|
|
|
204
227
|
|
|
205
228
|
detect_default_managers() {
|
|
206
229
|
local os
|
|
230
|
+
local emitted=""
|
|
231
|
+
local primary_manager=""
|
|
232
|
+
|
|
233
|
+
add_detected_manager() {
|
|
234
|
+
local manager_name="$1"
|
|
235
|
+
[[ -n "${manager_name}" ]] || return
|
|
236
|
+
case " ${emitted} " in
|
|
237
|
+
*" ${manager_name} "*)
|
|
238
|
+
return
|
|
239
|
+
;;
|
|
240
|
+
esac
|
|
241
|
+
if manager_command_ready "${manager_name}"; then
|
|
242
|
+
printf "%s\n" "${manager_name}"
|
|
243
|
+
emitted+=" ${manager_name}"
|
|
244
|
+
fi
|
|
245
|
+
}
|
|
246
|
+
|
|
207
247
|
os="$(uname -s)"
|
|
208
248
|
|
|
209
249
|
if [[ "${os}" == "Darwin" ]]; then
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
250
|
+
add_detected_manager "brew"
|
|
251
|
+
add_detected_manager "bun"
|
|
252
|
+
if [[ -n "${emitted}" ]]; then
|
|
253
|
+
return
|
|
214
254
|
fi
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
255
|
+
fi
|
|
256
|
+
|
|
257
|
+
if [[ "${os}" == MINGW* || "${os}" == MSYS* || "${os}" == CYGWIN* || "${os}" == "Windows_NT" ]]; then
|
|
258
|
+
add_detected_manager "winget"
|
|
259
|
+
add_detected_manager "choco"
|
|
260
|
+
add_detected_manager "scoop"
|
|
261
|
+
add_detected_manager "npm"
|
|
262
|
+
add_detected_manager "bun"
|
|
263
|
+
if [[ -n "${emitted}" ]]; then
|
|
264
|
+
return
|
|
218
265
|
fi
|
|
219
|
-
|
|
266
|
+
fi
|
|
267
|
+
|
|
268
|
+
if [[ "${os}" == "Linux" ]]; then
|
|
269
|
+
primary_manager="$(detect_default_manager)"
|
|
270
|
+
add_detected_manager "${primary_manager}"
|
|
271
|
+
|
|
272
|
+
add_detected_manager "snap"
|
|
273
|
+
add_detected_manager "flatpak"
|
|
274
|
+
add_detected_manager "brew"
|
|
275
|
+
add_detected_manager "npm"
|
|
276
|
+
add_detected_manager "bun"
|
|
277
|
+
|
|
278
|
+
if [[ -n "${emitted}" ]]; then
|
|
220
279
|
return
|
|
221
280
|
fi
|
|
222
281
|
fi
|
|
223
282
|
|
|
224
|
-
|
|
283
|
+
primary_manager="$(detect_default_manager)"
|
|
284
|
+
add_detected_manager "${primary_manager}"
|
|
285
|
+
|
|
286
|
+
if [[ -n "${emitted}" ]]; then
|
|
287
|
+
return
|
|
288
|
+
fi
|
|
289
|
+
|
|
290
|
+
die "Unable to auto-detect supported package managers. Use --manager."
|
|
225
291
|
}
|
|
226
292
|
|
|
227
293
|
join_manager_labels() {
|
|
@@ -283,6 +349,9 @@ Manager options (one or two-letter style):
|
|
|
283
349
|
-zy, --zypper Use Zypper
|
|
284
350
|
-em, --emerge Use Portage (emerge)
|
|
285
351
|
-br, --brew Use Homebrew
|
|
352
|
+
-wg, --winget Use WinGet
|
|
353
|
+
-ch, --choco Use Chocolatey
|
|
354
|
+
-sc, --scoop Use Scoop
|
|
286
355
|
-sn, --snap Use Snap
|
|
287
356
|
-fp, --flatpak Use Flatpak
|
|
288
357
|
-np, --npm Use npm (global packages)
|
|
@@ -296,7 +365,9 @@ Examples:
|
|
|
296
365
|
${SCRIPT_NAME} -br -R wget
|
|
297
366
|
${SCRIPT_NAME} -sn firefox
|
|
298
367
|
${SCRIPT_NAME} -fp org.gimp.GIMP
|
|
368
|
+
${SCRIPT_NAME} -wg Microsoft.VisualStudioCode
|
|
299
369
|
${SCRIPT_NAME} -np eslint
|
|
370
|
+
${SCRIPT_NAME} -ch git
|
|
300
371
|
${SCRIPT_NAME} -m apt ripgrep
|
|
301
372
|
|
|
302
373
|
Supported managers:
|
|
@@ -353,6 +424,15 @@ parse_args() {
|
|
|
353
424
|
-br|--brew)
|
|
354
425
|
MANAGER_OVERRIDE="brew"
|
|
355
426
|
;;
|
|
427
|
+
-wg|--winget)
|
|
428
|
+
MANAGER_OVERRIDE="winget"
|
|
429
|
+
;;
|
|
430
|
+
-ch|--choco)
|
|
431
|
+
MANAGER_OVERRIDE="choco"
|
|
432
|
+
;;
|
|
433
|
+
-sc|--scoop)
|
|
434
|
+
MANAGER_OVERRIDE="scoop"
|
|
435
|
+
;;
|
|
356
436
|
-sn|--snap)
|
|
357
437
|
MANAGER_OVERRIDE="snap"
|
|
358
438
|
;;
|
|
@@ -418,7 +498,7 @@ manager_search_entries() {
|
|
|
418
498
|
|
|
419
499
|
if [[ -z "${effective_query}" ]]; then
|
|
420
500
|
case "${manager}" in
|
|
421
|
-
apt|dnf|pacman|zypper|emerge|snap|flatpak|npm|bun)
|
|
501
|
+
apt|dnf|pacman|zypper|emerge|winget|choco|scoop|snap|flatpak|npm|bun)
|
|
422
502
|
effective_query="a"
|
|
423
503
|
;;
|
|
424
504
|
brew)
|
|
@@ -490,6 +570,45 @@ manager_search_entries() {
|
|
|
490
570
|
brew search "${effective_query}" 2>/dev/null |
|
|
491
571
|
awk 'NF > 0 { print $1 "\t-" }'
|
|
492
572
|
;;
|
|
573
|
+
winget)
|
|
574
|
+
winget search "${effective_query}" --source winget --accept-source-agreements --disable-interactivity 2>/dev/null |
|
|
575
|
+
awk '
|
|
576
|
+
/^[[:space:]]*$/ { next }
|
|
577
|
+
/^Name[[:space:]]+Id[[:space:]]+/ { next }
|
|
578
|
+
/^[-[:space:]]+$/ { next }
|
|
579
|
+
{
|
|
580
|
+
pkg = ""
|
|
581
|
+
desc = "-"
|
|
582
|
+
if (NF >= 2) {
|
|
583
|
+
pkg = $2
|
|
584
|
+
} else if (NF >= 1) {
|
|
585
|
+
pkg = $1
|
|
586
|
+
}
|
|
587
|
+
if (pkg != "") {
|
|
588
|
+
print pkg "\t" desc
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
'
|
|
592
|
+
;;
|
|
593
|
+
choco)
|
|
594
|
+
choco search "${effective_query}" --limit-output 2>/dev/null |
|
|
595
|
+
awk -F'|' 'NF >= 1 && $1 != "" { ver=$2; if (ver == "") ver="-"; print $1 "\tversion " ver }'
|
|
596
|
+
;;
|
|
597
|
+
scoop)
|
|
598
|
+
scoop search "${effective_query}" 2>/dev/null |
|
|
599
|
+
awk '
|
|
600
|
+
/^[[:space:]]*$/ { next }
|
|
601
|
+
/^[-[:space:]]+$/ { next }
|
|
602
|
+
/^Name[[:space:]]+/ { next }
|
|
603
|
+
{
|
|
604
|
+
name = $1
|
|
605
|
+
$1 = ""
|
|
606
|
+
sub(/^[[:space:]]+/, "", $0)
|
|
607
|
+
if ($0 == "") $0 = "-"
|
|
608
|
+
print name "\t" $0
|
|
609
|
+
}
|
|
610
|
+
'
|
|
611
|
+
;;
|
|
493
612
|
snap)
|
|
494
613
|
snap find "${effective_query}" 2>/dev/null |
|
|
495
614
|
awk '
|
|
@@ -579,6 +698,47 @@ manager_installed_entries() {
|
|
|
579
698
|
brew list --versions 2>/dev/null |
|
|
580
699
|
awk '{ name=$1; $1=""; sub(/^[[:space:]]+/, "", $0); if ($0 == "") $0="installed"; print name "\t" $0 }'
|
|
581
700
|
;;
|
|
701
|
+
winget)
|
|
702
|
+
winget list --source winget --accept-source-agreements --disable-interactivity 2>/dev/null |
|
|
703
|
+
awk '
|
|
704
|
+
/^[[:space:]]*$/ { next }
|
|
705
|
+
/^Name[[:space:]]+Id[[:space:]]+/ { next }
|
|
706
|
+
/^[-[:space:]]+$/ { next }
|
|
707
|
+
{
|
|
708
|
+
pkg = ""
|
|
709
|
+
ver = "installed"
|
|
710
|
+
if (NF >= 3) {
|
|
711
|
+
pkg = $2
|
|
712
|
+
ver = $3
|
|
713
|
+
} else if (NF >= 2) {
|
|
714
|
+
pkg = $1
|
|
715
|
+
ver = $2
|
|
716
|
+
} else if (NF >= 1) {
|
|
717
|
+
pkg = $1
|
|
718
|
+
}
|
|
719
|
+
if (pkg != "") {
|
|
720
|
+
print pkg "\t" ver
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
'
|
|
724
|
+
;;
|
|
725
|
+
choco)
|
|
726
|
+
choco list --local-only --limit-output 2>/dev/null |
|
|
727
|
+
awk -F'|' 'NF >= 1 && $1 != "" { ver=$2; if (ver == "") ver="installed"; print $1 "\t" ver }'
|
|
728
|
+
;;
|
|
729
|
+
scoop)
|
|
730
|
+
scoop list 2>/dev/null |
|
|
731
|
+
awk '
|
|
732
|
+
/^[[:space:]]*$/ { next }
|
|
733
|
+
/^[-[:space:]]+$/ { next }
|
|
734
|
+
/^Name[[:space:]]+/ { next }
|
|
735
|
+
{
|
|
736
|
+
ver = $2
|
|
737
|
+
if (ver == "") ver = "installed"
|
|
738
|
+
print $1 "\t" ver
|
|
739
|
+
}
|
|
740
|
+
'
|
|
741
|
+
;;
|
|
582
742
|
snap)
|
|
583
743
|
snap list 2>/dev/null |
|
|
584
744
|
awk 'NR > 1 { print $1 "\t" $2 }'
|
|
@@ -662,6 +822,15 @@ manager_preview_command() {
|
|
|
662
822
|
brew)
|
|
663
823
|
printf '%s' 'pkg={1}; brew info "$pkg" 2>/dev/null'
|
|
664
824
|
;;
|
|
825
|
+
winget)
|
|
826
|
+
printf '%s' 'pkg={1}; winget show --id "$pkg" --exact --source winget --accept-source-agreements --disable-interactivity 2>/dev/null'
|
|
827
|
+
;;
|
|
828
|
+
choco)
|
|
829
|
+
printf '%s' 'pkg={1}; choco info "$pkg" 2>/dev/null'
|
|
830
|
+
;;
|
|
831
|
+
scoop)
|
|
832
|
+
printf '%s' 'pkg={1}; scoop info "$pkg" 2>/dev/null'
|
|
833
|
+
;;
|
|
665
834
|
snap)
|
|
666
835
|
printf '%s' 'pkg={1}; snap info "$pkg" 2>/dev/null'
|
|
667
836
|
;;
|
|
@@ -700,6 +869,18 @@ manager_install() {
|
|
|
700
869
|
brew)
|
|
701
870
|
brew install "$@"
|
|
702
871
|
;;
|
|
872
|
+
winget)
|
|
873
|
+
local pkg
|
|
874
|
+
for pkg in "$@"; do
|
|
875
|
+
winget install --id "${pkg}" --exact --source winget --accept-package-agreements --accept-source-agreements --disable-interactivity
|
|
876
|
+
done
|
|
877
|
+
;;
|
|
878
|
+
choco)
|
|
879
|
+
choco install "$@" -y
|
|
880
|
+
;;
|
|
881
|
+
scoop)
|
|
882
|
+
scoop install "$@"
|
|
883
|
+
;;
|
|
703
884
|
snap)
|
|
704
885
|
local pkg
|
|
705
886
|
for pkg in "$@"; do
|
|
@@ -745,6 +926,18 @@ manager_remove() {
|
|
|
745
926
|
brew)
|
|
746
927
|
brew uninstall "$@"
|
|
747
928
|
;;
|
|
929
|
+
winget)
|
|
930
|
+
local pkg
|
|
931
|
+
for pkg in "$@"; do
|
|
932
|
+
winget uninstall --id "${pkg}" --exact --disable-interactivity
|
|
933
|
+
done
|
|
934
|
+
;;
|
|
935
|
+
choco)
|
|
936
|
+
choco uninstall "$@" -y
|
|
937
|
+
;;
|
|
938
|
+
scoop)
|
|
939
|
+
scoop uninstall "$@"
|
|
940
|
+
;;
|
|
748
941
|
snap)
|
|
749
942
|
run_as_root snap remove "$@"
|
|
750
943
|
;;
|
|
@@ -783,6 +976,15 @@ manager_show_info() {
|
|
|
783
976
|
brew)
|
|
784
977
|
brew info "${package}" 2>/dev/null
|
|
785
978
|
;;
|
|
979
|
+
winget)
|
|
980
|
+
winget show --id "${package}" --exact --source winget --accept-source-agreements --disable-interactivity 2>/dev/null
|
|
981
|
+
;;
|
|
982
|
+
choco)
|
|
983
|
+
choco info "${package}" 2>/dev/null
|
|
984
|
+
;;
|
|
985
|
+
scoop)
|
|
986
|
+
scoop info "${package}" 2>/dev/null
|
|
987
|
+
;;
|
|
786
988
|
snap)
|
|
787
989
|
snap info "${package}" 2>/dev/null
|
|
788
990
|
;;
|
|
@@ -824,6 +1026,16 @@ manager_update() {
|
|
|
824
1026
|
brew update
|
|
825
1027
|
brew upgrade
|
|
826
1028
|
;;
|
|
1029
|
+
winget)
|
|
1030
|
+
winget upgrade --all --source winget --accept-package-agreements --accept-source-agreements --disable-interactivity
|
|
1031
|
+
;;
|
|
1032
|
+
choco)
|
|
1033
|
+
choco upgrade all -y
|
|
1034
|
+
;;
|
|
1035
|
+
scoop)
|
|
1036
|
+
scoop update
|
|
1037
|
+
scoop update "*"
|
|
1038
|
+
;;
|
|
827
1039
|
snap)
|
|
828
1040
|
run_as_root snap refresh
|
|
829
1041
|
;;
|
|
@@ -862,7 +1074,7 @@ run_fuzzy_selector() {
|
|
|
862
1074
|
local header_line="$3"
|
|
863
1075
|
local preview_cmd
|
|
864
1076
|
|
|
865
|
-
preview_cmd='bash -c '\''mgr="$1"; pkg="$2"; case "$mgr" in apt) apt-cache show "$pkg" 2>/dev/null; printf "\n"; dpkg -L "$pkg" 2>/dev/null ;; dnf) dnf info "$pkg" 2>/dev/null; printf "\n"; rpm -ql "$pkg" 2>/dev/null ;; pacman) pacman -Si "$pkg" 2>/dev/null; printf "\n"; pacman -Fl "$pkg" 2>/dev/null | awk "{print \$2}" ;; zypper) zypper --non-interactive info "$pkg" 2>/dev/null ;; emerge) emerge --search --color=n "$pkg" 2>/dev/null ;; brew) brew info "$pkg" 2>/dev/null ;; snap) snap info "$pkg" 2>/dev/null ;; flatpak) flatpak info "$pkg" 2>/dev/null || flatpak remote-info flathub "$pkg" 2>/dev/null ;; npm) npm view "$pkg" 2>/dev/null ;; bun) bun info "$pkg" 2>/dev/null || npm view "$pkg" 2>/dev/null ;; esac'\'' _ {1} {2}'
|
|
1077
|
+
preview_cmd='bash -c '\''mgr="$1"; pkg="$2"; case "$mgr" in apt) apt-cache show "$pkg" 2>/dev/null; printf "\n"; dpkg -L "$pkg" 2>/dev/null ;; dnf) dnf info "$pkg" 2>/dev/null; printf "\n"; rpm -ql "$pkg" 2>/dev/null ;; pacman) pacman -Si "$pkg" 2>/dev/null; printf "\n"; pacman -Fl "$pkg" 2>/dev/null | awk "{print \$2}" ;; zypper) zypper --non-interactive info "$pkg" 2>/dev/null ;; emerge) emerge --search --color=n "$pkg" 2>/dev/null ;; brew) brew info "$pkg" 2>/dev/null ;; winget) winget show --id "$pkg" --exact --source winget --accept-source-agreements --disable-interactivity 2>/dev/null ;; choco) choco info "$pkg" 2>/dev/null ;; scoop) scoop info "$pkg" 2>/dev/null ;; snap) snap info "$pkg" 2>/dev/null ;; flatpak) flatpak info "$pkg" 2>/dev/null || flatpak remote-info flathub "$pkg" 2>/dev/null ;; npm) npm view "$pkg" 2>/dev/null ;; bun) bun info "$pkg" 2>/dev/null || npm view "$pkg" 2>/dev/null ;; esac'\'' _ {1} {2}'
|
|
866
1078
|
|
|
867
1079
|
fzf -q "${query}" -e -m \
|
|
868
1080
|
--delimiter=$'\t' \
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fpf-cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "Cross-platform fuzzy package finder powered by fzf",
|
|
5
5
|
"bin": {
|
|
6
6
|
"fpf": "fpf"
|
|
@@ -19,11 +19,12 @@
|
|
|
19
19
|
"pacman",
|
|
20
20
|
"zypper",
|
|
21
21
|
"brew",
|
|
22
|
+
"winget",
|
|
22
23
|
"npm",
|
|
23
24
|
"bun"
|
|
24
25
|
],
|
|
25
26
|
"author": "Timmy6942025 <timothy.thomas2011@hotmail.com>",
|
|
26
|
-
"license": "
|
|
27
|
+
"license": "Apache-2.0",
|
|
27
28
|
"repository": {
|
|
28
29
|
"type": "git",
|
|
29
30
|
"url": "git+https://github.com/Timmy6942025/fpf-cli.git"
|