@fredlackey/devutils 0.0.1 → 0.0.3

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 (259) 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
  258. package/src/utils/windows/choco.js +82 -26
  259. package/src/utils/windows/winget.js +89 -27
@@ -1,23 +1,319 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  /**
4
- * @fileoverview Pull and update git submodules.
4
+ * git-pup - Pull changes and update git submodules
5
+ *
6
+ * Migrated from legacy dotfiles alias.
7
+ * Original:
8
+ * git-pup(){
9
+ * git pull && git submodule init && git submodule update && git submodule status
10
+ * }
11
+ *
12
+ * This script performs a complete "pull and update" workflow for repositories
13
+ * that use git submodules. It:
14
+ * 1. Pulls the latest changes from the remote (git pull)
15
+ * 2. Initializes any new submodules that were added (git submodule init)
16
+ * 3. Updates all submodules to the committed versions (git submodule update)
17
+ * 4. Shows the status of all submodules (git submodule status)
18
+ *
19
+ * This is useful when working with projects that have dependencies managed as
20
+ * git submodules. Running "git pull" alone does not update submodules, so this
21
+ * command ensures everything is in sync after pulling.
22
+ *
5
23
  * @module scripts/git-pup
6
24
  */
7
25
 
26
+ const os = require('../utils/common/os');
27
+ const { execSync } = require('child_process');
28
+
29
+ /**
30
+ * Helper function to check if a command exists on the system.
31
+ * Used to verify git is installed before running git commands.
32
+ *
33
+ * @param {string} cmd - The command name to check
34
+ * @returns {boolean} True if the command exists, false otherwise
35
+ */
36
+ function isCommandAvailable(cmd) {
37
+ try {
38
+ // Use 'which' on Unix-like systems, 'where' on Windows
39
+ const checkCmd = process.platform === 'win32' ? `where ${cmd}` : `which ${cmd}`;
40
+ execSync(checkCmd, { stdio: 'ignore' });
41
+ return true;
42
+ } catch {
43
+ return false;
44
+ }
45
+ }
46
+
47
+ /**
48
+ * Helper function to check if the current directory is inside a git repository.
49
+ * We use git's own detection mechanism rather than just looking for .git folder,
50
+ * because the .git folder might be in a parent directory or be a gitdir file.
51
+ *
52
+ * @returns {boolean} True if inside a git repository, false otherwise
53
+ */
54
+ function isInsideGitRepo() {
55
+ try {
56
+ execSync('git rev-parse --is-inside-work-tree', { stdio: 'ignore' });
57
+ return true;
58
+ } catch {
59
+ return false;
60
+ }
61
+ }
62
+
63
+ /**
64
+ * Pure Node.js implementation that uses git CLI commands.
65
+ *
66
+ * Since git is a native tool that provides:
67
+ * - Battle-tested reliability for repository operations
68
+ * - Consistent behavior across all platforms
69
+ * - Complex functionality that would be error-prone to reimplement
70
+ *
71
+ * We use the git CLI rather than trying to reimplement git logic in Node.js.
72
+ * Git works identically on macOS, Linux, and Windows, so all platform
73
+ * functions delegate to this implementation.
74
+ *
75
+ * The function runs these commands in sequence:
76
+ * 1. git pull - Fetches and merges changes from the remote
77
+ * 2. git submodule init - Initializes local config for submodules
78
+ * 3. git submodule update - Checks out the correct commit for each submodule
79
+ * 4. git submodule status - Shows the current state of all submodules
80
+ *
81
+ * @param {string[]} args - Command line arguments (unused for this script)
82
+ * @returns {Promise<void>}
83
+ */
84
+ async function do_git_pup_nodejs(args) {
85
+ // Step 1: Verify git is installed
86
+ // Git is not part of Node.js, so we must check for it
87
+ if (!isCommandAvailable('git')) {
88
+ console.error('Error: git is required but not installed.');
89
+ console.error('');
90
+ console.error('Install git for your platform:');
91
+ console.error(' macOS: brew install git');
92
+ console.error(' Ubuntu: sudo apt install git');
93
+ console.error(' Windows: Download from https://git-scm.com/download/win');
94
+ process.exit(1);
95
+ }
96
+
97
+ // Step 2: Verify we're in a git repository
98
+ // Running git commands outside a repo gives confusing errors
99
+ if (!isInsideGitRepo()) {
100
+ console.error('Error: Not in a git repository.');
101
+ console.error('');
102
+ console.error('This command must be run from inside a git repository.');
103
+ console.error('Navigate to a git repository and try again.');
104
+ process.exit(1);
105
+ }
106
+
107
+ // Step 3: Pull changes from the remote
108
+ // This fetches and merges changes from the tracked remote branch
109
+ console.log('Pulling latest changes...');
110
+ try {
111
+ execSync('git pull', { stdio: 'inherit' });
112
+ } catch (error) {
113
+ console.error('');
114
+ console.error('Error: git pull failed.');
115
+ console.error('Check the error message above for details.');
116
+ process.exit(1);
117
+ }
118
+
119
+ // Step 4: Initialize any new submodules
120
+ // This sets up the local config for submodules that were added upstream
121
+ // If no new submodules, this is a no-op (idempotent)
122
+ console.log('');
123
+ console.log('Initializing submodules...');
124
+ try {
125
+ execSync('git submodule init', { stdio: 'inherit' });
126
+ } catch (error) {
127
+ console.error('');
128
+ console.error('Error: git submodule init failed.');
129
+ console.error('Check the error message above for details.');
130
+ process.exit(1);
131
+ }
132
+
133
+ // Step 5: Update submodules to the committed versions
134
+ // This checks out the specific commit that the parent repo expects
135
+ console.log('');
136
+ console.log('Updating submodules...');
137
+ try {
138
+ execSync('git submodule update', { stdio: 'inherit' });
139
+ } catch (error) {
140
+ console.error('');
141
+ console.error('Error: git submodule update failed.');
142
+ console.error('Check the error message above for details.');
143
+ process.exit(1);
144
+ }
145
+
146
+ // Step 6: Show submodule status
147
+ // This helps the user see what submodules exist and their current state
148
+ console.log('');
149
+ console.log('Submodule status:');
150
+ try {
151
+ execSync('git submodule status', { stdio: 'inherit' });
152
+ } catch (error) {
153
+ // Status failing is not critical - the main work is done
154
+ console.error('Warning: Could not retrieve submodule status.');
155
+ }
156
+
157
+ console.log('');
158
+ console.log('Done! Repository and submodules are up to date.');
159
+ }
160
+
161
+ /**
162
+ * Pull and update git submodules on macOS.
163
+ *
164
+ * Git works identically on macOS as other platforms, so this function
165
+ * delegates to the shared Node.js implementation.
166
+ *
167
+ * @param {string[]} args - Command line arguments (unused)
168
+ * @returns {Promise<void>}
169
+ */
170
+ async function do_git_pup_macos(args) {
171
+ return do_git_pup_nodejs(args);
172
+ }
173
+
174
+ /**
175
+ * Pull and update git submodules on Ubuntu.
176
+ *
177
+ * Git works identically on Ubuntu as other platforms, so this function
178
+ * delegates to the shared Node.js implementation.
179
+ *
180
+ * @param {string[]} args - Command line arguments (unused)
181
+ * @returns {Promise<void>}
182
+ */
183
+ async function do_git_pup_ubuntu(args) {
184
+ return do_git_pup_nodejs(args);
185
+ }
186
+
187
+ /**
188
+ * Pull and update git submodules on Raspberry Pi OS.
189
+ *
190
+ * Git works identically on Raspberry Pi OS as other platforms, so this
191
+ * function delegates to the shared Node.js implementation.
192
+ *
193
+ * @param {string[]} args - Command line arguments (unused)
194
+ * @returns {Promise<void>}
195
+ */
196
+ async function do_git_pup_raspbian(args) {
197
+ return do_git_pup_nodejs(args);
198
+ }
199
+
200
+ /**
201
+ * Pull and update git submodules on Amazon Linux.
202
+ *
203
+ * Git works identically on Amazon Linux as other platforms, so this
204
+ * function delegates to the shared Node.js implementation.
205
+ *
206
+ * @param {string[]} args - Command line arguments (unused)
207
+ * @returns {Promise<void>}
208
+ */
209
+ async function do_git_pup_amazon_linux(args) {
210
+ return do_git_pup_nodejs(args);
211
+ }
212
+
213
+ /**
214
+ * Pull and update git submodules on Windows Command Prompt.
215
+ *
216
+ * Git works identically on Windows as other platforms (when git is installed),
217
+ * so this function delegates to the shared Node.js implementation.
218
+ *
219
+ * @param {string[]} args - Command line arguments (unused)
220
+ * @returns {Promise<void>}
221
+ */
222
+ async function do_git_pup_cmd(args) {
223
+ return do_git_pup_nodejs(args);
224
+ }
225
+
226
+ /**
227
+ * Pull and update git submodules on Windows PowerShell.
228
+ *
229
+ * Git works identically on Windows as other platforms (when git is installed),
230
+ * so this function delegates to the shared Node.js implementation.
231
+ *
232
+ * @param {string[]} args - Command line arguments (unused)
233
+ * @returns {Promise<void>}
234
+ */
235
+ async function do_git_pup_powershell(args) {
236
+ return do_git_pup_nodejs(args);
237
+ }
238
+
8
239
  /**
9
- * Performs a git pull and updates all submodules.
10
- * Equivalent to: git pull && git submodule init && git submodule update
240
+ * Pull and update git submodules in Git Bash.
241
+ *
242
+ * Git Bash comes with git built-in, so this command will always work.
243
+ * This function delegates to the shared Node.js implementation.
11
244
  *
12
245
  * @param {string[]} args - Command line arguments (unused)
13
246
  * @returns {Promise<void>}
14
247
  */
