@fredlackey/devutils 0.0.18 → 0.0.19
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 +32 -150
- package/package.json +5 -82
- package/bin/dev.js +0 -16
- package/files/README.md +0 -0
- package/files/claude/.claude/commands/setup-context.md +0 -3
- package/files/monorepos/_archive/README.md +0 -36
- package/files/monorepos/_legacy/README.md +0 -36
- package/files/monorepos/ai-docs/README.md +0 -33
- package/files/monorepos/apps/README.md +0 -24
- package/files/monorepos/docs/README.md +0 -40
- package/files/monorepos/packages/README.md +0 -25
- package/files/monorepos/research/README.md +0 -29
- package/files/monorepos/scripts/README.md +0 -24
- package/src/cli.js +0 -72
- package/src/commands/README.md +0 -41
- package/src/commands/configure.js +0 -199
- package/src/commands/identity.js +0 -1630
- package/src/commands/ignore.js +0 -247
- package/src/commands/install.js +0 -526
- package/src/commands/setup.js +0 -246
- package/src/commands/status.js +0 -223
- package/src/commands/update.js +0 -142
- package/src/commands/version.js +0 -100
- package/src/completion.js +0 -284
- package/src/constants.js +0 -45
- package/src/ignore/claude-code.txt +0 -10
- package/src/ignore/docker.txt +0 -18
- package/src/ignore/linux.txt +0 -23
- package/src/ignore/macos.txt +0 -36
- package/src/ignore/node.txt +0 -55
- package/src/ignore/terraform.txt +0 -37
- package/src/ignore/vscode.txt +0 -18
- package/src/ignore/windows.txt +0 -35
- package/src/index.js +0 -0
- package/src/installs/README.md +0 -399
- package/src/installs/adobe-creative-cloud.js +0 -546
- package/src/installs/adobe-creative-cloud.md +0 -605
- package/src/installs/appcleaner.js +0 -321
- package/src/installs/appcleaner.md +0 -699
- package/src/installs/apt-transport-https.js +0 -390
- package/src/installs/apt-transport-https.md +0 -678
- package/src/installs/atomicparsley.js +0 -642
- package/src/installs/atomicparsley.md +0 -795
- package/src/installs/aws-cli.js +0 -797
- package/src/installs/aws-cli.md +0 -727
- package/src/installs/balena-etcher.js +0 -710
- package/src/installs/balena-etcher.md +0 -761
- package/src/installs/bambu-studio.js +0 -1143
- package/src/installs/bambu-studio.md +0 -780
- package/src/installs/bash-completion.js +0 -575
- package/src/installs/bash-completion.md +0 -833
- package/src/installs/bash.js +0 -417
- package/src/installs/bash.md +0 -993
- package/src/installs/beyond-compare.js +0 -603
- package/src/installs/beyond-compare.md +0 -813
- package/src/installs/brave-browser.js +0 -968
- package/src/installs/brave-browser.md +0 -650
- package/src/installs/build-essential.js +0 -529
- package/src/installs/build-essential.md +0 -977
- package/src/installs/ca-certificates.js +0 -618
- package/src/installs/ca-certificates.md +0 -937
- package/src/installs/caffeine.js +0 -508
- package/src/installs/caffeine.md +0 -839
- package/src/installs/camtasia.js +0 -596
- package/src/installs/camtasia.md +0 -762
- package/src/installs/chatgpt.js +0 -476
- package/src/installs/chatgpt.md +0 -814
- package/src/installs/chocolatey.js +0 -456
- package/src/installs/chocolatey.md +0 -661
- package/src/installs/chrome-canary.js +0 -419
- package/src/installs/chrome-canary.md +0 -641
- package/src/installs/chromium.js +0 -667
- package/src/installs/chromium.md +0 -838
- package/src/installs/claude-code.js +0 -576
- package/src/installs/claude-code.md +0 -1173
- package/src/installs/cloudflare-warp.js +0 -900
- package/src/installs/cloudflare-warp.md +0 -1047
- package/src/installs/comet-browser.js +0 -588
- package/src/installs/comet-browser.md +0 -731
- package/src/installs/curl.js +0 -379
- package/src/installs/curl.md +0 -714
- package/src/installs/cursor.js +0 -579
- package/src/installs/cursor.md +0 -970
- package/src/installs/dbeaver.js +0 -924
- package/src/installs/dbeaver.md +0 -939
- package/src/installs/dbschema.js +0 -692
- package/src/installs/dbschema.md +0 -925
- package/src/installs/dependencies.md +0 -453
- package/src/installs/development-tools.js +0 -600
- package/src/installs/development-tools.md +0 -977
- package/src/installs/docker.js +0 -1029
- package/src/installs/docker.md +0 -1109
- package/src/installs/drawio.js +0 -1019
- package/src/installs/drawio.md +0 -795
- package/src/installs/elmedia-player.js +0 -347
- package/src/installs/elmedia-player.md +0 -556
- package/src/installs/ffmpeg.js +0 -889
- package/src/installs/ffmpeg.md +0 -852
- package/src/installs/file.js +0 -464
- package/src/installs/file.md +0 -987
- package/src/installs/gemini-cli.js +0 -811
- package/src/installs/gemini-cli.md +0 -1153
- package/src/installs/git.js +0 -400
- package/src/installs/git.md +0 -907
- package/src/installs/gitego.js +0 -949
- package/src/installs/gitego.md +0 -1172
- package/src/installs/go.js +0 -931
- package/src/installs/go.md +0 -958
- package/src/installs/google-antigravity.js +0 -913
- package/src/installs/google-antigravity.md +0 -1075
- package/src/installs/google-chrome.js +0 -833
- package/src/installs/google-chrome.md +0 -862
- package/src/installs/gpg.js +0 -480
- package/src/installs/gpg.md +0 -1056
- package/src/installs/homebrew.js +0 -1028
- package/src/installs/homebrew.md +0 -988
- package/src/installs/imageoptim.js +0 -968
- package/src/installs/imageoptim.md +0 -1119
- package/src/installs/installers.json +0 -4032
- package/src/installs/installers.json.tmp +0 -3953
- package/src/installs/jq.js +0 -400
- package/src/installs/jq.md +0 -809
- package/src/installs/keyboard-maestro.js +0 -719
- package/src/installs/keyboard-maestro.md +0 -825
- package/src/installs/kiro.js +0 -864
- package/src/installs/kiro.md +0 -1015
- package/src/installs/latex.js +0 -789
- package/src/installs/latex.md +0 -1095
- package/src/installs/lftp.js +0 -356
- package/src/installs/lftp.md +0 -907
- package/src/installs/lsb-release.js +0 -346
- package/src/installs/lsb-release.md +0 -814
- package/src/installs/messenger.js +0 -847
- package/src/installs/messenger.md +0 -900
- package/src/installs/microsoft-office.js +0 -568
- package/src/installs/microsoft-office.md +0 -760
- package/src/installs/microsoft-teams.js +0 -801
- package/src/installs/microsoft-teams.md +0 -886
- package/src/installs/moom.js +0 -326
- package/src/installs/moom.md +0 -570
- package/src/installs/node.js +0 -904
- package/src/installs/node.md +0 -1153
- package/src/installs/nordpass.js +0 -716
- package/src/installs/nordpass.md +0 -921
- package/src/installs/nordvpn.js +0 -892
- package/src/installs/nordvpn.md +0 -1052
- package/src/installs/nvm.js +0 -995
- package/src/installs/nvm.md +0 -1057
- package/src/installs/ohmyzsh.js +0 -529
- package/src/installs/ohmyzsh.md +0 -1094
- package/src/installs/openssh.js +0 -804
- package/src/installs/openssh.md +0 -1056
- package/src/installs/pandoc.js +0 -662
- package/src/installs/pandoc.md +0 -1036
- package/src/installs/parallels-desktop.js +0 -431
- package/src/installs/parallels-desktop.md +0 -446
- package/src/installs/pinentry.js +0 -510
- package/src/installs/pinentry.md +0 -1142
- package/src/installs/pngyu.js +0 -869
- package/src/installs/pngyu.md +0 -896
- package/src/installs/postman.js +0 -799
- package/src/installs/postman.md +0 -940
- package/src/installs/procps.js +0 -425
- package/src/installs/procps.md +0 -851
- package/src/installs/safari-tech-preview.js +0 -374
- package/src/installs/safari-tech-preview.md +0 -533
- package/src/installs/sfnt2woff.js +0 -658
- package/src/installs/sfnt2woff.md +0 -795
- package/src/installs/shellcheck.js +0 -481
- package/src/installs/shellcheck.md +0 -1005
- package/src/installs/slack.js +0 -741
- package/src/installs/slack.md +0 -865
- package/src/installs/snagit.js +0 -585
- package/src/installs/snagit.md +0 -844
- package/src/installs/software-properties-common.js +0 -372
- package/src/installs/software-properties-common.md +0 -805
- package/src/installs/spotify.js +0 -877
- package/src/installs/spotify.md +0 -901
- package/src/installs/studio-3t.js +0 -823
- package/src/installs/studio-3t.md +0 -918
- package/src/installs/sublime-text.js +0 -804
- package/src/installs/sublime-text.md +0 -914
- package/src/installs/superwhisper.js +0 -706
- package/src/installs/superwhisper.md +0 -630
- package/src/installs/tailscale.js +0 -745
- package/src/installs/tailscale.md +0 -1100
- package/src/installs/tar.js +0 -389
- package/src/installs/tar.md +0 -946
- package/src/installs/termius.js +0 -798
- package/src/installs/termius.md +0 -844
- package/src/installs/terraform.js +0 -779
- package/src/installs/terraform.md +0 -899
- package/src/installs/tfenv.js +0 -778
- package/src/installs/tfenv.md +0 -1091
- package/src/installs/tidal.js +0 -771
- package/src/installs/tidal.md +0 -864
- package/src/installs/tmux.js +0 -346
- package/src/installs/tmux.md +0 -1030
- package/src/installs/tree.js +0 -411
- package/src/installs/tree.md +0 -833
- package/src/installs/unzip.js +0 -460
- package/src/installs/unzip.md +0 -879
- package/src/installs/vim.js +0 -421
- package/src/installs/vim.md +0 -1040
- package/src/installs/vlc.js +0 -821
- package/src/installs/vlc.md +0 -927
- package/src/installs/vscode.js +0 -843
- package/src/installs/vscode.md +0 -1002
- package/src/installs/wget.js +0 -420
- package/src/installs/wget.md +0 -791
- package/src/installs/whatsapp.js +0 -729
- package/src/installs/whatsapp.md +0 -854
- package/src/installs/winpty.js +0 -352
- package/src/installs/winpty.md +0 -620
- package/src/installs/woff2.js +0 -553
- package/src/installs/woff2.md +0 -977
- package/src/installs/wsl.js +0 -572
- package/src/installs/wsl.md +0 -699
- package/src/installs/xcode-clt.js +0 -520
- package/src/installs/xcode-clt.md +0 -351
- package/src/installs/xcode.js +0 -560
- package/src/installs/xcode.md +0 -573
- package/src/installs/yarn.js +0 -824
- package/src/installs/yarn.md +0 -1074
- package/src/installs/yq.js +0 -654
- package/src/installs/yq.md +0 -944
- package/src/installs/yt-dlp.js +0 -701
- package/src/installs/yt-dlp.md +0 -946
- package/src/installs/yum-utils.js +0 -297
- package/src/installs/yum-utils.md +0 -648
- package/src/installs/zoom.js +0 -759
- package/src/installs/zoom.md +0 -884
- package/src/installs/zsh.js +0 -455
- package/src/installs/zsh.md +0 -1008
- package/src/scripts/README.md +0 -617
- package/src/scripts/STATUS.md +0 -208
- package/src/scripts/afk.js +0 -411
- package/src/scripts/backup-all.js +0 -746
- package/src/scripts/backup-source.js +0 -727
- package/src/scripts/brewd.js +0 -389
- package/src/scripts/brewi.js +0 -520
- package/src/scripts/brewr.js +0 -527
- package/src/scripts/brews.js +0 -477
- package/src/scripts/brewu.js +0 -504
- package/src/scripts/c.js +0 -201
- package/src/scripts/ccurl.js +0 -341
- package/src/scripts/certbot-crontab-init.js +0 -504
- package/src/scripts/certbot-init.js +0 -657
- package/src/scripts/ch.js +0 -355
- package/src/scripts/claude-danger.js +0 -268
- package/src/scripts/clean-dev.js +0 -435
- package/src/scripts/clear-dns-cache.js +0 -541
- package/src/scripts/clone.js +0 -435
- package/src/scripts/code-all.js +0 -437
- package/src/scripts/count-files.js +0 -211
- package/src/scripts/count-folders.js +0 -211
- package/src/scripts/count.js +0 -264
- package/src/scripts/d.js +0 -219
- package/src/scripts/datauri.js +0 -389
- package/src/scripts/delete-files.js +0 -380
- package/src/scripts/docker-clean.js +0 -426
- package/src/scripts/dp.js +0 -442
- package/src/scripts/e.js +0 -390
- package/src/scripts/empty-trash.js +0 -513
- package/src/scripts/evm.js +0 -444
- package/src/scripts/fetch-github-repos.js +0 -456
- package/src/scripts/get-channel.js +0 -345
- package/src/scripts/get-course.js +0 -399
- package/src/scripts/get-dependencies.js +0 -306
- package/src/scripts/get-folder.js +0 -799
- package/src/scripts/get-tunes.js +0 -426
- package/src/scripts/get-video.js +0 -367
- package/src/scripts/git-backup.js +0 -577
- package/src/scripts/git-clone.js +0 -493
- package/src/scripts/git-pup.js +0 -319
- package/src/scripts/git-push.js +0 -396
- package/src/scripts/h.js +0 -622
- package/src/scripts/hide-desktop-icons.js +0 -499
- package/src/scripts/hide-hidden-files.js +0 -538
- package/src/scripts/install-dependencies-from.js +0 -456
- package/src/scripts/ips.js +0 -663
- package/src/scripts/iso.js +0 -370
- package/src/scripts/killni.js +0 -577
- package/src/scripts/ll.js +0 -467
- package/src/scripts/local-ip.js +0 -325
- package/src/scripts/m.js +0 -524
- package/src/scripts/map.js +0 -309
- package/src/scripts/mkd.js +0 -351
- package/src/scripts/ncu-update-all.js +0 -457
- package/src/scripts/nginx-init.js +0 -718
- package/src/scripts/npmi.js +0 -382
- package/src/scripts/o.js +0 -511
- package/src/scripts/org-by-date.js +0 -338
- package/src/scripts/p.js +0 -224
- package/src/scripts/packages.js +0 -330
- package/src/scripts/path.js +0 -225
- package/src/scripts/ports.js +0 -597
- package/src/scripts/q.js +0 -305
- package/src/scripts/refresh-files.js +0 -394
- package/src/scripts/remove-smaller-files.js +0 -516
- package/src/scripts/rename-files-with-date.js +0 -533
- package/src/scripts/resize-image.js +0 -539
- package/src/scripts/rm-safe.js +0 -669
- package/src/scripts/s.js +0 -540
- package/src/scripts/set-git-public.js +0 -365
- package/src/scripts/show-desktop-icons.js +0 -475
- package/src/scripts/show-hidden-files.js +0 -472
- package/src/scripts/tpa.js +0 -280
- package/src/scripts/tpo.js +0 -280
- package/src/scripts/u.js +0 -505
- package/src/scripts/vpush.js +0 -437
- package/src/scripts/y.js +0 -283
- package/src/utils/README.md +0 -95
- package/src/utils/common/apps.js +0 -143
- package/src/utils/common/display.js +0 -157
- package/src/utils/common/network.js +0 -185
- package/src/utils/common/os.js +0 -294
- package/src/utils/common/package-manager.js +0 -301
- package/src/utils/common/privileges.js +0 -138
- package/src/utils/common/shell.js +0 -261
- package/src/utils/macos/apps.js +0 -228
- package/src/utils/macos/brew.js +0 -315
- package/src/utils/ubuntu/apt.js +0 -307
- package/src/utils/ubuntu/desktop.js +0 -292
- package/src/utils/ubuntu/snap.js +0 -344
- package/src/utils/ubuntu/systemd.js +0 -286
- package/src/utils/windows/choco.js +0 -465
- package/src/utils/windows/env.js +0 -246
- package/src/utils/windows/registry.js +0 -269
- package/src/utils/windows/shell.js +0 -240
- package/src/utils/windows/winget.js +0 -489
package/src/commands/ignore.js
DELETED
|
@@ -1,247 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @fileoverview Ignore command - Append technology-specific patterns to .gitignore.
|
|
5
|
-
* Reads patterns from src/ignore/*.txt and adds them to the repository's .gitignore.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
const { Command } = require('commander');
|
|
9
|
-
const fs = require('fs');
|
|
10
|
-
const path = require('path');
|
|
11
|
-
|
|
12
|
-
const IGNORE_DIR = path.join(__dirname, '..', 'ignore');
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Get list of available ignore technologies
|
|
16
|
-
* @returns {string[]} Array of technology names
|
|
17
|
-
*/
|
|
18
|
-
function getAvailableTechnologies() {
|
|
19
|
-
try {
|
|
20
|
-
if (!fs.existsSync(IGNORE_DIR)) {
|
|
21
|
-
return [];
|
|
22
|
-
}
|
|
23
|
-
return fs.readdirSync(IGNORE_DIR)
|
|
24
|
-
.filter(file => file.endsWith('.txt'))
|
|
25
|
-
.map(file => file.replace('.txt', ''))
|
|
26
|
-
.sort();
|
|
27
|
-
} catch {
|
|
28
|
-
return [];
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Find the git root directory by walking up the tree
|
|
34
|
-
* @param {string} startDir - Starting directory
|
|
35
|
-
* @returns {string|null} Path to git root or null
|
|
36
|
-
*/
|
|
37
|
-
function findGitRoot(startDir) {
|
|
38
|
-
let currentDir = path.resolve(startDir);
|
|
39
|
-
const root = path.parse(currentDir).root;
|
|
40
|
-
|
|
41
|
-
while (currentDir !== root) {
|
|
42
|
-
const gitDir = path.join(currentDir, '.git');
|
|
43
|
-
if (fs.existsSync(gitDir)) {
|
|
44
|
-
return currentDir;
|
|
45
|
-
}
|
|
46
|
-
currentDir = path.dirname(currentDir);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
return null;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Generate section markers for a technology
|
|
54
|
-
* @param {string} technology - Technology name
|
|
55
|
-
* @returns {{ start: string, end: string }}
|
|
56
|
-
*/
|
|
57
|
-
function getSectionMarkers(technology) {
|
|
58
|
-
return {
|
|
59
|
-
start: `# === @fredlackey/devutils: ${technology} ===`,
|
|
60
|
-
end: `# === end: ${technology} ===`
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Check if patterns for a technology are already in .gitignore
|
|
66
|
-
* @param {string} gitignoreContent - Content of .gitignore
|
|
67
|
-
* @param {string} technology - Technology name
|
|
68
|
-
* @returns {boolean}
|
|
69
|
-
*/
|
|
70
|
-
function hasPatterns(gitignoreContent, technology) {
|
|
71
|
-
const markers = getSectionMarkers(technology);
|
|
72
|
-
return gitignoreContent.includes(markers.start);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Remove existing patterns for a technology from .gitignore
|
|
77
|
-
* @param {string} gitignoreContent - Content of .gitignore
|
|
78
|
-
* @param {string} technology - Technology name
|
|
79
|
-
* @returns {string} Updated content
|
|
80
|
-
*/
|
|
81
|
-
function removePatterns(gitignoreContent, technology) {
|
|
82
|
-
const markers = getSectionMarkers(technology);
|
|
83
|
-
const lines = gitignoreContent.split('\n');
|
|
84
|
-
const result = [];
|
|
85
|
-
let inSection = false;
|
|
86
|
-
|
|
87
|
-
for (const line of lines) {
|
|
88
|
-
if (line.trim() === markers.start) {
|
|
89
|
-
inSection = true;
|
|
90
|
-
continue;
|
|
91
|
-
}
|
|
92
|
-
if (line.trim() === markers.end) {
|
|
93
|
-
inSection = false;
|
|
94
|
-
continue;
|
|
95
|
-
}
|
|
96
|
-
if (!inSection) {
|
|
97
|
-
result.push(line);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// Remove trailing empty lines that were before the section
|
|
102
|
-
while (result.length > 0 && result[result.length - 1] === '') {
|
|
103
|
-
result.pop();
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
return result.join('\n');
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* List all available technologies
|
|
111
|
-
*/
|
|
112
|
-
function listTechnologies() {
|
|
113
|
-
const technologies = getAvailableTechnologies();
|
|
114
|
-
|
|
115
|
-
if (technologies.length === 0) {
|
|
116
|
-
console.log('\nNo ignore patterns available.');
|
|
117
|
-
console.log(`Pattern files should be placed in: ${IGNORE_DIR}\n`);
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
console.log('\nAvailable technologies:');
|
|
122
|
-
console.log('─'.repeat(40));
|
|
123
|
-
|
|
124
|
-
for (const tech of technologies) {
|
|
125
|
-
console.log(` ${tech}`);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
console.log(`\nUsage: dev ignore <technology> [folder]`);
|
|
129
|
-
console.log('');
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* Run the ignore command
|
|
134
|
-
* @param {string} technology - Technology name
|
|
135
|
-
* @param {string} folder - Optional folder path for .gitignore
|
|
136
|
-
* @param {object} options - Command options
|
|
137
|
-
*/
|
|
138
|
-
async function runIgnore(technology, folder, options) {
|
|
139
|
-
// Handle --list option
|
|
140
|
-
if (options.list) {
|
|
141
|
-
listTechnologies();
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
// Validate technology argument
|
|
146
|
-
if (!technology) {
|
|
147
|
-
console.error('\nError: No technology specified.');
|
|
148
|
-
console.log('Usage: dev ignore <technology> [folder]');
|
|
149
|
-
console.log('Run `dev ignore --list` to see available options.\n');
|
|
150
|
-
process.exit(1);
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
// Check if technology pattern file exists
|
|
154
|
-
const patternFile = path.join(IGNORE_DIR, `${technology}.txt`);
|
|
155
|
-
if (!fs.existsSync(patternFile)) {
|
|
156
|
-
console.error(`\nError: Unknown technology "${technology}".`);
|
|
157
|
-
console.log('Run `dev ignore --list` to see available options.\n');
|
|
158
|
-
process.exit(1);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
// Determine target directory for .gitignore
|
|
162
|
-
let targetDir;
|
|
163
|
-
if (folder) {
|
|
164
|
-
// Use specified folder path
|
|
165
|
-
targetDir = path.resolve(folder);
|
|
166
|
-
if (!fs.existsSync(targetDir)) {
|
|
167
|
-
console.error(`\nError: Folder "${folder}" does not exist.\n`);
|
|
168
|
-
process.exit(1);
|
|
169
|
-
}
|
|
170
|
-
if (!fs.statSync(targetDir).isDirectory()) {
|
|
171
|
-
console.error(`\nError: "${folder}" is not a directory.\n`);
|
|
172
|
-
process.exit(1);
|
|
173
|
-
}
|
|
174
|
-
} else {
|
|
175
|
-
// Find git root (default behavior)
|
|
176
|
-
targetDir = findGitRoot(process.cwd());
|
|
177
|
-
if (!targetDir) {
|
|
178
|
-
console.error('\nError: No git repository found.');
|
|
179
|
-
console.log('Initialize with `git init` or specify a folder path.\n');
|
|
180
|
-
process.exit(1);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
const gitignorePath = path.join(targetDir, '.gitignore');
|
|
185
|
-
|
|
186
|
-
// Read existing .gitignore content
|
|
187
|
-
let gitignoreContent = '';
|
|
188
|
-
if (fs.existsSync(gitignorePath)) {
|
|
189
|
-
gitignoreContent = fs.readFileSync(gitignorePath, 'utf8');
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
// Check for existing patterns
|
|
193
|
-
if (hasPatterns(gitignoreContent, technology)) {
|
|
194
|
-
if (options.force) {
|
|
195
|
-
// Remove existing patterns to replace them
|
|
196
|
-
gitignoreContent = removePatterns(gitignoreContent, technology);
|
|
197
|
-
console.log(`Replacing existing patterns for ${technology}...`);
|
|
198
|
-
} else {
|
|
199
|
-
console.log(`\nPatterns for ${technology} already present in .gitignore`);
|
|
200
|
-
console.log('Use --force to replace existing patterns.\n');
|
|
201
|
-
return;
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
// Read pattern file
|
|
206
|
-
const patterns = fs.readFileSync(patternFile, 'utf8');
|
|
207
|
-
const markers = getSectionMarkers(technology);
|
|
208
|
-
|
|
209
|
-
// Build the section to add
|
|
210
|
-
const section = `\n${markers.start}\n${patterns.trim()}\n${markers.end}\n`;
|
|
211
|
-
|
|
212
|
-
// Show dry run output
|
|
213
|
-
if (options.dryRun) {
|
|
214
|
-
console.log(`\n[Dry run] Would append to ${gitignorePath}:`);
|
|
215
|
-
console.log('─'.repeat(40));
|
|
216
|
-
console.log(section);
|
|
217
|
-
console.log('─'.repeat(40));
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
// Append to .gitignore
|
|
222
|
-
const newContent = gitignoreContent.trimEnd() + section;
|
|
223
|
-
fs.writeFileSync(gitignorePath, newContent);
|
|
224
|
-
|
|
225
|
-
console.log(`\nAdded ${technology} patterns to ${gitignorePath}`);
|
|
226
|
-
|
|
227
|
-
// Show what was added (if verbose)
|
|
228
|
-
if (options.verbose) {
|
|
229
|
-
console.log('\nPatterns added:');
|
|
230
|
-
console.log('─'.repeat(40));
|
|
231
|
-
console.log(patterns.trim());
|
|
232
|
-
console.log('');
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
// Create and configure the command
|
|
237
|
-
const ignore = new Command('ignore')
|
|
238
|
-
.description('Append technology-specific patterns to .gitignore')
|
|
239
|
-
.argument('[technology]', 'Technology name (e.g., node, python, macos)')
|
|
240
|
-
.argument('[folder]', 'Target folder for .gitignore (defaults to git root)')
|
|
241
|
-
.option('--list', 'List all available technologies')
|
|
242
|
-
.option('--dry-run', 'Show what would be added without modifying files')
|
|
243
|
-
.option('--force', 'Re-add patterns even if section already exists')
|
|
244
|
-
.option('--verbose', 'Show detailed output')
|
|
245
|
-
.action(runIgnore);
|
|
246
|
-
|
|
247
|
-
module.exports = ignore;
|