@fredlackey/devutils 0.0.1 → 0.0.2

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 (257) hide show
  1. package/README.md +5 -5
  2. package/package.json +1 -1
  3. package/src/commands/install.js +374 -36
  4. package/src/installs/adobe-creative-cloud.js +527 -25
  5. package/src/installs/adobe-creative-cloud.md +605 -0
  6. package/src/installs/appcleaner.js +303 -26
  7. package/src/installs/appcleaner.md +699 -0
  8. package/src/installs/apt-transport-https.js +390 -0
  9. package/src/installs/apt-transport-https.md +678 -0
  10. package/src/installs/atomicparsley.js +624 -26
  11. package/src/installs/atomicparsley.md +795 -0
  12. package/src/installs/aws-cli.js +779 -26
  13. package/src/installs/aws-cli.md +727 -0
  14. package/src/installs/balena-etcher.js +688 -26
  15. package/src/installs/balena-etcher.md +761 -0
  16. package/src/installs/bambu-studio.js +912 -26
  17. package/src/installs/bambu-studio.md +780 -0
  18. package/src/installs/bash-completion.js +554 -23
  19. package/src/installs/bash-completion.md +833 -0
  20. package/src/installs/bash.js +399 -26
  21. package/src/installs/bash.md +993 -0
  22. package/src/installs/beyond-compare.js +585 -26
  23. package/src/installs/beyond-compare.md +813 -0
  24. package/src/installs/build-essential.js +511 -26
  25. package/src/installs/build-essential.md +977 -0
  26. package/src/installs/ca-certificates.js +618 -0
  27. package/src/installs/ca-certificates.md +937 -0
  28. package/src/installs/caffeine.js +490 -26
  29. package/src/installs/caffeine.md +839 -0
  30. package/src/installs/camtasia.js +577 -25
  31. package/src/installs/camtasia.md +762 -0
  32. package/src/installs/chatgpt.js +458 -26
  33. package/src/installs/chatgpt.md +814 -0
  34. package/src/installs/chocolatey.js +447 -0
  35. package/src/installs/chocolatey.md +661 -0
  36. package/src/installs/chrome-canary.js +472 -26
  37. package/src/installs/chrome-canary.md +641 -0
  38. package/src/installs/chromium.js +645 -26
  39. package/src/installs/chromium.md +838 -0
  40. package/src/installs/claude-code.js +558 -26
  41. package/src/installs/claude-code.md +1173 -0
  42. package/src/installs/curl.js +361 -26
  43. package/src/installs/curl.md +714 -0
  44. package/src/installs/cursor.js +561 -26
  45. package/src/installs/cursor.md +970 -0
  46. package/src/installs/dbschema.js +674 -26
  47. package/src/installs/dbschema.md +925 -0
  48. package/src/installs/dependencies.md +435 -0
  49. package/src/installs/development-tools.js +600 -0
  50. package/src/installs/development-tools.md +977 -0
  51. package/src/installs/docker.js +1010 -25
  52. package/src/installs/docker.md +1109 -0
  53. package/src/installs/drawio.js +1001 -26
  54. package/src/installs/drawio.md +795 -0
  55. package/src/installs/elmedia-player.js +328 -25
  56. package/src/installs/elmedia-player.md +556 -0
  57. package/src/installs/ffmpeg.js +870 -25
  58. package/src/installs/ffmpeg.md +852 -0
  59. package/src/installs/file.js +464 -0
  60. package/src/installs/file.md +987 -0
  61. package/src/installs/gemini-cli.js +793 -26
  62. package/src/installs/gemini-cli.md +1153 -0
  63. package/src/installs/git.js +382 -26
  64. package/src/installs/git.md +907 -0
  65. package/src/installs/gitego.js +931 -26
  66. package/src/installs/gitego.md +1172 -0
  67. package/src/installs/go.js +913 -26
  68. package/src/installs/go.md +958 -0
  69. package/src/installs/google-chrome.js +801 -25
  70. package/src/installs/google-chrome.md +862 -0
  71. package/src/installs/gpg.js +412 -73
  72. package/src/installs/gpg.md +1056 -0
  73. package/src/installs/homebrew.js +1015 -26
  74. package/src/installs/homebrew.md +988 -0
  75. package/src/installs/imageoptim.js +950 -26
  76. package/src/installs/imageoptim.md +1119 -0
  77. package/src/installs/installers.json +2297 -0
  78. package/src/installs/jq.js +382 -26
  79. package/src/installs/jq.md +809 -0
  80. package/src/installs/keyboard-maestro.js +701 -26
  81. package/src/installs/keyboard-maestro.md +825 -0
  82. package/src/installs/latex.js +771 -26
  83. package/src/installs/latex.md +1095 -0
  84. package/src/installs/lftp.js +338 -26
  85. package/src/installs/lftp.md +907 -0
  86. package/src/installs/lsb-release.js +346 -0
  87. package/src/installs/lsb-release.md +814 -0
  88. package/src/installs/messenger.js +829 -26
  89. package/src/installs/messenger.md +900 -0
  90. package/src/installs/microsoft-office.js +550 -26
  91. package/src/installs/microsoft-office.md +760 -0
  92. package/src/installs/microsoft-teams.js +782 -25
  93. package/src/installs/microsoft-teams.md +886 -0
  94. package/src/installs/node.js +886 -26
  95. package/src/installs/node.md +1153 -0
  96. package/src/installs/nordpass.js +698 -26
  97. package/src/installs/nordpass.md +921 -0
  98. package/src/installs/nvm.js +977 -26
  99. package/src/installs/nvm.md +1057 -0
  100. package/src/installs/openssh.js +734 -64
  101. package/src/installs/openssh.md +1056 -0
  102. package/src/installs/pandoc.js +644 -26
  103. package/src/installs/pandoc.md +1036 -0
  104. package/src/installs/pinentry.js +492 -26
  105. package/src/installs/pinentry.md +1142 -0
  106. package/src/installs/pngyu.js +851 -26
  107. package/src/installs/pngyu.md +896 -0
  108. package/src/installs/postman.js +781 -26
  109. package/src/installs/postman.md +940 -0
  110. package/src/installs/procps.js +425 -0
  111. package/src/installs/procps.md +851 -0
  112. package/src/installs/safari-tech-preview.js +355 -25
  113. package/src/installs/safari-tech-preview.md +533 -0
  114. package/src/installs/sfnt2woff.js +640 -26
  115. package/src/installs/sfnt2woff.md +795 -0
  116. package/src/installs/shellcheck.js +463 -26
  117. package/src/installs/shellcheck.md +1005 -0
  118. package/src/installs/slack.js +722 -25
  119. package/src/installs/slack.md +865 -0
  120. package/src/installs/snagit.js +566 -25
  121. package/src/installs/snagit.md +844 -0
  122. package/src/installs/software-properties-common.js +372 -0
  123. package/src/installs/software-properties-common.md +805 -0
  124. package/src/installs/spotify.js +858 -25
  125. package/src/installs/spotify.md +901 -0
  126. package/src/installs/studio-3t.js +803 -26
  127. package/src/installs/studio-3t.md +918 -0
  128. package/src/installs/sublime-text.js +780 -25
  129. package/src/installs/sublime-text.md +914 -0
  130. package/src/installs/superwhisper.js +687 -25
  131. package/src/installs/superwhisper.md +630 -0
  132. package/src/installs/tailscale.js +727 -26
  133. package/src/installs/tailscale.md +1100 -0
  134. package/src/installs/tar.js +389 -0
  135. package/src/installs/tar.md +946 -0
  136. package/src/installs/termius.js +780 -26
  137. package/src/installs/termius.md +844 -0
  138. package/src/installs/terraform.js +761 -26
  139. package/src/installs/terraform.md +899 -0
  140. package/src/installs/tidal.js +752 -25
  141. package/src/installs/tidal.md +864 -0
  142. package/src/installs/tmux.js +328 -26
  143. package/src/installs/tmux.md +1030 -0
  144. package/src/installs/tree.js +393 -26
  145. package/src/installs/tree.md +833 -0
  146. package/src/installs/unzip.js +460 -0
  147. package/src/installs/unzip.md +879 -0
  148. package/src/installs/vim.js +403 -26
  149. package/src/installs/vim.md +1040 -0
  150. package/src/installs/vlc.js +803 -26
  151. package/src/installs/vlc.md +927 -0
  152. package/src/installs/vscode.js +825 -26
  153. package/src/installs/vscode.md +1002 -0
  154. package/src/installs/wget.js +415 -0
  155. package/src/installs/wget.md +791 -0
  156. package/src/installs/whatsapp.js +710 -25
  157. package/src/installs/whatsapp.md +854 -0
  158. package/src/installs/winpty.js +352 -0
  159. package/src/installs/winpty.md +620 -0
  160. package/src/installs/woff2.js +535 -26
  161. package/src/installs/woff2.md +977 -0
  162. package/src/installs/wsl.js +572 -0
  163. package/src/installs/wsl.md +699 -0
  164. package/src/installs/xcode-clt.js +520 -0
  165. package/src/installs/xcode-clt.md +351 -0
  166. package/src/installs/xcode.js +542 -26
  167. package/src/installs/xcode.md +573 -0
  168. package/src/installs/yarn.js +806 -26
  169. package/src/installs/yarn.md +1074 -0
  170. package/src/installs/yq.js +636 -26
  171. package/src/installs/yq.md +944 -0
  172. package/src/installs/yt-dlp.js +683 -26
  173. package/src/installs/yt-dlp.md +946 -0
  174. package/src/installs/yum-utils.js +297 -0
  175. package/src/installs/yum-utils.md +648 -0
  176. package/src/installs/zoom.js +740 -25
  177. package/src/installs/zoom.md +884 -0
  178. package/src/scripts/README.md +567 -45
  179. package/src/scripts/STATUS.md +208 -0
  180. package/src/scripts/afk.js +395 -7
  181. package/src/scripts/backup-all.js +731 -9
  182. package/src/scripts/backup-source.js +711 -8
  183. package/src/scripts/brewd.js +373 -7
  184. package/src/scripts/brewi.js +505 -9
  185. package/src/scripts/brewr.js +512 -9
  186. package/src/scripts/brews.js +462 -9
  187. package/src/scripts/brewu.js +488 -7
  188. package/src/scripts/c.js +185 -7
  189. package/src/scripts/ccurl.js +325 -8
  190. package/src/scripts/certbot-crontab-init.js +488 -8
  191. package/src/scripts/certbot-init.js +641 -9
  192. package/src/scripts/ch.js +339 -7
  193. package/src/scripts/claude-danger.js +253 -8
  194. package/src/scripts/clean-dev.js +419 -8
  195. package/src/scripts/clear-dns-cache.js +525 -7
  196. package/src/scripts/clone.js +417 -7
  197. package/src/scripts/code-all.js +420 -7
  198. package/src/scripts/count-files.js +195 -8
  199. package/src/scripts/count-folders.js +195 -8
  200. package/src/scripts/count.js +248 -8
  201. package/src/scripts/d.js +203 -7
  202. package/src/scripts/datauri.js +373 -8
  203. package/src/scripts/delete-files.js +363 -7
  204. package/src/scripts/docker-clean.js +410 -8
  205. package/src/scripts/dp.js +426 -7
  206. package/src/scripts/e.js +375 -9
  207. package/src/scripts/empty-trash.js +497 -7
  208. package/src/scripts/evm.js +428 -9
  209. package/src/scripts/fetch-github-repos.js +441 -10
  210. package/src/scripts/get-channel.js +329 -8
  211. package/src/scripts/get-course.js +384 -11
  212. package/src/scripts/get-dependencies.js +290 -9
  213. package/src/scripts/get-folder.js +783 -10
  214. package/src/scripts/get-tunes.js +411 -10
  215. package/src/scripts/get-video.js +352 -9
  216. package/src/scripts/git-backup.js +561 -9
  217. package/src/scripts/git-clone.js +477 -9
  218. package/src/scripts/git-pup.js +303 -7
  219. package/src/scripts/git-push.js +380 -8
  220. package/src/scripts/h.js +607 -9
  221. package/src/scripts/hide-desktop-icons.js +483 -7
  222. package/src/scripts/hide-hidden-files.js +522 -7
  223. package/src/scripts/install-dependencies-from.js +440 -9
  224. package/src/scripts/ips.js +647 -10
  225. package/src/scripts/iso.js +354 -8
  226. package/src/scripts/killni.js +561 -7
  227. package/src/scripts/ll.js +451 -8
  228. package/src/scripts/local-ip.js +310 -8
  229. package/src/scripts/m.js +508 -8
  230. package/src/scripts/map.js +293 -8
  231. package/src/scripts/mkd.js +287 -7
  232. package/src/scripts/ncu-update-all.js +441 -8
  233. package/src/scripts/nginx-init.js +702 -12
  234. package/src/scripts/npmi.js +366 -7
  235. package/src/scripts/o.js +495 -8
  236. package/src/scripts/org-by-date.js +321 -7
  237. package/src/scripts/p.js +208 -7
  238. package/src/scripts/packages.js +313 -8
  239. package/src/scripts/path.js +209 -7
  240. package/src/scripts/ports.js +582 -8
  241. package/src/scripts/q.js +290 -8
  242. package/src/scripts/refresh-files.js +378 -10
  243. package/src/scripts/remove-smaller-files.js +500 -8
  244. package/src/scripts/rename-files-with-date.js +517 -9
  245. package/src/scripts/resize-image.js +523 -9
  246. package/src/scripts/rm-safe.js +653 -8
  247. package/src/scripts/s.js +525 -9
  248. package/src/scripts/set-git-public.js +349 -7
  249. package/src/scripts/show-desktop-icons.js +459 -7
  250. package/src/scripts/show-hidden-files.js +456 -7
  251. package/src/scripts/tpa.js +265 -8
  252. package/src/scripts/tpo.js +264 -7
  253. package/src/scripts/u.js +489 -7
  254. package/src/scripts/vpush.js +422 -8
  255. package/src/scripts/y.js +267 -7
  256. package/src/utils/common/os.js +94 -2
  257. package/src/utils/ubuntu/apt.js +13 -7
