@fredlackey/devutils 0.0.8 → 0.0.10
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/package.json +78 -2
- package/src/commands/install.js +15 -0
- package/src/installs/chocolatey.js +9 -0
- package/src/installs/installers.json +44 -22
- package/src/installs/wget.js +9 -4
- package/src/scripts/afk.js +0 -0
- package/src/scripts/backup-all.js +0 -0
- package/src/scripts/backup-source.js +0 -0
- package/src/scripts/brewd.js +0 -0
- package/src/scripts/brewi.js +0 -0
- package/src/scripts/brewr.js +0 -0
- package/src/scripts/brews.js +0 -0
- package/src/scripts/brewu.js +0 -0
- package/src/scripts/c.js +0 -0
- package/src/scripts/ccurl.js +0 -0
- package/src/scripts/certbot-crontab-init.js +0 -0
- package/src/scripts/certbot-init.js +0 -0
- package/src/scripts/ch.js +0 -0
- package/src/scripts/claude-danger.js +0 -0
- package/src/scripts/clean-dev.js +0 -0
- package/src/scripts/clear-dns-cache.js +0 -0
- package/src/scripts/clone.js +0 -0
- package/src/scripts/code-all.js +0 -0
- package/src/scripts/count-files.js +0 -0
- package/src/scripts/count-folders.js +0 -0
- package/src/scripts/count.js +0 -0
- package/src/scripts/d.js +0 -0
- package/src/scripts/datauri.js +0 -0
- package/src/scripts/delete-files.js +0 -0
- package/src/scripts/docker-clean.js +0 -0
- package/src/scripts/dp.js +0 -0
- package/src/scripts/e.js +0 -0
- package/src/scripts/empty-trash.js +0 -0
- package/src/scripts/evm.js +0 -0
- package/src/scripts/fetch-github-repos.js +0 -0
- package/src/scripts/get-channel.js +0 -0
- package/src/scripts/get-course.js +0 -0
- package/src/scripts/get-dependencies.js +0 -0
- package/src/scripts/get-folder.js +0 -0
- package/src/scripts/get-tunes.js +0 -0
- package/src/scripts/get-video.js +0 -0
- package/src/scripts/git-backup.js +0 -0
- package/src/scripts/git-clone.js +0 -0
- package/src/scripts/git-pup.js +0 -0
- package/src/scripts/git-push.js +0 -0
- package/src/scripts/h.js +0 -0
- package/src/scripts/hide-desktop-icons.js +0 -0
- package/src/scripts/hide-hidden-files.js +0 -0
- package/src/scripts/install-dependencies-from.js +0 -0
- package/src/scripts/ips.js +0 -0
- package/src/scripts/iso.js +0 -0
- package/src/scripts/killni.js +0 -0
- package/src/scripts/ll.js +0 -0
- package/src/scripts/local-ip.js +0 -0
- package/src/scripts/m.js +0 -0
- package/src/scripts/map.js +0 -0
- package/src/scripts/mkd.js +92 -45
- package/src/scripts/ncu-update-all.js +0 -0
- package/src/scripts/nginx-init.js +0 -0
- package/src/scripts/npmi.js +0 -0
- package/src/scripts/o.js +0 -0
- package/src/scripts/org-by-date.js +0 -0
- package/src/scripts/p.js +0 -0
- package/src/scripts/packages.js +0 -0
- package/src/scripts/path.js +0 -0
- package/src/scripts/ports.js +0 -0
- package/src/scripts/q.js +0 -0
- package/src/scripts/refresh-files.js +0 -0
- package/src/scripts/remove-smaller-files.js +0 -0
- package/src/scripts/rename-files-with-date.js +0 -0
- package/src/scripts/resize-image.js +0 -0
- package/src/scripts/rm-safe.js +0 -0
- package/src/scripts/s.js +0 -0
- package/src/scripts/set-git-public.js +0 -0
- package/src/scripts/show-desktop-icons.js +0 -0
- package/src/scripts/show-hidden-files.js +0 -0
- package/src/scripts/tpa.js +0 -0
- package/src/scripts/tpo.js +0 -0
- package/src/scripts/u.js +0 -0
- package/src/scripts/vpush.js +0 -0
- package/src/scripts/y.js +0 -0
- package/src/utils/windows/choco.js +82 -0
- package/src/utils/windows/winget.js +45 -0
package/package.json
CHANGED
|
@@ -1,10 +1,86 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fredlackey/devutils",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.10",
|
|
4
4
|
"description": "A globally-installable Node.js CLI toolkit for bootstrapping and configuring development environments across any machine.",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"bin": {
|
|
7
|
-
"dev": "./bin/dev.js"
|
|
7
|
+
"dev": "./bin/dev.js",
|
|
8
|
+
"afk": "./src/scripts/afk.js",
|
|
9
|
+
"backup-all": "./src/scripts/backup-all.js",
|
|
10
|
+
"backup-source": "./src/scripts/backup-source.js",
|
|
11
|
+
"brewd": "./src/scripts/brewd.js",
|
|
12
|
+
"brewi": "./src/scripts/brewi.js",
|
|
13
|
+
"brewr": "./src/scripts/brewr.js",
|
|
14
|
+
"brews": "./src/scripts/brews.js",
|
|
15
|
+
"brewu": "./src/scripts/brewu.js",
|
|
16
|
+
"c": "./src/scripts/c.js",
|
|
17
|
+
"ccurl": "./src/scripts/ccurl.js",
|
|
18
|
+
"certbot-crontab-init": "./src/scripts/certbot-crontab-init.js",
|
|
19
|
+
"certbot-init": "./src/scripts/certbot-init.js",
|
|
20
|
+
"ch": "./src/scripts/ch.js",
|
|
21
|
+
"claude-danger": "./src/scripts/claude-danger.js",
|
|
22
|
+
"clean-dev": "./src/scripts/clean-dev.js",
|
|
23
|
+
"clear-dns-cache": "./src/scripts/clear-dns-cache.js",
|
|
24
|
+
"clone": "./src/scripts/clone.js",
|
|
25
|
+
"code-all": "./src/scripts/code-all.js",
|
|
26
|
+
"count": "./src/scripts/count.js",
|
|
27
|
+
"count-files": "./src/scripts/count-files.js",
|
|
28
|
+
"count-folders": "./src/scripts/count-folders.js",
|
|
29
|
+
"d": "./src/scripts/d.js",
|
|
30
|
+
"datauri": "./src/scripts/datauri.js",
|
|
31
|
+
"delete-files": "./src/scripts/delete-files.js",
|
|
32
|
+
"docker-clean": "./src/scripts/docker-clean.js",
|
|
33
|
+
"dp": "./src/scripts/dp.js",
|
|
34
|
+
"e": "./src/scripts/e.js",
|
|
35
|
+
"empty-trash": "./src/scripts/empty-trash.js",
|
|
36
|
+
"evm": "./src/scripts/evm.js",
|
|
37
|
+
"fetch-github-repos": "./src/scripts/fetch-github-repos.js",
|
|
38
|
+
"get-channel": "./src/scripts/get-channel.js",
|
|
39
|
+
"get-course": "./src/scripts/get-course.js",
|
|
40
|
+
"get-dependencies": "./src/scripts/get-dependencies.js",
|
|
41
|
+
"get-folder": "./src/scripts/get-folder.js",
|
|
42
|
+
"get-tunes": "./src/scripts/get-tunes.js",
|
|
43
|
+
"get-video": "./src/scripts/get-video.js",
|
|
44
|
+
"git-backup": "./src/scripts/git-backup.js",
|
|
45
|
+
"git-clone": "./src/scripts/git-clone.js",
|
|
46
|
+
"git-pup": "./src/scripts/git-pup.js",
|
|
47
|
+
"git-push": "./src/scripts/git-push.js",
|
|
48
|
+
"h": "./src/scripts/h.js",
|
|
49
|
+
"hide-desktop-icons": "./src/scripts/hide-desktop-icons.js",
|
|
50
|
+
"hide-hidden-files": "./src/scripts/hide-hidden-files.js",
|
|
51
|
+
"install-dependencies-from": "./src/scripts/install-dependencies-from.js",
|
|
52
|
+
"ips": "./src/scripts/ips.js",
|
|
53
|
+
"iso": "./src/scripts/iso.js",
|
|
54
|
+
"killni": "./src/scripts/killni.js",
|
|
55
|
+
"ll": "./src/scripts/ll.js",
|
|
56
|
+
"local-ip": "./src/scripts/local-ip.js",
|
|
57
|
+
"m": "./src/scripts/m.js",
|
|
58
|
+
"map": "./src/scripts/map.js",
|
|
59
|
+
"mkd": "./src/scripts/mkd.js",
|
|
60
|
+
"ncu-update-all": "./src/scripts/ncu-update-all.js",
|
|
61
|
+
"nginx-init": "./src/scripts/nginx-init.js",
|
|
62
|
+
"npmi": "./src/scripts/npmi.js",
|
|
63
|
+
"o": "./src/scripts/o.js",
|
|
64
|
+
"org-by-date": "./src/scripts/org-by-date.js",
|
|
65
|
+
"p": "./src/scripts/p.js",
|
|
66
|
+
"packages": "./src/scripts/packages.js",
|
|
67
|
+
"path": "./src/scripts/path.js",
|
|
68
|
+
"ports": "./src/scripts/ports.js",
|
|
69
|
+
"q": "./src/scripts/q.js",
|
|
70
|
+
"refresh-files": "./src/scripts/refresh-files.js",
|
|
71
|
+
"remove-smaller-files": "./src/scripts/remove-smaller-files.js",
|
|
72
|
+
"rename-files-with-date": "./src/scripts/rename-files-with-date.js",
|
|
73
|
+
"resize-image": "./src/scripts/resize-image.js",
|
|
74
|
+
"rm-safe": "./src/scripts/rm-safe.js",
|
|
75
|
+
"s": "./src/scripts/s.js",
|
|
76
|
+
"set-git-public": "./src/scripts/set-git-public.js",
|
|
77
|
+
"show-desktop-icons": "./src/scripts/show-desktop-icons.js",
|
|
78
|
+
"show-hidden-files": "./src/scripts/show-hidden-files.js",
|
|
79
|
+
"tpa": "./src/scripts/tpa.js",
|
|
80
|
+
"tpo": "./src/scripts/tpo.js",
|
|
81
|
+
"u": "./src/scripts/u.js",
|
|
82
|
+
"vpush": "./src/scripts/vpush.js",
|
|
83
|
+
"y": "./src/scripts/y.js"
|
|
8
84
|
},
|
|
9
85
|
"files": [
|
|
10
86
|
"bin/",
|
package/src/commands/install.js
CHANGED
|
@@ -19,6 +19,7 @@ const { Command } = require('commander');
|
|
|
19
19
|
const fs = require('fs');
|
|
20
20
|
const path = require('path');
|
|
21
21
|
const readline = require('readline');
|
|
22
|
+
const os = require('../utils/common/os');
|
|
22
23
|
|
|
23
24
|
const INSTALLS_DIR = path.join(__dirname, '..', 'installs');
|
|
24
25
|
const INSTALLERS_JSON = path.join(INSTALLS_DIR, 'installers.json');
|
|
@@ -244,10 +245,24 @@ async function resolveDependencies(name, visited = new Set(), installing = new S
|
|
|
244
245
|
// Sort dependencies by priority (lower priority = install first)
|
|
245
246
|
const sortedDeps = [...dependencies].sort((a, b) => (a.priority || 0) - (b.priority || 0));
|
|
246
247
|
|
|
248
|
+
// Get current platform for filtering platform-specific dependencies
|
|
249
|
+
const currentPlatform = os.detect().type;
|
|
250
|
+
|
|
247
251
|
// Process each dependency
|
|
248
252
|
for (const dep of sortedDeps) {
|
|
249
253
|
const depName = dep.name.replace('.js', '');
|
|
250
254
|
|
|
255
|
+
// Check if dependency is platform-specific and applies to current platform
|
|
256
|
+
// If 'platforms' is not specified, the dependency applies to all platforms
|
|
257
|
+
if (dep.platforms && dep.platforms.length > 0) {
|
|
258
|
+
if (!dep.platforms.includes(currentPlatform)) {
|
|
259
|
+
if (options.verbose) {
|
|
260
|
+
console.log(` [Skipping ${depName}: not needed on ${currentPlatform}]`);
|
|
261
|
+
}
|
|
262
|
+
continue;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
251
266
|
// Check if dependency is eligible for this platform
|
|
252
267
|
if (!checkIsEligible(depName)) {
|
|
253
268
|
if (options.verbose) {
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
const os = require('../utils/common/os');
|
|
26
26
|
const shell = require('../utils/common/shell');
|
|
27
27
|
const windowsShell = require('../utils/windows/shell');
|
|
28
|
+
const choco = require('../utils/windows/choco');
|
|
28
29
|
|
|
29
30
|
/**
|
|
30
31
|
* The official Chocolatey installation script URL.
|
|
@@ -252,6 +253,10 @@ async function install_windows() {
|
|
|
252
253
|
return;
|
|
253
254
|
}
|
|
254
255
|
|
|
256
|
+
// Add Chocolatey's bin directory to the current process PATH so that
|
|
257
|
+
// subsequent choco commands work without requiring a terminal restart
|
|
258
|
+
choco.addBinToPath();
|
|
259
|
+
|
|
255
260
|
console.log('Chocolatey installed successfully.');
|
|
256
261
|
console.log('');
|
|
257
262
|
console.log('IMPORTANT: Close and reopen your terminal for PATH changes to take effect.');
|
|
@@ -341,6 +346,10 @@ async function install_gitbash() {
|
|
|
341
346
|
return;
|
|
342
347
|
}
|
|
343
348
|
|
|
349
|
+
// Add Chocolatey's bin directory to the current process PATH so that
|
|
350
|
+
// subsequent choco commands work without requiring a terminal restart
|
|
351
|
+
choco.addBinToPath();
|
|
352
|
+
|
|
344
353
|
console.log('Chocolatey installed successfully.');
|
|
345
354
|
console.log('');
|
|
346
355
|
console.log('IMPORTANT: Close and reopen Git Bash for PATH changes to take effect.');
|
|
@@ -464,11 +464,13 @@
|
|
|
464
464
|
"depends_on": [
|
|
465
465
|
{
|
|
466
466
|
"name": "homebrew.js",
|
|
467
|
-
"priority": 0
|
|
467
|
+
"priority": 0,
|
|
468
|
+
"platforms": ["macos"]
|
|
468
469
|
},
|
|
469
470
|
{
|
|
470
471
|
"name": "chocolatey.js",
|
|
471
|
-
"priority": 0
|
|
472
|
+
"priority": 0,
|
|
473
|
+
"platforms": ["windows", "gitbash"]
|
|
472
474
|
}
|
|
473
475
|
],
|
|
474
476
|
"test_results": []
|
|
@@ -570,23 +572,28 @@
|
|
|
570
572
|
"depends_on": [
|
|
571
573
|
{
|
|
572
574
|
"name": "curl.js",
|
|
573
|
-
"priority": 0
|
|
575
|
+
"priority": 0,
|
|
576
|
+
"platforms": ["ubuntu", "debian", "wsl", "raspbian", "amazon_linux", "rhel", "fedora"]
|
|
574
577
|
},
|
|
575
578
|
{
|
|
576
579
|
"name": "ca-certificates.js",
|
|
577
|
-
"priority": 0
|
|
580
|
+
"priority": 0,
|
|
581
|
+
"platforms": ["ubuntu", "debian", "wsl", "raspbian", "amazon_linux", "rhel", "fedora"]
|
|
578
582
|
},
|
|
579
583
|
{
|
|
580
584
|
"name": "homebrew.js",
|
|
581
|
-
"priority": 0
|
|
585
|
+
"priority": 0,
|
|
586
|
+
"platforms": ["macos"]
|
|
582
587
|
},
|
|
583
588
|
{
|
|
584
589
|
"name": "chocolatey.js",
|
|
585
|
-
"priority": 0
|
|
590
|
+
"priority": 0,
|
|
591
|
+
"platforms": ["windows", "gitbash"]
|
|
586
592
|
},
|
|
587
593
|
{
|
|
588
594
|
"name": "wsl.js",
|
|
589
|
-
"priority": 0
|
|
595
|
+
"priority": 0,
|
|
596
|
+
"platforms": ["windows"]
|
|
590
597
|
}
|
|
591
598
|
],
|
|
592
599
|
"test_results": []
|
|
@@ -747,15 +754,18 @@
|
|
|
747
754
|
"depends_on": [
|
|
748
755
|
{
|
|
749
756
|
"name": "homebrew.js",
|
|
750
|
-
"priority": 0
|
|
757
|
+
"priority": 0,
|
|
758
|
+
"platforms": ["macos"]
|
|
751
759
|
},
|
|
752
760
|
{
|
|
753
761
|
"name": "chocolatey.js",
|
|
754
|
-
"priority": 0
|
|
762
|
+
"priority": 0,
|
|
763
|
+
"platforms": ["windows", "gitbash"]
|
|
755
764
|
},
|
|
756
765
|
{
|
|
757
766
|
"name": "software-properties-common.js",
|
|
758
|
-
"priority": 0
|
|
767
|
+
"priority": 0,
|
|
768
|
+
"platforms": ["ubuntu", "debian", "wsl", "raspbian"]
|
|
759
769
|
}
|
|
760
770
|
],
|
|
761
771
|
"test_results": []
|
|
@@ -864,15 +874,18 @@
|
|
|
864
874
|
"depends_on": [
|
|
865
875
|
{
|
|
866
876
|
"name": "homebrew.js",
|
|
867
|
-
"priority": 0
|
|
877
|
+
"priority": 0,
|
|
878
|
+
"platforms": ["macos"]
|
|
868
879
|
},
|
|
869
880
|
{
|
|
870
881
|
"name": "chocolatey.js",
|
|
871
|
-
"priority": 0
|
|
882
|
+
"priority": 0,
|
|
883
|
+
"platforms": ["windows", "gitbash"]
|
|
872
884
|
},
|
|
873
885
|
{
|
|
874
886
|
"name": "pinentry.js",
|
|
875
|
-
"priority": 0
|
|
887
|
+
"priority": 0,
|
|
888
|
+
"platforms": ["macos"]
|
|
876
889
|
}
|
|
877
890
|
],
|
|
878
891
|
"test_results": []
|
|
@@ -1170,23 +1183,28 @@
|
|
|
1170
1183
|
"depends_on": [
|
|
1171
1184
|
{
|
|
1172
1185
|
"name": "curl.js",
|
|
1173
|
-
"priority": 0
|
|
1186
|
+
"priority": 0,
|
|
1187
|
+
"platforms": ["ubuntu", "debian", "wsl", "raspbian"]
|
|
1174
1188
|
},
|
|
1175
1189
|
{
|
|
1176
1190
|
"name": "ca-certificates.js",
|
|
1177
|
-
"priority": 0
|
|
1191
|
+
"priority": 0,
|
|
1192
|
+
"platforms": ["ubuntu", "debian", "wsl", "raspbian"]
|
|
1178
1193
|
},
|
|
1179
1194
|
{
|
|
1180
1195
|
"name": "gpg.js",
|
|
1181
|
-
"priority": 0
|
|
1196
|
+
"priority": 0,
|
|
1197
|
+
"platforms": ["ubuntu", "debian", "wsl", "raspbian"]
|
|
1182
1198
|
},
|
|
1183
1199
|
{
|
|
1184
1200
|
"name": "homebrew.js",
|
|
1185
|
-
"priority": 0
|
|
1201
|
+
"priority": 0,
|
|
1202
|
+
"platforms": ["macos"]
|
|
1186
1203
|
},
|
|
1187
1204
|
{
|
|
1188
1205
|
"name": "chocolatey.js",
|
|
1189
|
-
"priority": 0
|
|
1206
|
+
"priority": 0,
|
|
1207
|
+
"platforms": ["windows", "gitbash"]
|
|
1190
1208
|
}
|
|
1191
1209
|
],
|
|
1192
1210
|
"test_results": []
|
|
@@ -1332,11 +1350,13 @@
|
|
|
1332
1350
|
"depends_on": [
|
|
1333
1351
|
{
|
|
1334
1352
|
"name": "homebrew.js",
|
|
1335
|
-
"priority": 0
|
|
1353
|
+
"priority": 0,
|
|
1354
|
+
"platforms": ["macos"]
|
|
1336
1355
|
},
|
|
1337
1356
|
{
|
|
1338
1357
|
"name": "chocolatey.js",
|
|
1339
|
-
"priority": 0
|
|
1358
|
+
"priority": 0,
|
|
1359
|
+
"platforms": ["windows", "gitbash"]
|
|
1340
1360
|
}
|
|
1341
1361
|
],
|
|
1342
1362
|
"test_results": []
|
|
@@ -2045,11 +2065,13 @@
|
|
|
2045
2065
|
"depends_on": [
|
|
2046
2066
|
{
|
|
2047
2067
|
"name": "homebrew.js",
|
|
2048
|
-
"priority": 0
|
|
2068
|
+
"priority": 0,
|
|
2069
|
+
"platforms": ["macos"]
|
|
2049
2070
|
},
|
|
2050
2071
|
{
|
|
2051
2072
|
"name": "chocolatey.js",
|
|
2052
|
-
"priority": 0
|
|
2073
|
+
"priority": 0,
|
|
2074
|
+
"platforms": ["windows", "gitbash"]
|
|
2053
2075
|
}
|
|
2054
2076
|
],
|
|
2055
2077
|
"test_results": []
|
package/src/installs/wget.js
CHANGED
|
@@ -239,14 +239,19 @@ async function install_windows() {
|
|
|
239
239
|
return;
|
|
240
240
|
}
|
|
241
241
|
|
|
242
|
-
// Verify the installation
|
|
243
|
-
|
|
242
|
+
// Verify the installation by checking if the binary exists in Chocolatey's bin directory
|
|
243
|
+
// This works even when PATH hasn't been updated in the current terminal session
|
|
244
|
+
const verified = choco.commandBinaryExists('wget');
|
|
244
245
|
if (!verified) {
|
|
245
|
-
|
|
246
|
+
// Binary not found - this is unexpected since choco.install() succeeded
|
|
247
|
+
console.log('Warning: wget binary not found in Chocolatey bin directory.');
|
|
248
|
+
console.log('The package may use a different executable name.');
|
|
249
|
+
console.log('');
|
|
250
|
+
console.log('Try running in a new terminal: wget --version');
|
|
246
251
|
return;
|
|
247
252
|
}
|
|
248
253
|
|
|
249
|
-
console.log('wget installed successfully
|
|
254
|
+
console.log('wget installed successfully.');
|
|
250
255
|
console.log('');
|
|
251
256
|
console.log('Note: In PowerShell, use "wget.exe" (with the extension) to run GNU wget,');
|
|
252
257
|
console.log('as "wget" is an alias for Invoke-WebRequest.');
|
package/src/scripts/afk.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/scripts/brewd.js
CHANGED
|
File without changes
|
package/src/scripts/brewi.js
CHANGED
|
File without changes
|
package/src/scripts/brewr.js
CHANGED
|
File without changes
|
package/src/scripts/brews.js
CHANGED
|
File without changes
|
package/src/scripts/brewu.js
CHANGED
|
File without changes
|
package/src/scripts/c.js
CHANGED
|
File without changes
|
package/src/scripts/ccurl.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/scripts/ch.js
CHANGED
|
File without changes
|
|
File without changes
|
package/src/scripts/clean-dev.js
CHANGED
|
File without changes
|
|
File without changes
|
package/src/scripts/clone.js
CHANGED
|
File without changes
|
package/src/scripts/code-all.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/scripts/count.js
CHANGED
|
File without changes
|
package/src/scripts/d.js
CHANGED
|
File without changes
|
package/src/scripts/datauri.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/scripts/dp.js
CHANGED
|
File without changes
|
package/src/scripts/e.js
CHANGED
|
File without changes
|
|
File without changes
|
package/src/scripts/evm.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/scripts/get-tunes.js
CHANGED
|
File without changes
|
package/src/scripts/get-video.js
CHANGED
|
File without changes
|
|
File without changes
|
package/src/scripts/git-clone.js
CHANGED
|
File without changes
|
package/src/scripts/git-pup.js
CHANGED
|
File without changes
|
package/src/scripts/git-push.js
CHANGED
|
File without changes
|
package/src/scripts/h.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/scripts/ips.js
CHANGED
|
File without changes
|
package/src/scripts/iso.js
CHANGED
|
File without changes
|
package/src/scripts/killni.js
CHANGED
|
File without changes
|
package/src/scripts/ll.js
CHANGED
|
File without changes
|
package/src/scripts/local-ip.js
CHANGED
|
File without changes
|
package/src/scripts/m.js
CHANGED
|
File without changes
|
package/src/scripts/map.js
CHANGED
|
File without changes
|
package/src/scripts/mkd.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* mkd - Create a new directory and
|
|
4
|
+
* mkd - Create a new directory and change into it
|
|
5
5
|
*
|
|
6
6
|
* Migrated from legacy dotfiles function.
|
|
7
7
|
* Original:
|
|
@@ -9,16 +9,21 @@
|
|
|
9
9
|
* mkdir -p "$@" && cd "$@"
|
|
10
10
|
* }
|
|
11
11
|
*
|
|
12
|
-
* This script creates a new directory (including all necessary parent directories)
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
12
|
+
* This script creates a new directory (including all necessary parent directories).
|
|
13
|
+
* Since Node.js scripts run in a subprocess, they cannot directly change the parent
|
|
14
|
+
* shell's working directory. To get the original "mkdir and cd" behavior, use the
|
|
15
|
+
* --print flag with command substitution:
|
|
16
16
|
*
|
|
17
17
|
* Usage:
|
|
18
|
-
* mkd my-project
|
|
18
|
+
* cd $(mkd -p my-project) # Create and cd into directory (RECOMMENDED)
|
|
19
|
+
* cd $(mkd --print my-project) # Same as above, long form
|
|
20
|
+
* mkd my-project # Just creates directory, shows instructions
|
|
19
21
|
* mkd path/to/nested/directory # Creates all parent directories as needed
|
|
20
22
|
* mkd ~/projects/new-app # Works with home directory paths
|
|
21
23
|
*
|
|
24
|
+
* Shell alias (add to .bashrc/.zshrc for seamless experience):
|
|
25
|
+
* alias mkd='_mkd() { cd "$(command mkd -p "$1")"; }; _mkd'
|
|
26
|
+
*
|
|
22
27
|
* @module scripts/mkd
|
|
23
28
|
*/
|
|
24
29
|
|
|
@@ -56,19 +61,27 @@ function expandTilde(inputPath) {
|
|
|
56
61
|
*
|
|
57
62
|
* @param {string[]} args - Command line arguments
|
|
58
63
|
* @param {string} args.0 - Directory path to create
|
|
64
|
+
* @param {Object} options - Options
|
|
65
|
+
* @param {boolean} options.printOnly - If true, only output the path (for command substitution)
|
|
59
66
|
* @returns {Promise<void>}
|
|
60
67
|
*/
|
|
61
|
-
async function do_mkd_nodejs(args) {
|
|
68
|
+
async function do_mkd_nodejs(args, options = {}) {
|
|
69
|
+
const { printOnly = false } = options;
|
|
70
|
+
|
|
62
71
|
// Validate arguments
|
|
63
72
|
if (args.length === 0) {
|
|
64
|
-
console.error('Usage: mkd <directory>');
|
|
73
|
+
console.error('Usage: mkd [options] <directory>');
|
|
65
74
|
console.error('');
|
|
66
75
|
console.error('Creates a new directory, including parent directories if needed.');
|
|
67
76
|
console.error('');
|
|
77
|
+
console.error('Options:');
|
|
78
|
+
console.error(' -p, --print Output only the path (for use with cd)');
|
|
79
|
+
console.error('');
|
|
68
80
|
console.error('Examples:');
|
|
69
|
-
console.error(' mkd my-project');
|
|
70
|
-
console.error(' mkd
|
|
71
|
-
console.error(' mkd
|
|
81
|
+
console.error(' mkd my-project # Create and show instructions');
|
|
82
|
+
console.error(' cd $(mkd -p my-project) # Create and cd into it');
|
|
83
|
+
console.error(' mkd path/to/nested/directory # Creates parent dirs as needed');
|
|
84
|
+
console.error(' mkd ~/projects/new-app # Works with ~ paths');
|
|
72
85
|
process.exit(1);
|
|
73
86
|
}
|
|
74
87
|
|
|
@@ -89,9 +102,14 @@ async function do_mkd_nodejs(args) {
|
|
|
89
102
|
const stats = fs.statSync(absolutePath);
|
|
90
103
|
if (stats.isDirectory()) {
|
|
91
104
|
// Directory already exists - this is fine (idempotent behavior)
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
105
|
+
if (printOnly) {
|
|
106
|
+
// In print mode, just output the path for command substitution
|
|
107
|
+
console.log(absolutePath);
|
|
108
|
+
} else {
|
|
109
|
+
console.log(`Directory already exists: ${absolutePath}`);
|
|
110
|
+
console.log('');
|
|
111
|
+
console.log(`To navigate there, run: cd "${absolutePath}"`);
|
|
112
|
+
}
|
|
95
113
|
return;
|
|
96
114
|
} else {
|
|
97
115
|
// A file with the same name exists - this is an error
|
|
@@ -127,11 +145,23 @@ async function do_mkd_nodejs(args) {
|
|
|
127
145
|
}
|
|
128
146
|
|
|
129
147
|
// Success! Print the result
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
148
|
+
if (printOnly) {
|
|
149
|
+
// In print mode, just output the path for command substitution
|
|
150
|
+
// This enables: cd $(mkd -p my-project)
|
|
151
|
+
console.log(absolutePath);
|
|
152
|
+
} else {
|
|
153
|
+
console.log(`Created directory: ${absolutePath}`);
|
|
154
|
+
console.log('');
|
|
155
|
+
console.log(`To navigate there, run: cd "${absolutePath}"`);
|
|
156
|
+
console.log('');
|
|
157
|
+
// Show platform-appropriate tip for command substitution
|
|
158
|
+
if (process.platform === 'win32') {
|
|
159
|
+
console.log('Tip (PowerShell): cd (mkd -p <dir>)');
|
|
160
|
+
console.log('Tip (Git Bash): cd $(mkd -p <dir>)');
|
|
161
|
+
} else {
|
|
162
|
+
console.log('Tip: Use cd $(mkd -p <dir>) to create and cd in one step.');
|
|
163
|
+
}
|
|
164
|
+
}
|
|
135
165
|
}
|
|
136
166
|
|
|
137
167
|
/**
|
|
@@ -141,10 +171,11 @@ async function do_mkd_nodejs(args) {
|
|
|
141
171
|
* identically on macOS as on other platforms.
|
|
142
172
|
*
|
|
143
173
|
* @param {string[]} args - Command line arguments
|
|
174
|
+
* @param {Object} options - Options passed through to do_mkd_nodejs
|
|
144
175
|
* @returns {Promise<void>}
|
|
145
176
|
*/
|
|
146
|
-
async function do_mkd_macos(args) {
|
|
147
|
-
return do_mkd_nodejs(args);
|
|
177
|
+
async function do_mkd_macos(args, options) {
|
|
178
|
+
return do_mkd_nodejs(args, options);
|
|
148
179
|
}
|
|
149
180
|
|
|
150
181
|
/**
|
|
@@ -154,10 +185,11 @@ async function do_mkd_macos(args) {
|
|
|
154
185
|
* identically on Linux as on other platforms.
|
|
155
186
|
*
|
|
156
187
|
* @param {string[]} args - Command line arguments
|
|
188
|
+
* @param {Object} options - Options passed through to do_mkd_nodejs
|
|
157
189
|
* @returns {Promise<void>}
|
|
158
190
|
*/
|
|
159
|
-
async function do_mkd_ubuntu(args) {
|
|
160
|
-
return do_mkd_nodejs(args);
|
|
191
|
+
async function do_mkd_ubuntu(args, options) {
|
|
192
|
+
return do_mkd_nodejs(args, options);
|
|
161
193
|
}
|
|
162
194
|
|
|
163
195
|
/**
|
|
@@ -167,10 +199,11 @@ async function do_mkd_ubuntu(args) {
|
|
|
167
199
|
* identically on Raspberry Pi OS as on other platforms.
|
|
168
200
|
*
|
|
169
201
|
* @param {string[]} args - Command line arguments
|
|
202
|
+
* @param {Object} options - Options passed through to do_mkd_nodejs
|
|
170
203
|
* @returns {Promise<void>}
|
|
171
204
|
*/
|
|
172
|
-
async function do_mkd_raspbian(args) {
|
|
173
|
-
return do_mkd_nodejs(args);
|
|
205
|
+
async function do_mkd_raspbian(args, options) {
|
|
206
|
+
return do_mkd_nodejs(args, options);
|
|
174
207
|
}
|
|
175
208
|
|
|
176
209
|
/**
|
|
@@ -180,10 +213,11 @@ async function do_mkd_raspbian(args) {
|
|
|
180
213
|
* identically on Amazon Linux as on other platforms.
|
|
181
214
|
*
|
|
182
215
|
* @param {string[]} args - Command line arguments
|
|
216
|
+
* @param {Object} options - Options passed through to do_mkd_nodejs
|
|
183
217
|
* @returns {Promise<void>}
|
|
184
218
|
*/
|
|
185
|
-
async function do_mkd_amazon_linux(args) {
|
|
186
|
-
return do_mkd_nodejs(args);
|
|
219
|
+
async function do_mkd_amazon_linux(args, options) {
|
|
220
|
+
return do_mkd_nodejs(args, options);
|
|
187
221
|
}
|
|
188
222
|
|
|
189
223
|
/**
|
|
@@ -194,10 +228,11 @@ async function do_mkd_amazon_linux(args) {
|
|
|
194
228
|
* handles Windows path separators automatically.
|
|
195
229
|
*
|
|
196
230
|
* @param {string[]} args - Command line arguments
|
|
231
|
+
* @param {Object} options - Options passed through to do_mkd_nodejs
|
|
197
232
|
* @returns {Promise<void>}
|
|
198
233
|
*/
|
|
199
|
-
async function do_mkd_cmd(args) {
|
|
200
|
-
return do_mkd_nodejs(args);
|
|
234
|
+
async function do_mkd_cmd(args, options) {
|
|
235
|
+
return do_mkd_nodejs(args, options);
|
|
201
236
|
}
|
|
202
237
|
|
|
203
238
|
/**
|
|
@@ -207,10 +242,11 @@ async function do_mkd_cmd(args) {
|
|
|
207
242
|
* identically across all platforms and shells.
|
|
208
243
|
*
|
|
209
244
|
* @param {string[]} args - Command line arguments
|
|
245
|
+
* @param {Object} options - Options passed through to do_mkd_nodejs
|
|
210
246
|
* @returns {Promise<void>}
|
|
211
247
|
*/
|
|
212
|
-
async function do_mkd_powershell(args) {
|
|
213
|
-
return do_mkd_nodejs(args);
|
|
248
|
+
async function do_mkd_powershell(args, options) {
|
|
249
|
+
return do_mkd_nodejs(args, options);
|
|
214
250
|
}
|
|
215
251
|
|
|
216
252
|
/**
|
|
@@ -220,10 +256,11 @@ async function do_mkd_powershell(args) {
|
|
|
220
256
|
* Unix-style and Windows-style paths, and Node.js handles the conversion.
|
|
221
257
|
*
|
|
222
258
|
* @param {string[]} args - Command line arguments
|
|
259
|
+
* @param {Object} options - Options passed through to do_mkd_nodejs
|
|
223
260
|
* @returns {Promise<void>}
|
|
224
261
|
*/
|
|
225
|
-
async function do_mkd_gitbash(args) {
|
|
226
|
-
return do_mkd_nodejs(args);
|
|
262
|
+
async function do_mkd_gitbash(args, options) {
|
|
263
|
+
return do_mkd_nodejs(args, options);
|
|
227
264
|
}
|
|
228
265
|
|
|
229
266
|
/**
|
|
@@ -231,27 +268,37 @@ async function do_mkd_gitbash(args) {
|
|
|
231
268
|
*
|
|
232
269
|
* The "mkd" (make directory) command is a developer convenience tool that:
|
|
233
270
|
* 1. Creates a new directory, including all parent directories if needed
|
|
234
|
-
* 2.
|
|
271
|
+
* 2. Outputs the path (with -p flag) for use with cd command substitution
|
|
235
272
|
*
|
|
236
273
|
* This replicates the shell function pattern of creating a directory and
|
|
237
274
|
* immediately entering it, common in developer workflows when starting
|
|
238
275
|
* new projects or organizing files.
|
|
239
276
|
*
|
|
240
|
-
*
|
|
241
|
-
*
|
|
242
|
-
*
|
|
243
|
-
* cd command for the user to run.
|
|
244
|
-
*
|
|
245
|
-
* For a true "mkdir and cd" experience, users can use a shell alias:
|
|
246
|
-
* alias mkd='function _mkd(){ mkd "$1" && cd "$1"; }; _mkd'
|
|
247
|
-
* Or use command substitution:
|
|
248
|
-
* cd $(mkd --quiet my-dir) # If --quiet flag were implemented
|
|
277
|
+
* Usage patterns:
|
|
278
|
+
* mkd my-dir # Creates dir, shows instructions
|
|
279
|
+
* cd $(mkd -p my-dir) # Creates dir and cd into it (RECOMMENDED)
|
|
249
280
|
*
|
|
250
281
|
* @param {string[]} args - Command line arguments
|
|
251
|
-
* @param {string} args.0 - Directory path to create
|
|
282
|
+
* @param {string} args.0 - Directory path to create (or -p/--print flag)
|
|
252
283
|
* @returns {Promise<void>}
|
|
253
284
|
*/
|
|
254
285
|
async function do_mkd(args) {
|
|
286
|
+
// Parse options
|
|
287
|
+
const options = { printOnly: false };
|
|
288
|
+
const remainingArgs = [];
|
|
289
|
+
|
|
290
|
+
for (const arg of args) {
|
|
291
|
+
if (arg === '-p' || arg === '--print') {
|
|
292
|
+
options.printOnly = true;
|
|
293
|
+
} else if (arg === '-h' || arg === '--help') {
|
|
294
|
+
// Show help by calling with empty args
|
|
295
|
+
remainingArgs.length = 0;
|
|
296
|
+
break;
|
|
297
|
+
} else {
|
|
298
|
+
remainingArgs.push(arg);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
|
|
255
302
|
const platform = os.detect();
|
|
256
303
|
|
|
257
304
|
const handlers = {
|
|
@@ -283,7 +330,7 @@ async function do_mkd(args) {
|
|
|
283
330
|
process.exit(1);
|
|
284
331
|
}
|
|
285
332
|
|
|
286
|
-
await handler(
|
|
333
|
+
await handler(remainingArgs, options);
|
|
287
334
|
}
|
|
288
335
|
|
|
289
336
|
module.exports = {
|
|
File without changes
|
|
File without changes
|
package/src/scripts/npmi.js
CHANGED
|
File without changes
|
package/src/scripts/o.js
CHANGED
|
File without changes
|
|
File without changes
|
package/src/scripts/p.js
CHANGED
|
File without changes
|
package/src/scripts/packages.js
CHANGED
|
File without changes
|
package/src/scripts/path.js
CHANGED
|
File without changes
|
package/src/scripts/ports.js
CHANGED
|
File without changes
|
package/src/scripts/q.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/scripts/rm-safe.js
CHANGED
|
File without changes
|
package/src/scripts/s.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/scripts/tpa.js
CHANGED
|
File without changes
|
package/src/scripts/tpo.js
CHANGED
|
File without changes
|
package/src/scripts/u.js
CHANGED
|
File without changes
|
package/src/scripts/vpush.js
CHANGED
|
File without changes
|
package/src/scripts/y.js
CHANGED
|
File without changes
|
|
@@ -17,6 +17,43 @@ const fs = require('fs');
|
|
|
17
17
|
*/
|
|
18
18
|
const CHOCO_KNOWN_PATH = 'C:\\ProgramData\\chocolatey\\bin\\choco.exe';
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Well-known directory where Chocolatey installs command binaries.
|
|
22
|
+
* All Chocolatey-installed commands get shims placed here.
|
|
23
|
+
*/
|
|
24
|
+
const CHOCO_BIN_DIR = 'C:\\ProgramData\\chocolatey\\bin';
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Adds Chocolatey's bin directory to the current process's PATH.
|
|
28
|
+
*
|
|
29
|
+
* This is necessary after installing Chocolatey because the PATH environment
|
|
30
|
+
* variable in the current Node.js process won't be updated until a new terminal
|
|
31
|
+
* is opened. By manually adding the bin directory, subsequent child processes
|
|
32
|
+
* spawned by this process will be able to find Chocolatey-installed commands.
|
|
33
|
+
*
|
|
34
|
+
* This function is idempotent - it won't add the path if it's already present.
|
|
35
|
+
*
|
|
36
|
+
* @returns {boolean} True if PATH was modified, false if already present
|
|
37
|
+
*/
|
|
38
|
+
function addBinToPath() {
|
|
39
|
+
const currentPath = process.env.PATH || '';
|
|
40
|
+
const pathSeparator = ';';
|
|
41
|
+
|
|
42
|
+
// Check if already in PATH (case-insensitive on Windows)
|
|
43
|
+
const paths = currentPath.split(pathSeparator);
|
|
44
|
+
const alreadyInPath = paths.some(p =>
|
|
45
|
+
p.toLowerCase() === CHOCO_BIN_DIR.toLowerCase()
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
if (alreadyInPath) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Prepend Chocolatey bin directory to PATH
|
|
53
|
+
process.env.PATH = `${CHOCO_BIN_DIR}${pathSeparator}${currentPath}`;
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
|
|
20
57
|
/**
|
|
21
58
|
* Checks if Chocolatey is installed.
|
|
22
59
|
*
|
|
@@ -59,6 +96,48 @@ function getExecutablePath() {
|
|
|
59
96
|
return null;
|
|
60
97
|
}
|
|
61
98
|
|
|
99
|
+
/**
|
|
100
|
+
* Checks if a command binary exists in Chocolatey's bin directory.
|
|
101
|
+
*
|
|
102
|
+
* This is useful for verifying installations when the PATH hasn't been
|
|
103
|
+
* updated yet. Chocolatey creates shims (small .exe files) in its bin
|
|
104
|
+
* directory for all installed commands.
|
|
105
|
+
*
|
|
106
|
+
* @param {string} commandName - The command name (without .exe extension)
|
|
107
|
+
* @returns {boolean} True if the binary exists in Chocolatey's bin directory
|
|
108
|
+
*/
|
|
109
|
+
function commandBinaryExists(commandName) {
|
|
110
|
+
const path = require('path');
|
|
111
|
+
const binaryPath = path.join(CHOCO_BIN_DIR, `${commandName}.exe`);
|
|
112
|
+
|
|
113
|
+
try {
|
|
114
|
+
return fs.existsSync(binaryPath);
|
|
115
|
+
} catch {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Gets the full path to a command's binary in Chocolatey's bin directory.
|
|
122
|
+
*
|
|
123
|
+
* @param {string} commandName - The command name (without .exe extension)
|
|
124
|
+
* @returns {string|null} Full path to the binary, or null if not found
|
|
125
|
+
*/
|
|
126
|
+
function getCommandBinaryPath(commandName) {
|
|
127
|
+
const path = require('path');
|
|
128
|
+
const binaryPath = path.join(CHOCO_BIN_DIR, `${commandName}.exe`);
|
|
129
|
+
|
|
130
|
+
try {
|
|
131
|
+
if (fs.existsSync(binaryPath)) {
|
|
132
|
+
return binaryPath;
|
|
133
|
+
}
|
|
134
|
+
} catch {
|
|
135
|
+
// Ignore errors
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
|
|
62
141
|
/**
|
|
63
142
|
* Returns the installed Chocolatey version
|
|
64
143
|
* @returns {Promise<string|null>}
|
|
@@ -368,6 +447,9 @@ async function unpin(packageName) {
|
|
|
368
447
|
module.exports = {
|
|
369
448
|
isInstalled,
|
|
370
449
|
getExecutablePath,
|
|
450
|
+
addBinToPath,
|
|
451
|
+
commandBinaryExists,
|
|
452
|
+
getCommandBinaryPath,
|
|
371
453
|
getVersion,
|
|
372
454
|
install,
|
|
373
455
|
uninstall,
|
|
@@ -23,6 +23,50 @@ const WINGET_KNOWN_PATH = path.join(
|
|
|
23
23
|
'winget.exe'
|
|
24
24
|
);
|
|
25
25
|
|
|
26
|
+
/**
|
|
27
|
+
* The WindowsApps directory containing Microsoft Store app aliases.
|
|
28
|
+
*/
|
|
29
|
+
const WINDOWS_APPS_DIR = path.join(
|
|
30
|
+
process.env.LOCALAPPDATA || '',
|
|
31
|
+
'Microsoft',
|
|
32
|
+
'WindowsApps'
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Adds the WindowsApps directory to the current process's PATH.
|
|
37
|
+
*
|
|
38
|
+
* This ensures that winget and other Microsoft Store apps are accessible
|
|
39
|
+
* to child processes spawned by this Node.js process. Normally this directory
|
|
40
|
+
* is in PATH, but in some environments (like fresh installations or CI) it may
|
|
41
|
+
* not be.
|
|
42
|
+
*
|
|
43
|
+
* This function is idempotent - it won't add the path if it's already present.
|
|
44
|
+
*
|
|
45
|
+
* @returns {boolean} True if PATH was modified, false if already present
|
|
46
|
+
*/
|
|
47
|
+
function addBinToPath() {
|
|
48
|
+
if (!WINDOWS_APPS_DIR) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const currentPath = process.env.PATH || '';
|
|
53
|
+
const pathSeparator = ';';
|
|
54
|
+
|
|
55
|
+
// Check if already in PATH (case-insensitive on Windows)
|
|
56
|
+
const paths = currentPath.split(pathSeparator);
|
|
57
|
+
const alreadyInPath = paths.some(p =>
|
|
58
|
+
p.toLowerCase() === WINDOWS_APPS_DIR.toLowerCase()
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
if (alreadyInPath) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Prepend WindowsApps directory to PATH
|
|
66
|
+
process.env.PATH = `${WINDOWS_APPS_DIR}${pathSeparator}${currentPath}`;
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
|
|
26
70
|
/**
|
|
27
71
|
* Checks if winget is available.
|
|
28
72
|
*
|
|
@@ -429,6 +473,7 @@ async function updateSources() {
|
|
|
429
473
|
module.exports = {
|
|
430
474
|
isInstalled,
|
|
431
475
|
getExecutablePath,
|
|
476
|
+
addBinToPath,
|
|
432
477
|
getVersion,
|
|
433
478
|
install,
|
|
434
479
|
uninstall,
|