@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.
- package/README.md +5 -5
- package/package.json +1 -1
- package/src/commands/install.js +374 -36
- package/src/installs/adobe-creative-cloud.js +527 -25
- package/src/installs/adobe-creative-cloud.md +605 -0
- package/src/installs/appcleaner.js +303 -26
- package/src/installs/appcleaner.md +699 -0
- package/src/installs/apt-transport-https.js +390 -0
- package/src/installs/apt-transport-https.md +678 -0
- package/src/installs/atomicparsley.js +624 -26
- package/src/installs/atomicparsley.md +795 -0
- package/src/installs/aws-cli.js +779 -26
- package/src/installs/aws-cli.md +727 -0
- package/src/installs/balena-etcher.js +688 -26
- package/src/installs/balena-etcher.md +761 -0
- package/src/installs/bambu-studio.js +912 -26
- package/src/installs/bambu-studio.md +780 -0
- package/src/installs/bash-completion.js +554 -23
- package/src/installs/bash-completion.md +833 -0
- package/src/installs/bash.js +399 -26
- package/src/installs/bash.md +993 -0
- package/src/installs/beyond-compare.js +585 -26
- package/src/installs/beyond-compare.md +813 -0
- package/src/installs/build-essential.js +511 -26
- package/src/installs/build-essential.md +977 -0
- package/src/installs/ca-certificates.js +618 -0
- package/src/installs/ca-certificates.md +937 -0
- package/src/installs/caffeine.js +490 -26
- package/src/installs/caffeine.md +839 -0
- package/src/installs/camtasia.js +577 -25
- package/src/installs/camtasia.md +762 -0
- package/src/installs/chatgpt.js +458 -26
- package/src/installs/chatgpt.md +814 -0
- package/src/installs/chocolatey.js +447 -0
- package/src/installs/chocolatey.md +661 -0
- package/src/installs/chrome-canary.js +472 -26
- package/src/installs/chrome-canary.md +641 -0
- package/src/installs/chromium.js +645 -26
- package/src/installs/chromium.md +838 -0
- package/src/installs/claude-code.js +558 -26
- package/src/installs/claude-code.md +1173 -0
- package/src/installs/curl.js +361 -26
- package/src/installs/curl.md +714 -0
- package/src/installs/cursor.js +561 -26
- package/src/installs/cursor.md +970 -0
- package/src/installs/dbschema.js +674 -26
- package/src/installs/dbschema.md +925 -0
- package/src/installs/dependencies.md +435 -0
- package/src/installs/development-tools.js +600 -0
- package/src/installs/development-tools.md +977 -0
- package/src/installs/docker.js +1010 -25
- package/src/installs/docker.md +1109 -0
- package/src/installs/drawio.js +1001 -26
- package/src/installs/drawio.md +795 -0
- package/src/installs/elmedia-player.js +328 -25
- package/src/installs/elmedia-player.md +556 -0
- package/src/installs/ffmpeg.js +870 -25
- package/src/installs/ffmpeg.md +852 -0
- package/src/installs/file.js +464 -0
- package/src/installs/file.md +987 -0
- package/src/installs/gemini-cli.js +793 -26
- package/src/installs/gemini-cli.md +1153 -0
- package/src/installs/git.js +382 -26
- package/src/installs/git.md +907 -0
- package/src/installs/gitego.js +931 -26
- package/src/installs/gitego.md +1172 -0
- package/src/installs/go.js +913 -26
- package/src/installs/go.md +958 -0
- package/src/installs/google-chrome.js +801 -25
- package/src/installs/google-chrome.md +862 -0
- package/src/installs/gpg.js +412 -73
- package/src/installs/gpg.md +1056 -0
- package/src/installs/homebrew.js +1015 -26
- package/src/installs/homebrew.md +988 -0
- package/src/installs/imageoptim.js +950 -26
- package/src/installs/imageoptim.md +1119 -0
- package/src/installs/installers.json +2297 -0
- package/src/installs/jq.js +382 -26
- package/src/installs/jq.md +809 -0
- package/src/installs/keyboard-maestro.js +701 -26
- package/src/installs/keyboard-maestro.md +825 -0
- package/src/installs/latex.js +771 -26
- package/src/installs/latex.md +1095 -0
- package/src/installs/lftp.js +338 -26
- package/src/installs/lftp.md +907 -0
- package/src/installs/lsb-release.js +346 -0
- package/src/installs/lsb-release.md +814 -0
- package/src/installs/messenger.js +829 -26
- package/src/installs/messenger.md +900 -0
- package/src/installs/microsoft-office.js +550 -26
- package/src/installs/microsoft-office.md +760 -0
- package/src/installs/microsoft-teams.js +782 -25
- package/src/installs/microsoft-teams.md +886 -0
- package/src/installs/node.js +886 -26
- package/src/installs/node.md +1153 -0
- package/src/installs/nordpass.js +698 -26
- package/src/installs/nordpass.md +921 -0
- package/src/installs/nvm.js +977 -26
- package/src/installs/nvm.md +1057 -0
- package/src/installs/openssh.js +734 -64
- package/src/installs/openssh.md +1056 -0
- package/src/installs/pandoc.js +644 -26
- package/src/installs/pandoc.md +1036 -0
- package/src/installs/pinentry.js +492 -26
- package/src/installs/pinentry.md +1142 -0
- package/src/installs/pngyu.js +851 -26
- package/src/installs/pngyu.md +896 -0
- package/src/installs/postman.js +781 -26
- package/src/installs/postman.md +940 -0
- package/src/installs/procps.js +425 -0
- package/src/installs/procps.md +851 -0
- package/src/installs/safari-tech-preview.js +355 -25
- package/src/installs/safari-tech-preview.md +533 -0
- package/src/installs/sfnt2woff.js +640 -26
- package/src/installs/sfnt2woff.md +795 -0
- package/src/installs/shellcheck.js +463 -26
- package/src/installs/shellcheck.md +1005 -0
- package/src/installs/slack.js +722 -25
- package/src/installs/slack.md +865 -0
- package/src/installs/snagit.js +566 -25
- package/src/installs/snagit.md +844 -0
- package/src/installs/software-properties-common.js +372 -0
- package/src/installs/software-properties-common.md +805 -0
- package/src/installs/spotify.js +858 -25
- package/src/installs/spotify.md +901 -0
- package/src/installs/studio-3t.js +803 -26
- package/src/installs/studio-3t.md +918 -0
- package/src/installs/sublime-text.js +780 -25
- package/src/installs/sublime-text.md +914 -0
- package/src/installs/superwhisper.js +687 -25
- package/src/installs/superwhisper.md +630 -0
- package/src/installs/tailscale.js +727 -26
- package/src/installs/tailscale.md +1100 -0
- package/src/installs/tar.js +389 -0
- package/src/installs/tar.md +946 -0
- package/src/installs/termius.js +780 -26
- package/src/installs/termius.md +844 -0
- package/src/installs/terraform.js +761 -26
- package/src/installs/terraform.md +899 -0
- package/src/installs/tidal.js +752 -25
- package/src/installs/tidal.md +864 -0
- package/src/installs/tmux.js +328 -26
- package/src/installs/tmux.md +1030 -0
- package/src/installs/tree.js +393 -26
- package/src/installs/tree.md +833 -0
- package/src/installs/unzip.js +460 -0
- package/src/installs/unzip.md +879 -0
- package/src/installs/vim.js +403 -26
- package/src/installs/vim.md +1040 -0
- package/src/installs/vlc.js +803 -26
- package/src/installs/vlc.md +927 -0
- package/src/installs/vscode.js +825 -26
- package/src/installs/vscode.md +1002 -0
- package/src/installs/wget.js +415 -0
- package/src/installs/wget.md +791 -0
- package/src/installs/whatsapp.js +710 -25
- package/src/installs/whatsapp.md +854 -0
- package/src/installs/winpty.js +352 -0
- package/src/installs/winpty.md +620 -0
- package/src/installs/woff2.js +535 -26
- package/src/installs/woff2.md +977 -0
- package/src/installs/wsl.js +572 -0
- package/src/installs/wsl.md +699 -0
- package/src/installs/xcode-clt.js +520 -0
- package/src/installs/xcode-clt.md +351 -0
- package/src/installs/xcode.js +542 -26
- package/src/installs/xcode.md +573 -0
- package/src/installs/yarn.js +806 -26
- package/src/installs/yarn.md +1074 -0
- package/src/installs/yq.js +636 -26
- package/src/installs/yq.md +944 -0
- package/src/installs/yt-dlp.js +683 -26
- package/src/installs/yt-dlp.md +946 -0
- package/src/installs/yum-utils.js +297 -0
- package/src/installs/yum-utils.md +648 -0
- package/src/installs/zoom.js +740 -25
- package/src/installs/zoom.md +884 -0
- package/src/scripts/README.md +567 -45
- package/src/scripts/STATUS.md +208 -0
- package/src/scripts/afk.js +395 -7
- package/src/scripts/backup-all.js +731 -9
- package/src/scripts/backup-source.js +711 -8
- package/src/scripts/brewd.js +373 -7
- package/src/scripts/brewi.js +505 -9
- package/src/scripts/brewr.js +512 -9
- package/src/scripts/brews.js +462 -9
- package/src/scripts/brewu.js +488 -7
- package/src/scripts/c.js +185 -7
- package/src/scripts/ccurl.js +325 -8
- package/src/scripts/certbot-crontab-init.js +488 -8
- package/src/scripts/certbot-init.js +641 -9
- package/src/scripts/ch.js +339 -7
- package/src/scripts/claude-danger.js +253 -8
- package/src/scripts/clean-dev.js +419 -8
- package/src/scripts/clear-dns-cache.js +525 -7
- package/src/scripts/clone.js +417 -7
- package/src/scripts/code-all.js +420 -7
- package/src/scripts/count-files.js +195 -8
- package/src/scripts/count-folders.js +195 -8
- package/src/scripts/count.js +248 -8
- package/src/scripts/d.js +203 -7
- package/src/scripts/datauri.js +373 -8
- package/src/scripts/delete-files.js +363 -7
- package/src/scripts/docker-clean.js +410 -8
- package/src/scripts/dp.js +426 -7
- package/src/scripts/e.js +375 -9
- package/src/scripts/empty-trash.js +497 -7
- package/src/scripts/evm.js +428 -9
- package/src/scripts/fetch-github-repos.js +441 -10
- package/src/scripts/get-channel.js +329 -8
- package/src/scripts/get-course.js +384 -11
- package/src/scripts/get-dependencies.js +290 -9
- package/src/scripts/get-folder.js +783 -10
- package/src/scripts/get-tunes.js +411 -10
- package/src/scripts/get-video.js +352 -9
- package/src/scripts/git-backup.js +561 -9
- package/src/scripts/git-clone.js +477 -9
- package/src/scripts/git-pup.js +303 -7
- package/src/scripts/git-push.js +380 -8
- package/src/scripts/h.js +607 -9
- package/src/scripts/hide-desktop-icons.js +483 -7
- package/src/scripts/hide-hidden-files.js +522 -7
- package/src/scripts/install-dependencies-from.js +440 -9
- package/src/scripts/ips.js +647 -10
- package/src/scripts/iso.js +354 -8
- package/src/scripts/killni.js +561 -7
- package/src/scripts/ll.js +451 -8
- package/src/scripts/local-ip.js +310 -8
- package/src/scripts/m.js +508 -8
- package/src/scripts/map.js +293 -8
- package/src/scripts/mkd.js +287 -7
- package/src/scripts/ncu-update-all.js +441 -8
- package/src/scripts/nginx-init.js +702 -12
- package/src/scripts/npmi.js +366 -7
- package/src/scripts/o.js +495 -8
- package/src/scripts/org-by-date.js +321 -7
- package/src/scripts/p.js +208 -7
- package/src/scripts/packages.js +313 -8
- package/src/scripts/path.js +209 -7
- package/src/scripts/ports.js +582 -8
- package/src/scripts/q.js +290 -8
- package/src/scripts/refresh-files.js +378 -10
- package/src/scripts/remove-smaller-files.js +500 -8
- package/src/scripts/rename-files-with-date.js +517 -9
- package/src/scripts/resize-image.js +523 -9
- package/src/scripts/rm-safe.js +653 -8
- package/src/scripts/s.js +525 -9
- package/src/scripts/set-git-public.js +349 -7
- package/src/scripts/show-desktop-icons.js +459 -7
- package/src/scripts/show-hidden-files.js +456 -7
- package/src/scripts/tpa.js +265 -8
- package/src/scripts/tpo.js +264 -7
- package/src/scripts/u.js +489 -7
- package/src/scripts/vpush.js +422 -8
- package/src/scripts/y.js +267 -7
- package/src/utils/common/os.js +94 -2
- package/src/utils/ubuntu/apt.js +13 -7
- package/src/utils/windows/choco.js +82 -26
- package/src/utils/windows/winget.js +89 -27
package/src/scripts/git-pup.js
CHANGED
|
@@ -1,23 +1,319 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
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
|
-
*
|
|
10
|
-
*
|
|
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
|
|
16
|
-
|
|
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 = {
|
|
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
|
-
|
|
318
|
+
do_git_pup(process.argv.slice(2));
|
|
23
319
|
}
|