@@ -1,25 +1,306 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  /**
4
- * @fileoverview Extract dependency names from package.json.
4
+ * get-dependencies - Extract dependency names from package.json
5
+ *
6
+ * Migrated from legacy dotfiles function.
7
+ * Original:
8
+ * get-dependencies() {
9
+ * local package_json_path="$1"
10
+ * local dependency_type_prefix="${2:-dependencies}"
11
+ * ...
12
+ * dependencies=$(jq -r --arg depType "$dependency_type" '.[$depType] | keys[]?' "$package_json_path")
13
+ * echo "$dependencies"
14
+ * }
15
+ *
16
+ * This script reads a package.json file and extracts the names of dependencies
17
+ * from a specified dependency type (dependencies, devDependencies, etc.).
18
+ * Unlike the original bash implementation that required jq, this Node.js version
19
+ * uses native JSON parsing and works on all platforms without external tools.
20
+ *
5
21
  * @module scripts/get-dependencies
6
22
  */
7
23
 
24
+ const fs = require('fs');
25
+ const path = require('path');
26
+ const os = require('../utils/common/os');
27
+
28
+ /**
29
+ * Pure Node.js implementation that extracts dependency names from package.json.
30
+ *
31
+ * This function reads a package.json file and outputs the names of packages
32
+ * from the specified dependency type. It works identically on all platforms
33
+ * because it only uses Node.js built-in modules (fs for file reading and
34
+ * JSON.parse for parsing).
35
+ *
36
+ * Why this is better than the original bash implementation:
37
+ * - No external dependency on jq (which must be installed separately)
38
+ * - Consistent behavior across all operating systems
39
+ * - Better error messages with specific file/JSON parsing details
40
+ * - Native JSON parsing is more reliable than command-line jq
41
+ *
42
+ * @param {string[]} args - Command line arguments
43
+ * @param {string} args[0] - Path to package.json file (required)
44
+ * @param {string} [args[1]] - Dependency type prefix: "dev", "peer", "opt", "bundle", or "dependencies" (default: "dependencies")
45
+ * @returns {Promise<void>}
46
+ */
47
+ async function do_get_dependencies_nodejs(args) {
48
+ const packageJsonPath = args[0];
49
+ const dependencyTypePrefix = args[1] || 'dependencies';
50
+
51
+ // Validate that a path was provided
52
+ if (!packageJsonPath) {
53
+ console.error('Usage: get-dependencies /path/to/package.json [dependency_type]');
54
+ console.error('');
55
+ console.error('Dependency types:');
56
+ console.error(' dependencies - Production dependencies (default)');
57
+ console.error(' dev - Development dependencies');
58
+ console.error(' peer - Peer dependencies');
59
+ console.error(' opt - Optional dependencies');
60
+ console.error(' bundle - Bundled dependencies');
61
+ console.error('');
62
+ console.error('Examples:');
63
+ console.error(' get-dependencies ./package.json');
64
+ console.error(' get-dependencies ./package.json dev');
65
+ console.error(' get-dependencies ../other/package.json peer');
66
+ process.exit(1);
67
+ }
68
+
69
+ // Resolve the path (handle relative and absolute paths)
70
+ // Use process.cwd() to resolve relative paths from where the command is run
71
+ const resolvedPath = path.isAbsolute(packageJsonPath)
72
+ ? packageJsonPath
73
+ : path.resolve(process.cwd(), packageJsonPath);
74
+
75
+ // Check if the file exists
76
+ if (!fs.existsSync(resolvedPath)) {
77
+ console.error(`Error: File not found: ${resolvedPath}`);
78
+ process.exit(1);
79
+ }
80
+
81
+ // Map the prefix to the full dependency type name
82
+ // This matches the original bash implementation's case statement
83
+ const dependencyTypeMap = {
84
+ 'dependencies': 'dependencies',
85
+ 'dev': 'devDependencies',
86
+ 'peer': 'peerDependencies',
87
+ 'opt': 'optionalDependencies',
88
+ 'bundle': 'bundledDependencies'
89
+ };
90
+
91
+ const dependencyType = dependencyTypeMap[dependencyTypePrefix];
92
+
93
+ // Validate the dependency type prefix
94
+ if (!dependencyType) {
95
+ console.error(`Error: Invalid dependency type prefix: ${dependencyTypePrefix}`);
96
+ console.error('');
97
+ console.error('Valid prefixes are:');
98
+ console.error(' dependencies - Production dependencies');
99
+ console.error(' dev - Development dependencies');
100
+ console.error(' peer - Peer dependencies');
101
+ console.error(' opt - Optional dependencies');
102
+ console.error(' bundle - Bundled dependencies');
103
+ process.exit(1);
104
+ }
105
+
106
+ // Read and parse the package.json file
107
+ let packageJson;
108
+ try {
109
+ const fileContents = fs.readFileSync(resolvedPath, 'utf8');
110
+ packageJson = JSON.parse(fileContents);
111
+ } catch (error) {
112
+ // Distinguish between read errors and parse errors for better debugging
113
+ if (error.code === 'ENOENT') {
114
+ console.error(`Error: File not found: ${resolvedPath}`);
115
+ } else if (error.code === 'EACCES') {
116
+ console.error(`Error: Permission denied reading: ${resolvedPath}`);
117
+ } else if (error instanceof SyntaxError) {
118
+ console.error(`Error: Invalid JSON in ${resolvedPath}`);
119
+ console.error(` ${error.message}`);
120
+ } else {
121
+ console.error(`Error reading file: ${error.message}`);
122
+ }
123
+ process.exit(1);
124
+ }
125
+
126
+ // Check if the dependency type exists in the package.json
127
+ // If it doesn't exist or is null/undefined, silently exit with success
128
+ // This matches the original bash behavior: return 0 if node doesn't exist
129
+ const dependencies = packageJson[dependencyType];
130
+ if (!dependencies || typeof dependencies !== 'object') {
131
+ // No dependencies of this type - this is not an error, just empty output
132
+ return;
133
+ }
134
+
135
+ // Extract and output the dependency names (keys of the dependencies object)
136
+ // Each name is printed on its own line, matching the original jq output format
137
+ const dependencyNames = Object.keys(dependencies);
138
+
139
+ // If there are no dependencies, silently exit (matches original behavior)
140
+ if (dependencyNames.length === 0) {
141
+ return;
142
+ }
143
+
144
+ // Print each dependency name on its own line
145
+ // This format matches the original: jq -r '.[$depType] | keys[]?'
146
+ for (const name of dependencyNames) {
147
+ console.log(name);
148
+ }
149
+ }
150
+
151
+ /**
152
+ * Extract dependency names on macOS.
153
+ *
154
+ * Delegates to the pure Node.js implementation since JSON parsing
155
+ * works identically on all platforms.
156
+ *
157
+ * @param {string[]} args - Command line arguments
158
+ * @returns {Promise<void>}
159
+ */
160
+ async function do_get_dependencies_macos(args) {
161
+ return do_get_dependencies_nodejs(args);
162
+ }
163
+
164
+ /**
165
+ * Extract dependency names on Ubuntu.
166
+ *
167
+ * Delegates to the pure Node.js implementation since JSON parsing
168
+ * works identically on all platforms.
169
+ *
170
+ * @param {string[]} args - Command line arguments
171
+ * @returns {Promise<void>}
172
+ */
173
+ async function do_get_dependencies_ubuntu(args) {
174
+ return do_get_dependencies_nodejs(args);
175
+ }
176
+
177
+ /**
178
+ * Extract dependency names on Raspberry Pi OS.
179
+ *
180
+ * Delegates to the pure Node.js implementation since JSON parsing
181
+ * works identically on all platforms.
182
+ *
183
+ * @param {string[]} args - Command line arguments
184
+ * @returns {Promise<void>}
185
+ */
186
+ async function do_get_dependencies_raspbian(args) {
187
+ return do_get_dependencies_nodejs(args);
188
+ }
189
+
190
+ /**
191
+ * Extract dependency names on Amazon Linux.
192
+ *
193
+ * Delegates to the pure Node.js implementation since JSON parsing
194
+ * works identically on all platforms.
195
+ *
196
+ * @param {string[]} args - Command line arguments
197
+ * @returns {Promise<void>}
198
+ */
199
+ async function do_get_dependencies_amazon_linux(args) {
200
+ return do_get_dependencies_nodejs(args);
201
+ }
202
+
8
203
  /**
9
- * Extracts and lists dependency names from a package.json file.
10
- * Can filter by dependency type (dependencies, devDependencies, etc.).
204
+ * Extract dependency names on Windows Command Prompt.
205
+ *
206
+ * Delegates to the pure Node.js implementation since JSON parsing
207
+ * works identically on all platforms.
208
+ *
209
+ * @param {string[]} args - Command line arguments
210
+ * @returns {Promise<void>}
211
+ */
212
+ async function do_get_dependencies_cmd(args) {
213
+ return do_get_dependencies_nodejs(args);
214
+ }
215
+
216
+ /**
217
+ * Extract dependency names on Windows PowerShell.
218
+ *
219
+ * Delegates to the pure Node.js implementation since JSON parsing
220
+ * works identically on all platforms.
11
221
  *
12
222
  * @param {string[]} args - Command line arguments
13
- * @param {string} args.0 - Path to package.json
14
- * @param {string} [args.1] - Dependency type: "dev", "peer", "opt", or "dependencies"
15
223
  * @returns {Promise<void>}
16
224
  */