15
- async function main(args) {
16
- // TODO: Implement pull with submodule update
248
+ async function do_git_pup_gitbash(args) {
249
+ return do_git_pup_nodejs(args);
250
+ }
251
+
252
+ /**
253
+ * Main entry point - detects environment and executes appropriate implementation.
254
+ *
255
+ * The "git-pup" (git Pull and UPdate) command is a convenience wrapper that
256
+ * performs a complete pull and submodule update in one step. This is essential
257
+ * for projects that use git submodules, because:
258
+ *
259
+ * 1. "git pull" alone does NOT update submodules
260
+ * 2. After pulling, submodule references may point to new commits
261
+ * 3. Running submodule init/update ensures your working tree matches the repo
262
+ *
263
+ * This command is idempotent - running it multiple times has no negative effects.
264
+ * If there are no changes to pull or no submodules, it simply completes successfully.
265
+ *
266
+ * @param {string[]} args - Command line arguments (unused)
267
+ * @returns {Promise<void>}
268
+ */
269
+ async function do_git_pup(args) {
270
+ const platform = os.detect();
271
+
272
+ const handlers = {
273
+ 'macos': do_git_pup_macos,
274
+ 'ubuntu': do_git_pup_ubuntu,
275
+ 'debian': do_git_pup_ubuntu,
276
+ 'raspbian': do_git_pup_raspbian,
277
+ 'amazon_linux': do_git_pup_amazon_linux,
278
+ 'rhel': do_git_pup_amazon_linux,
279
+ 'fedora': do_git_pup_ubuntu,
280
+ 'linux': do_git_pup_ubuntu,
281
+ 'wsl': do_git_pup_ubuntu,
282
+ 'cmd': do_git_pup_cmd,
283
+ 'windows': do_git_pup_cmd,
284
+ 'powershell': do_git_pup_powershell,
285
+ 'gitbash': do_git_pup_gitbash
286
+ };
287
+
288
+ const handler = handlers[platform.type];
289
+ if (!handler) {
290
+ console.error(`Platform '${platform.type}' is not supported for this command.`);
291
+ console.error('');
292
+ console.error('Supported platforms:');
293
+ console.error(' - macOS');
294
+ console.error(' - Ubuntu, Debian, and other Linux distributions');
295
+ console.error(' - Raspberry Pi OS');
296
+ console.error(' - Amazon Linux, RHEL, Fedora');
297
+ console.error(' - Windows (CMD, PowerShell, Git Bash)');
298
+ process.exit(1);
299
+ }
300
+
301
+ await handler(args);
17
302
  }
18
303
 
19
- module.exports = { main };
304
+ module.exports = {
305
+ main: do_git_pup,
306
+ do_git_pup,
307
+ do_git_pup_nodejs,
308
+ do_git_pup_macos,
309
+ do_git_pup_ubuntu,
310
+ do_git_pup_raspbian,
311
+ do_git_pup_amazon_linux,
312
+ do_git_pup_cmd,
313
+ do_git_pup_powershell,
314
+ do_git_pup_gitbash
315
+ };
20
316
 
21
317
  if (require.main === module) {
22
- main(process.argv.slice(2));
318
+ do_git_pup(process.argv.slice(2));
23
319
  }