17
- async function main(args) {
18
- // TODO: Implement dependency extraction
225
+ async function do_get_dependencies_powershell(args) {
226
+ return do_get_dependencies_nodejs(args);
227
+ }
228
+
229
+ /**
230
+ * Extract dependency names in Git Bash on Windows.
231
+ *
232
+ * Delegates to the pure Node.js implementation since JSON parsing
233
+ * works identically on all platforms.
234
+ *
235
+ * @param {string[]} args - Command line arguments
236
+ * @returns {Promise<void>}
237
+ */
238
+ async function do_get_dependencies_gitbash(args) {
239
+ return do_get_dependencies_nodejs(args);
240
+ }
241
+
242
+ /**
243
+ * Main entry point - detects environment and executes appropriate implementation.
244
+ *
245
+ * Extracts and lists dependency names from a package.json file. The output
246
+ * is a list of package names (one per line), which can be piped to other
247
+ * commands or used in scripts.
248
+ *
249
+ * This is useful for:
250
+ * - Auditing what packages are installed
251
+ * - Copying dependencies from one project to another
252
+ * - Comparing dependencies between projects
253
+ * - Scripting package installation workflows
254
+ *
255
+ * Examples:
256
+ * get-dependencies ./package.json # List production dependencies
257
+ * get-dependencies ./package.json dev # List devDependencies
258
+ * get-dependencies ../lib/package.json peer # List peerDependencies
259
+ *
260
+ * @param {string[]} args - Command line arguments
261
+ * @returns {Promise<void>}
262
+ */
263
+ async function do_get_dependencies(args) {
264
+ const platform = os.detect();
265
+
266
+ const handlers = {
267
+ 'macos': do_get_dependencies_macos,
268
+ 'ubuntu': do_get_dependencies_ubuntu,
269
+ 'debian': do_get_dependencies_ubuntu,
270
+ 'raspbian': do_get_dependencies_raspbian,
271
+ 'amazon_linux': do_get_dependencies_amazon_linux,
272
+ 'rhel': do_get_dependencies_amazon_linux,
273
+ 'fedora': do_get_dependencies_ubuntu,
274
+ 'linux': do_get_dependencies_ubuntu,
275
+ 'wsl': do_get_dependencies_ubuntu,
276
+ 'cmd': do_get_dependencies_cmd,
277
+ 'windows': do_get_dependencies_cmd,
278
+ 'powershell': do_get_dependencies_powershell,
279
+ 'gitbash': do_get_dependencies_gitbash
280
+ };
281
+
282
+ const handler = handlers[platform.type];
283
+ if (!handler) {
284
+ console.error(`Platform '${platform.type}' is not supported for this command.`);
285
+ process.exit(1);
286
+ }
287
+
288
+ await handler(args);
19
289
  }
20
290
 
21
- module.exports = { main };
291
+ module.exports = {
292
+ main: do_get_dependencies,
293
+ do_get_dependencies,
294
+ do_get_dependencies_nodejs,
295
+ do_get_dependencies_macos,
296
+ do_get_dependencies_ubuntu,
297
+ do_get_dependencies_raspbian,
298
+ do_get_dependencies_amazon_linux,
299
+ do_get_dependencies_cmd,
300
+ do_get_dependencies_powershell,
301
+ do_get_dependencies_gitbash
302
+ };
22
303
 
23
304
  if (require.main === module) {
24
- main(process.argv.slice(2));
305
+ do_get_dependencies(process.argv.slice(2));
25
306
  }