@fredlackey/devutils 0.0.1
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 +156 -0
- package/bin/dev.js +16 -0
- package/files/README.md +0 -0
- package/files/claude/.claude/commands/setup-context.md +3 -0
- package/files/monorepos/_archive/README.md +36 -0
- package/files/monorepos/_legacy/README.md +36 -0
- package/files/monorepos/ai-docs/README.md +33 -0
- package/files/monorepos/apps/README.md +24 -0
- package/files/monorepos/docs/README.md +40 -0
- package/files/monorepos/packages/README.md +25 -0
- package/files/monorepos/research/README.md +29 -0
- package/files/monorepos/scripts/README.md +24 -0
- package/package.json +39 -0
- package/src/cli.js +68 -0
- package/src/commands/README.md +41 -0
- package/src/commands/configure.js +199 -0
- package/src/commands/identity.js +1630 -0
- package/src/commands/ignore.js +247 -0
- package/src/commands/install.js +173 -0
- package/src/commands/setup.js +212 -0
- package/src/commands/status.js +223 -0
- package/src/completion.js +284 -0
- package/src/constants.js +45 -0
- package/src/ignore/claude-code.txt +10 -0
- package/src/ignore/docker.txt +18 -0
- package/src/ignore/linux.txt +23 -0
- package/src/ignore/macos.txt +36 -0
- package/src/ignore/node.txt +55 -0
- package/src/ignore/terraform.txt +37 -0
- package/src/ignore/vscode.txt +18 -0
- package/src/ignore/windows.txt +35 -0
- package/src/index.js +0 -0
- package/src/installs/README.md +399 -0
- package/src/installs/adobe-creative-cloud.js +44 -0
- package/src/installs/appcleaner.js +44 -0
- package/src/installs/atomicparsley.js +44 -0
- package/src/installs/aws-cli.js +44 -0
- package/src/installs/balena-etcher.js +44 -0
- package/src/installs/bambu-studio.js +44 -0
- package/src/installs/bash-completion.js +44 -0
- package/src/installs/bash.js +44 -0
- package/src/installs/beyond-compare.js +44 -0
- package/src/installs/build-essential.js +44 -0
- package/src/installs/caffeine.js +44 -0
- package/src/installs/camtasia.js +44 -0
- package/src/installs/chatgpt.js +44 -0
- package/src/installs/chrome-canary.js +44 -0
- package/src/installs/chromium.js +44 -0
- package/src/installs/claude-code.js +44 -0
- package/src/installs/curl.js +44 -0
- package/src/installs/cursor.js +44 -0
- package/src/installs/dbschema.js +44 -0
- package/src/installs/docker.js +44 -0
- package/src/installs/drawio.js +44 -0
- package/src/installs/elmedia-player.js +44 -0
- package/src/installs/ffmpeg.js +44 -0
- package/src/installs/gemini-cli.js +44 -0
- package/src/installs/git.js +44 -0
- package/src/installs/gitego.js +44 -0
- package/src/installs/go.js +44 -0
- package/src/installs/google-chrome.js +44 -0
- package/src/installs/gpg.js +141 -0
- package/src/installs/homebrew.js +44 -0
- package/src/installs/imageoptim.js +44 -0
- package/src/installs/jq.js +44 -0
- package/src/installs/keyboard-maestro.js +44 -0
- package/src/installs/latex.js +44 -0
- package/src/installs/lftp.js +44 -0
- package/src/installs/messenger.js +44 -0
- package/src/installs/microsoft-office.js +44 -0
- package/src/installs/microsoft-teams.js +44 -0
- package/src/installs/node.js +44 -0
- package/src/installs/nordpass.js +44 -0
- package/src/installs/nvm.js +44 -0
- package/src/installs/openssh.js +134 -0
- package/src/installs/pandoc.js +44 -0
- package/src/installs/pinentry.js +44 -0
- package/src/installs/pngyu.js +44 -0
- package/src/installs/postman.js +44 -0
- package/src/installs/safari-tech-preview.js +44 -0
- package/src/installs/sfnt2woff.js +44 -0
- package/src/installs/shellcheck.js +44 -0
- package/src/installs/slack.js +44 -0
- package/src/installs/snagit.js +44 -0
- package/src/installs/spotify.js +44 -0
- package/src/installs/studio-3t.js +44 -0
- package/src/installs/sublime-text.js +44 -0
- package/src/installs/superwhisper.js +44 -0
- package/src/installs/tailscale.js +44 -0
- package/src/installs/termius.js +44 -0
- package/src/installs/terraform.js +44 -0
- package/src/installs/tidal.js +44 -0
- package/src/installs/tmux.js +44 -0
- package/src/installs/tree.js +44 -0
- package/src/installs/vim.js +44 -0
- package/src/installs/vlc.js +44 -0
- package/src/installs/vscode.js +44 -0
- package/src/installs/whatsapp.js +44 -0
- package/src/installs/woff2.js +44 -0
- package/src/installs/xcode.js +44 -0
- package/src/installs/yarn.js +44 -0
- package/src/installs/yq.js +44 -0
- package/src/installs/yt-dlp.js +44 -0
- package/src/installs/zoom.js +44 -0
- package/src/scripts/README.md +95 -0
- package/src/scripts/afk.js +23 -0
- package/src/scripts/backup-all.js +24 -0
- package/src/scripts/backup-source.js +24 -0
- package/src/scripts/brewd.js +23 -0
- package/src/scripts/brewi.js +24 -0
- package/src/scripts/brewr.js +24 -0
- package/src/scripts/brews.js +24 -0
- package/src/scripts/brewu.js +23 -0
- package/src/scripts/c.js +23 -0
- package/src/scripts/ccurl.js +24 -0
- package/src/scripts/certbot-crontab-init.js +24 -0
- package/src/scripts/certbot-init.js +25 -0
- package/src/scripts/ch.js +23 -0
- package/src/scripts/claude-danger.js +23 -0
- package/src/scripts/clean-dev.js +24 -0
- package/src/scripts/clear-dns-cache.js +23 -0
- package/src/scripts/clone.js +25 -0
- package/src/scripts/code-all.js +24 -0
- package/src/scripts/count-files.js +24 -0
- package/src/scripts/count-folders.js +24 -0
- package/src/scripts/count.js +24 -0
- package/src/scripts/d.js +23 -0
- package/src/scripts/datauri.js +24 -0
- package/src/scripts/delete-files.js +24 -0
- package/src/scripts/docker-clean.js +24 -0
- package/src/scripts/dp.js +23 -0
- package/src/scripts/e.js +24 -0
- package/src/scripts/empty-trash.js +23 -0
- package/src/scripts/evm.js +25 -0
- package/src/scripts/fetch-github-repos.js +25 -0
- package/src/scripts/get-channel.js +24 -0
- package/src/scripts/get-course.js +26 -0
- package/src/scripts/get-dependencies.js +25 -0
- package/src/scripts/get-folder.js +26 -0
- package/src/scripts/get-tunes.js +25 -0
- package/src/scripts/get-video.js +24 -0
- package/src/scripts/git-backup.js +25 -0
- package/src/scripts/git-clone.js +25 -0
- package/src/scripts/git-pup.js +23 -0
- package/src/scripts/git-push.js +24 -0
- package/src/scripts/h.js +24 -0
- package/src/scripts/hide-desktop-icons.js +23 -0
- package/src/scripts/hide-hidden-files.js +23 -0
- package/src/scripts/install-dependencies-from.js +25 -0
- package/src/scripts/ips.js +26 -0
- package/src/scripts/iso.js +24 -0
- package/src/scripts/killni.js +23 -0
- package/src/scripts/ll.js +24 -0
- package/src/scripts/local-ip.js +23 -0
- package/src/scripts/m.js +24 -0
- package/src/scripts/map.js +24 -0
- package/src/scripts/mkd.js +24 -0
- package/src/scripts/ncu-update-all.js +24 -0
- package/src/scripts/nginx-init.js +28 -0
- package/src/scripts/npmi.js +23 -0
- package/src/scripts/o.js +24 -0
- package/src/scripts/org-by-date.js +24 -0
- package/src/scripts/p.js +23 -0
- package/src/scripts/packages.js +25 -0
- package/src/scripts/path.js +23 -0
- package/src/scripts/ports.js +23 -0
- package/src/scripts/q.js +23 -0
- package/src/scripts/refresh-files.js +26 -0
- package/src/scripts/remove-smaller-files.js +24 -0
- package/src/scripts/rename-files-with-date.js +25 -0
- package/src/scripts/resize-image.js +25 -0
- package/src/scripts/rm-safe.js +24 -0
- package/src/scripts/s.js +24 -0
- package/src/scripts/set-git-public.js +23 -0
- package/src/scripts/show-desktop-icons.js +23 -0
- package/src/scripts/show-hidden-files.js +23 -0
- package/src/scripts/tpa.js +23 -0
- package/src/scripts/tpo.js +23 -0
- package/src/scripts/u.js +23 -0
- package/src/scripts/vpush.js +23 -0
- package/src/scripts/y.js +23 -0
- package/src/utils/README.md +95 -0
- package/src/utils/common/apps.js +143 -0
- package/src/utils/common/display.js +157 -0
- package/src/utils/common/network.js +185 -0
- package/src/utils/common/os.js +202 -0
- package/src/utils/common/package-manager.js +301 -0
- package/src/utils/common/privileges.js +138 -0
- package/src/utils/common/shell.js +195 -0
- package/src/utils/macos/apps.js +228 -0
- package/src/utils/macos/brew.js +315 -0
- package/src/utils/ubuntu/apt.js +301 -0
- package/src/utils/ubuntu/desktop.js +292 -0
- package/src/utils/ubuntu/snap.js +302 -0
- package/src/utils/ubuntu/systemd.js +286 -0
- package/src/utils/windows/choco.js +327 -0
- package/src/utils/windows/env.js +246 -0
- package/src/utils/windows/registry.js +269 -0
- package/src/utils/windows/shell.js +240 -0
- package/src/utils/windows/winget.js +378 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# ##############################################################################
|
|
2
|
+
# TERRAFORM
|
|
3
|
+
# Generated by DevUtils CLI (https://github.com/fredlackey/devutils-cli)
|
|
4
|
+
# ##############################################################################
|
|
5
|
+
|
|
6
|
+
# Terraform directories
|
|
7
|
+
.terraform/
|
|
8
|
+
|
|
9
|
+
# Lock file (optional - some teams commit this)
|
|
10
|
+
.terraform.lock.hcl
|
|
11
|
+
|
|
12
|
+
# State files
|
|
13
|
+
*.tfstate
|
|
14
|
+
*.tfstate.*
|
|
15
|
+
|
|
16
|
+
# Variable files (may contain secrets)
|
|
17
|
+
*.tfvars
|
|
18
|
+
*.tfvars.json
|
|
19
|
+
|
|
20
|
+
# Override files
|
|
21
|
+
override.tf
|
|
22
|
+
override.tf.json
|
|
23
|
+
*_override.tf
|
|
24
|
+
*_override.tf.json
|
|
25
|
+
|
|
26
|
+
# Crash logs
|
|
27
|
+
crash.log
|
|
28
|
+
crash.*.log
|
|
29
|
+
|
|
30
|
+
# CLI configuration
|
|
31
|
+
.terraformrc
|
|
32
|
+
terraform.rc
|
|
33
|
+
|
|
34
|
+
# Plan files
|
|
35
|
+
*.tfplan
|
|
36
|
+
tfplan
|
|
37
|
+
plan.out
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# ##############################################################################
|
|
2
|
+
# VISUAL STUDIO CODE
|
|
3
|
+
# Generated by DevUtils CLI (https://github.com/fredlackey/devutils-cli)
|
|
4
|
+
# ##############################################################################
|
|
5
|
+
|
|
6
|
+
# VS Code workspace settings (keep shared configs)
|
|
7
|
+
.vscode/*
|
|
8
|
+
!.vscode/settings.json
|
|
9
|
+
!.vscode/tasks.json
|
|
10
|
+
!.vscode/launch.json
|
|
11
|
+
!.vscode/extensions.json
|
|
12
|
+
!.vscode/*.code-snippets
|
|
13
|
+
|
|
14
|
+
# Local history
|
|
15
|
+
.history/
|
|
16
|
+
|
|
17
|
+
# Built extensions
|
|
18
|
+
*.vsix
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# ##############################################################################
|
|
2
|
+
# WINDOWS
|
|
3
|
+
# Generated by DevUtils CLI (https://github.com/fredlackey/devutils-cli)
|
|
4
|
+
# ##############################################################################
|
|
5
|
+
|
|
6
|
+
# Thumbnail caches
|
|
7
|
+
Thumbs.db
|
|
8
|
+
Thumbs.db:encryptable
|
|
9
|
+
ehthumbs.db
|
|
10
|
+
ehthumbs_vista.db
|
|
11
|
+
|
|
12
|
+
# Dump files
|
|
13
|
+
*.stackdump
|
|
14
|
+
|
|
15
|
+
# Folder configuration
|
|
16
|
+
[Dd]esktop.ini
|
|
17
|
+
|
|
18
|
+
# Recycle Bin
|
|
19
|
+
$RECYCLE.BIN/
|
|
20
|
+
|
|
21
|
+
# Windows Installer files
|
|
22
|
+
*.cab
|
|
23
|
+
*.msi
|
|
24
|
+
*.msix
|
|
25
|
+
*.msm
|
|
26
|
+
*.msp
|
|
27
|
+
|
|
28
|
+
# Shortcuts
|
|
29
|
+
*.lnk
|
|
30
|
+
|
|
31
|
+
# Image file caches
|
|
32
|
+
*.db
|
|
33
|
+
|
|
34
|
+
# WSL configuration
|
|
35
|
+
.wslconfig
|
package/src/index.js
ADDED
|
File without changes
|
|
@@ -0,0 +1,399 @@
|
|
|
1
|
+
# Installs
|
|
2
|
+
|
|
3
|
+
This folder contains platform-specific installation scripts for the `dev install <name>` command.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
Each file implements the logic to install a specific development tool across multiple operating systems. The install command detects the current platform and executes the appropriate installation method.
|
|
8
|
+
|
|
9
|
+
## Supported Platforms
|
|
10
|
+
|
|
11
|
+
| Platform | Detection | Package Manager |
|
|
12
|
+
|----------|-----------|-----------------|
|
|
13
|
+
| macOS | `darwin` | Homebrew (`brew`) |
|
|
14
|
+
| Ubuntu / Debian | `linux` + apt | APT (`apt-get`) |
|
|
15
|
+
| Raspberry Pi OS | `linux` + apt | APT (`apt-get`) |
|
|
16
|
+
| Amazon Linux | `linux` + yum/dnf | YUM/DNF |
|
|
17
|
+
| Windows (WSL) | `linux` + WSL detection | APT or native |
|
|
18
|
+
| Windows (PowerShell) | `win32` | Chocolatey / winget |
|
|
19
|
+
|
|
20
|
+
## Script Structure
|
|
21
|
+
|
|
22
|
+
Each install script **must** follow this pattern:
|
|
23
|
+
|
|
24
|
+
1. A main `install()` function that detects the OS and dispatches to the appropriate installer
|
|
25
|
+
2. Dedicated `install_<platform>()` functions for each supported operating system
|
|
26
|
+
|
|
27
|
+
### Required Functions
|
|
28
|
+
|
|
29
|
+
| Function | Platform | Description |
|
|
30
|
+
|----------|----------|-------------|
|
|
31
|
+
| `install()` | All | Entry point - detects OS and calls appropriate installer |
|
|
32
|
+
| `install_macos()` | macOS | Installation via Homebrew |
|
|
33
|
+
| `install_ubuntu()` | Ubuntu/Debian | Installation via APT |
|
|
34
|
+
| `install_ubuntu_wsl()` | Ubuntu on WSL | WSL-specific installation |
|
|
35
|
+
| `install_raspbian()` | Raspberry Pi OS | Installation via APT (ARM) |
|
|
36
|
+
| `install_amazon_linux()` | Amazon Linux | Installation via YUM/DNF |
|
|
37
|
+
| `install_windows()` | Windows | Installation via Chocolatey/winget |
|
|
38
|
+
|
|
39
|
+
### Template
|
|
40
|
+
|
|
41
|
+
```javascript
|
|
42
|
+
#!/usr/bin/env node
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* @fileoverview Install Visual Studio Code.
|
|
46
|
+
* @module installs/vscode
|
|
47
|
+
*/
|
|
48
|
+
|
|
49
|
+
const os = require('../utils/common/os');
|
|
50
|
+
const shell = require('../utils/shell');
|
|
51
|
+
|
|
52
|
+
// -----------------------------------------------------------------------------
|
|
53
|
+
// Platform-specific installers
|
|
54
|
+
// -----------------------------------------------------------------------------
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Install on macOS via Homebrew.
|
|
58
|
+
* @returns {Promise<void>}
|
|
59
|
+
*/
|
|
60
|
+
async function install_macos() {
|
|
61
|
+
await shell.exec('brew install --cask visual-studio-code');
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Install on Ubuntu/Debian via APT.
|
|
66
|
+
* @returns {Promise<void>}
|
|
67
|
+
*/
|
|
68
|
+
async function install_ubuntu() {
|
|
69
|
+
// Add Microsoft GPG key and repository
|
|
70
|
+
await shell.exec('wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg');
|
|
71
|
+
await shell.exec('sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/');
|
|
72
|
+
await shell.exec('sudo sh -c \'echo "deb [arch=amd64] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list\'');
|
|
73
|
+
await shell.exec('sudo apt-get update');
|
|
74
|
+
await shell.exec('sudo apt-get install -y code');
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Install on Ubuntu running in WSL.
|
|
79
|
+
* @returns {Promise<void>}
|
|
80
|
+
*/
|
|
81
|
+
async function install_ubuntu_wsl() {
|
|
82
|
+
// WSL can use Windows VS Code with Remote WSL extension
|
|
83
|
+
console.log('For WSL, install VS Code on Windows and use the Remote - WSL extension.');
|
|
84
|
+
console.log('Run: winget install Microsoft.VisualStudioCode');
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Install on Raspberry Pi OS via APT.
|
|
89
|
+
* @returns {Promise<void>}
|
|
90
|
+
*/
|
|
91
|
+
async function install_raspbian() {
|
|
92
|
+
// VS Code is available for ARM via code-oss or official builds
|
|
93
|
+
await shell.exec('sudo apt-get update');
|
|
94
|
+
await shell.exec('sudo apt-get install -y code');
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Install on Amazon Linux via YUM/DNF.
|
|
99
|
+
* @returns {Promise<void>}
|
|
100
|
+
*/
|
|
101
|
+
async function install_amazon_linux() {
|
|
102
|
+
await shell.exec('sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc');
|
|
103
|
+
await shell.exec('sudo sh -c \'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo\'');
|
|
104
|
+
await shell.exec('sudo dnf install -y code');
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Install on Windows via Chocolatey or winget.
|
|
109
|
+
* @returns {Promise<void>}
|
|
110
|
+
*/
|
|
111
|
+
async function install_windows() {
|
|
112
|
+
// Prefer winget if available, fall back to chocolatey
|
|
113
|
+
try {
|
|
114
|
+
await shell.exec('winget install Microsoft.VisualStudioCode');
|
|
115
|
+
} catch {
|
|
116
|
+
await shell.exec('choco install vscode -y');
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// -----------------------------------------------------------------------------
|
|
121
|
+
// Main entry point
|
|
122
|
+
// -----------------------------------------------------------------------------
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Detect the operating system and run the appropriate installer.
|
|
126
|
+
* @returns {Promise<void>}
|
|
127
|
+
*/
|
|
128
|
+
async function install() {
|
|
129
|
+
const platform = os.detect();
|
|
130
|
+
|
|
131
|
+
const installers = {
|
|
132
|
+
'macos': install_macos,
|
|
133
|
+
'ubuntu': install_ubuntu,
|
|
134
|
+
'debian': install_ubuntu,
|
|
135
|
+
'ubuntu-wsl': install_ubuntu_wsl,
|
|
136
|
+
'raspbian': install_raspbian,
|
|
137
|
+
'amazon-linux': install_amazon_linux,
|
|
138
|
+
'rhel': install_amazon_linux,
|
|
139
|
+
'windows': install_windows,
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
const installer = installers[platform.type];
|
|
143
|
+
|
|
144
|
+
if (!installer) {
|
|
145
|
+
console.error(`Unsupported platform: ${platform.type}`);
|
|
146
|
+
process.exit(1);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
console.log(`Installing Visual Studio Code on ${platform.type}...`);
|
|
150
|
+
await installer();
|
|
151
|
+
console.log('Installation complete.');
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
module.exports = {
|
|
155
|
+
install,
|
|
156
|
+
install_macos,
|
|
157
|
+
install_ubuntu,
|
|
158
|
+
install_ubuntu_wsl,
|
|
159
|
+
install_raspbian,
|
|
160
|
+
install_amazon_linux,
|
|
161
|
+
install_windows,
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
if (require.main === module) {
|
|
165
|
+
install();
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Using Utility Modules
|
|
170
|
+
|
|
171
|
+
Install scripts **must** use the shared utilities in `src/utils/` rather than implementing their own shell execution, OS detection, or package manager logic. This ensures consistency and reduces code duplication.
|
|
172
|
+
|
|
173
|
+
#### Required Utilities
|
|
174
|
+
|
|
175
|
+
| Module | Purpose | Example Usage |
|
|
176
|
+
|--------|---------|---------------|
|
|
177
|
+
| `../utils/os` | OS/platform detection | `os.detect()`, `os.isMacOS()`, `os.isWSL()` |
|
|
178
|
+
| `../utils/shell` | Shell command execution | `shell.exec()`, `shell.execSudo()` |
|
|
179
|
+
| `../utils/brew` | Homebrew operations (macOS) | `brew.install()`, `brew.installCask()` |
|
|
180
|
+
| `../utils/apt` | APT operations (Debian/Ubuntu) | `apt.install()`, `apt.update()` |
|
|
181
|
+
| `../utils/yum` | YUM/DNF operations (RHEL/Amazon) | `yum.install()`, `dnf.install()` |
|
|
182
|
+
| `../utils/choco` | Chocolatey operations (Windows) | `choco.install()` |
|
|
183
|
+
| `../utils/winget` | Winget operations (Windows) | `winget.install()` |
|
|
184
|
+
| `../utils/logger` | Consistent logging | `logger.info()`, `logger.success()`, `logger.error()` |
|
|
185
|
+
|
|
186
|
+
#### Example Using Utilities
|
|
187
|
+
|
|
188
|
+
```javascript
|
|
189
|
+
const os = require('../utils/common/os');
|
|
190
|
+
const shell = require('../utils/shell');
|
|
191
|
+
const brew = require('../utils/brew');
|
|
192
|
+
const apt = require('../utils/apt');
|
|
193
|
+
const logger = require('../utils/logger');
|
|
194
|
+
|
|
195
|
+
async function install_macos() {
|
|
196
|
+
logger.info('Installing via Homebrew...');
|
|
197
|
+
await brew.installCask('visual-studio-code');
|
|
198
|
+
logger.success('VS Code installed');
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
async function install_ubuntu() {
|
|
202
|
+
logger.info('Adding Microsoft repository...');
|
|
203
|
+
await apt.addKey('https://packages.microsoft.com/keys/microsoft.asc');
|
|
204
|
+
await apt.addRepository('https://packages.microsoft.com/repos/code', 'stable', 'main');
|
|
205
|
+
await apt.update();
|
|
206
|
+
await apt.install('code');
|
|
207
|
+
logger.success('VS Code installed');
|
|
208
|
+
}
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Guidelines
|
|
212
|
+
|
|
213
|
+
1. **Use utility modules** — Always use `src/utils/` for shell execution, package managers, and logging
|
|
214
|
+
2. **Always export all functions** — Export both `install()` and each `install_<platform>()` function for testing and direct invocation
|
|
215
|
+
3. **Use async/await** — All install functions should be async for shell command execution
|
|
216
|
+
4. **Handle errors gracefully** — Catch errors and provide helpful messages
|
|
217
|
+
5. **Log progress** — Use `../utils/logger` for consistent output formatting
|
|
218
|
+
6. **Check prerequisites** — Use utility functions to verify package managers are installed
|
|
219
|
+
7. **Idempotent** — Running the installer twice should not cause errors
|
|
220
|
+
|
|
221
|
+
## Available Installs
|
|
222
|
+
|
|
223
|
+
### Core Tools
|
|
224
|
+
| File | Command | Description |
|
|
225
|
+
|------|---------|-------------|
|
|
226
|
+
| `xcode.js` | `dev install xcode` | Xcode Command Line Tools |
|
|
227
|
+
| `homebrew.js` | `dev install homebrew` | Homebrew package manager |
|
|
228
|
+
| `build-essential.js` | `dev install build-essential` | GCC, make, and build tools |
|
|
229
|
+
|
|
230
|
+
### Shell
|
|
231
|
+
| File | Command | Description |
|
|
232
|
+
|------|---------|-------------|
|
|
233
|
+
| `bash.js` | `dev install bash` | Bash shell |
|
|
234
|
+
| `bash-completion.js` | `dev install bash-completion` | Bash completion |
|
|
235
|
+
| `tmux.js` | `dev install tmux` | Terminal multiplexer |
|
|
236
|
+
|
|
237
|
+
### Version Control
|
|
238
|
+
| File | Command | Description |
|
|
239
|
+
|------|---------|-------------|
|
|
240
|
+
| `git.js` | `dev install git` | Git version control |
|
|
241
|
+
| `gitego.js` | `dev install gitego` | Git productivity tool |
|
|
242
|
+
|
|
243
|
+
### JavaScript / Node.js
|
|
244
|
+
| File | Command | Description |
|
|
245
|
+
|------|---------|-------------|
|
|
246
|
+
| `nvm.js` | `dev install nvm` | Node Version Manager |
|
|
247
|
+
| `node.js` | `dev install node` | Node.js runtime |
|
|
248
|
+
| `yarn.js` | `dev install yarn` | Yarn package manager |
|
|
249
|
+
|
|
250
|
+
### Programming Languages
|
|
251
|
+
| File | Command | Description |
|
|
252
|
+
|------|---------|-------------|
|
|
253
|
+
| `go.js` | `dev install go` | Go programming language |
|
|
254
|
+
|
|
255
|
+
### Editors
|
|
256
|
+
| File | Command | Description |
|
|
257
|
+
|------|---------|-------------|
|
|
258
|
+
| `vim.js` | `dev install vim` | Vim editor |
|
|
259
|
+
| `vscode.js` | `dev install vscode` | Visual Studio Code |
|
|
260
|
+
| `sublime-text.js` | `dev install sublime-text` | Sublime Text |
|
|
261
|
+
| `cursor.js` | `dev install cursor` | Cursor AI editor |
|
|
262
|
+
|
|
263
|
+
### AI Tools
|
|
264
|
+
| File | Command | Description |
|
|
265
|
+
|------|---------|-------------|
|
|
266
|
+
| `claude-code.js` | `dev install claude-code` | Claude Code CLI |
|
|
267
|
+
| `gemini-cli.js` | `dev install gemini-cli` | Google Gemini CLI |
|
|
268
|
+
| `chatgpt.js` | `dev install chatgpt` | ChatGPT desktop app |
|
|
269
|
+
| `superwhisper.js` | `dev install superwhisper` | AI voice transcription |
|
|
270
|
+
|
|
271
|
+
### Containers
|
|
272
|
+
| File | Command | Description |
|
|
273
|
+
|------|---------|-------------|
|
|
274
|
+
| `docker.js` | `dev install docker` | Docker container runtime |
|
|
275
|
+
|
|
276
|
+
### Browsers
|
|
277
|
+
| File | Command | Description |
|
|
278
|
+
|------|---------|-------------|
|
|
279
|
+
| `google-chrome.js` | `dev install google-chrome` | Google Chrome |
|
|
280
|
+
| `chrome-canary.js` | `dev install chrome-canary` | Chrome Canary |
|
|
281
|
+
| `safari-tech-preview.js` | `dev install safari-tech-preview` | Safari Technology Preview |
|
|
282
|
+
| `chromium.js` | `dev install chromium` | Chromium browser |
|
|
283
|
+
|
|
284
|
+
### Security / Encryption
|
|
285
|
+
| File | Command | Description |
|
|
286
|
+
|------|---------|-------------|
|
|
287
|
+
| `gpg.js` | `dev install gpg` | GNU Privacy Guard |
|
|
288
|
+
| `pinentry.js` | `dev install pinentry` | GPG PIN entry |
|
|
289
|
+
| `nordpass.js` | `dev install nordpass` | Nord Pass password manager |
|
|
290
|
+
| `tailscale.js` | `dev install tailscale` | Tailscale mesh VPN |
|
|
291
|
+
|
|
292
|
+
### Cloud / Infrastructure
|
|
293
|
+
| File | Command | Description |
|
|
294
|
+
|------|---------|-------------|
|
|
295
|
+
| `aws-cli.js` | `dev install aws-cli` | AWS CLI |
|
|
296
|
+
| `terraform.js` | `dev install terraform` | Terraform (via tfenv) |
|
|
297
|
+
|
|
298
|
+
### Databases
|
|
299
|
+
| File | Command | Description |
|
|
300
|
+
|------|---------|-------------|
|
|
301
|
+
| `dbschema.js` | `dev install dbschema` | Database diagram designer |
|
|
302
|
+
| `studio-3t.js` | `dev install studio-3t` | MongoDB GUI |
|
|
303
|
+
|
|
304
|
+
### API / Network
|
|
305
|
+
| File | Command | Description |
|
|
306
|
+
|------|---------|-------------|
|
|
307
|
+
| `postman.js` | `dev install postman` | API testing platform |
|
|
308
|
+
| `curl.js` | `dev install curl` | HTTP client |
|
|
309
|
+
| `lftp.js` | `dev install lftp` | FTP/SFTP client |
|
|
310
|
+
|
|
311
|
+
### Media / Video
|
|
312
|
+
| File | Command | Description |
|
|
313
|
+
|------|---------|-------------|
|
|
314
|
+
| `vlc.js` | `dev install vlc` | VLC media player |
|
|
315
|
+
| `ffmpeg.js` | `dev install ffmpeg` | Video/audio processing |
|
|
316
|
+
| `atomicparsley.js` | `dev install atomicparsley` | MP4 metadata editor |
|
|
317
|
+
| `yt-dlp.js` | `dev install yt-dlp` | YouTube downloader |
|
|
318
|
+
| `elmedia-player.js` | `dev install elmedia-player` | Elmedia Player |
|
|
319
|
+
| `spotify.js` | `dev install spotify` | Spotify |
|
|
320
|
+
| `tidal.js` | `dev install tidal` | Tidal music streaming |
|
|
321
|
+
|
|
322
|
+
### Image Tools
|
|
323
|
+
| File | Command | Description |
|
|
324
|
+
|------|---------|-------------|
|
|
325
|
+
| `imageoptim.js` | `dev install imageoptim` | Image compression |
|
|
326
|
+
| `pngyu.js` | `dev install pngyu` | PNG compression |
|
|
327
|
+
|
|
328
|
+
### Productivity
|
|
329
|
+
| File | Command | Description |
|
|
330
|
+
|------|---------|-------------|
|
|
331
|
+
| `microsoft-office.js` | `dev install microsoft-office` | Microsoft Office 365 |
|
|
332
|
+
| `microsoft-teams.js` | `dev install microsoft-teams` | Microsoft Teams |
|
|
333
|
+
| `slack.js` | `dev install slack` | Slack |
|
|
334
|
+
| `zoom.js` | `dev install zoom` | Zoom video conferencing |
|
|
335
|
+
| `keyboard-maestro.js` | `dev install keyboard-maestro` | macOS automation |
|
|
336
|
+
| `caffeine.js` | `dev install caffeine` | Prevent sleep |
|
|
337
|
+
|
|
338
|
+
### Messaging
|
|
339
|
+
| File | Command | Description |
|
|
340
|
+
|------|---------|-------------|
|
|
341
|
+
| `whatsapp.js` | `dev install whatsapp` | WhatsApp |
|
|
342
|
+
| `messenger.js` | `dev install messenger` | Facebook Messenger |
|
|
343
|
+
|
|
344
|
+
### Screen Capture
|
|
345
|
+
| File | Command | Description |
|
|
346
|
+
|------|---------|-------------|
|
|
347
|
+
| `snagit.js` | `dev install snagit` | Screen capture |
|
|
348
|
+
| `camtasia.js` | `dev install camtasia` | Screen recording |
|
|
349
|
+
|
|
350
|
+
### Design
|
|
351
|
+
| File | Command | Description |
|
|
352
|
+
|------|---------|-------------|
|
|
353
|
+
| `adobe-creative-cloud.js` | `dev install adobe-creative-cloud` | Adobe Creative Cloud |
|
|
354
|
+
| `drawio.js` | `dev install drawio` | Diagram editor |
|
|
355
|
+
|
|
356
|
+
### Utilities
|
|
357
|
+
| File | Command | Description |
|
|
358
|
+
|------|---------|-------------|
|
|
359
|
+
| `jq.js` | `dev install jq` | JSON processor |
|
|
360
|
+
| `yq.js` | `dev install yq` | YAML processor |
|
|
361
|
+
| `shellcheck.js` | `dev install shellcheck` | Shell script linter |
|
|
362
|
+
| `tree.js` | `dev install tree` | Directory tree viewer |
|
|
363
|
+
| `appcleaner.js` | `dev install appcleaner` | macOS app uninstaller |
|
|
364
|
+
| `beyond-compare.js` | `dev install beyond-compare` | File comparison |
|
|
365
|
+
| `balena-etcher.js` | `dev install balena-etcher` | Flash OS images |
|
|
366
|
+
| `termius.js` | `dev install termius` | SSH client |
|
|
367
|
+
|
|
368
|
+
### Documents
|
|
369
|
+
| File | Command | Description |
|
|
370
|
+
|------|---------|-------------|
|
|
371
|
+
| `pandoc.js` | `dev install pandoc` | Document converter |
|
|
372
|
+
| `latex.js` | `dev install latex` | LaTeX typesetting |
|
|
373
|
+
|
|
374
|
+
### Web Font Tools
|
|
375
|
+
| File | Command | Description |
|
|
376
|
+
|------|---------|-------------|
|
|
377
|
+
| `sfnt2woff.js` | `dev install sfnt2woff` | TTF/OTF to WOFF |
|
|
378
|
+
| `woff2.js` | `dev install woff2` | WOFF2 encoder/decoder |
|
|
379
|
+
|
|
380
|
+
### 3D Printing
|
|
381
|
+
| File | Command | Description |
|
|
382
|
+
|------|---------|-------------|
|
|
383
|
+
| `bambu-studio.js` | `dev install bambu-studio` | Bambu 3D printer slicer |
|
|
384
|
+
|
|
385
|
+
## Adding New Install Scripts
|
|
386
|
+
|
|
387
|
+
1. Create `<name>.js` in this folder
|
|
388
|
+
2. Import the OS detection utility from `../utils/os`
|
|
389
|
+
3. Implement platform-specific installation logic
|
|
390
|
+
4. Export an `install()` function
|
|
391
|
+
|
|
392
|
+
## Related
|
|
393
|
+
|
|
394
|
+
- **Commands** (`../commands/`) — The `install.js` command handler
|
|
395
|
+
- **Utils** (`../utils/`) — OS detection and shell execution helpers
|
|
396
|
+
|
|
397
|
+
## Documentation
|
|
398
|
+
|
|
399
|
+
See [docs/COMMANDS.md](../../docs/COMMANDS.md) for the `dev install` command specification.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview Install Adobe Creative Cloud.
|
|
5
|
+
* @module installs/adobe-creative-cloud
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const os = require('../utils/common/os');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Install Adobe Creative Cloud across supported platforms.
|
|
12
|
+
*
|
|
13
|
+
* @returns {Promise<void>}
|
|
14
|
+
*/
|
|
15
|
+
async function install() {
|
|
16
|
+
const platform = os.detect();
|
|
17
|
+
|
|
18
|
+
switch (platform.type) {
|
|
19
|
+
case 'macos':
|
|
20
|
+
// TODO: Implement macOS installation
|
|
21
|
+
break;
|
|
22
|
+
case 'debian':
|
|
23
|
+
// TODO: Implement Debian/Ubuntu installation
|
|
24
|
+
break;
|
|
25
|
+
case 'rhel':
|
|
26
|
+
// TODO: Implement RHEL/Amazon Linux installation
|
|
27
|
+
break;
|
|
28
|
+
case 'windows-wsl':
|
|
29
|
+
// TODO: Implement WSL installation
|
|
30
|
+
break;
|
|
31
|
+
case 'windows':
|
|
32
|
+
// TODO: Implement Windows installation
|
|
33
|
+
break;
|
|
34
|
+
default:
|
|
35
|
+
console.error(`Unsupported platform: ${platform.type}`);
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
module.exports = { install };
|
|
41
|
+
|
|
42
|
+
if (require.main === module) {
|
|
43
|
+
install();
|
|
44
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview Install AppCleaner.
|
|
5
|
+
* @module installs/appcleaner
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const os = require('../utils/common/os');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Install AppCleaner across supported platforms.
|
|
12
|
+
*
|
|
13
|
+
* @returns {Promise<void>}
|
|
14
|
+
*/
|
|
15
|
+
async function install() {
|
|
16
|
+
const platform = os.detect();
|
|
17
|
+
|
|
18
|
+
switch (platform.type) {
|
|
19
|
+
case 'macos':
|
|
20
|
+
// TODO: Implement macOS installation
|
|
21
|
+
break;
|
|
22
|
+
case 'debian':
|
|
23
|
+
// TODO: Implement Debian/Ubuntu installation
|
|
24
|
+
break;
|
|
25
|
+
case 'rhel':
|
|
26
|
+
// TODO: Implement RHEL/Amazon Linux installation
|
|
27
|
+
break;
|
|
28
|
+
case 'windows-wsl':
|
|
29
|
+
// TODO: Implement WSL installation
|
|
30
|
+
break;
|
|
31
|
+
case 'windows':
|
|
32
|
+
// TODO: Implement Windows installation
|
|
33
|
+
break;
|
|
34
|
+
default:
|
|
35
|
+
console.error(`Unsupported platform: ${platform.type}`);
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
module.exports = { install };
|
|
41
|
+
|
|
42
|
+
if (require.main === module) {
|
|
43
|
+
install();
|
|
44
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview Install AtomicParsley.
|
|
5
|
+
* @module installs/atomicparsley
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const os = require('../utils/common/os');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Install AtomicParsley across supported platforms.
|
|
12
|
+
*
|
|
13
|
+
* @returns {Promise<void>}
|
|
14
|
+
*/
|
|
15
|
+
async function install() {
|
|
16
|
+
const platform = os.detect();
|
|
17
|
+
|
|
18
|
+
switch (platform.type) {
|
|
19
|
+
case 'macos':
|
|
20
|
+
// TODO: Implement macOS installation
|
|
21
|
+
break;
|
|
22
|
+
case 'debian':
|
|
23
|
+
// TODO: Implement Debian/Ubuntu installation
|
|
24
|
+
break;
|
|
25
|
+
case 'rhel':
|
|
26
|
+
// TODO: Implement RHEL/Amazon Linux installation
|
|
27
|
+
break;
|
|
28
|
+
case 'windows-wsl':
|
|
29
|
+
// TODO: Implement WSL installation
|
|
30
|
+
break;
|
|
31
|
+
case 'windows':
|
|
32
|
+
// TODO: Implement Windows installation
|
|
33
|
+
break;
|
|
34
|
+
default:
|
|
35
|
+
console.error(`Unsupported platform: ${platform.type}`);
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
module.exports = { install };
|
|
41
|
+
|
|
42
|
+
if (require.main === module) {
|
|
43
|
+
install();
|
|
44
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview Install AWS CLI.
|
|
5
|
+
* @module installs/aws-cli
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const os = require('../utils/common/os');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Install AWS CLI across supported platforms.
|
|
12
|
+
*
|
|
13
|
+
* @returns {Promise<void>}
|
|
14
|
+
*/
|
|
15
|
+
async function install() {
|
|
16
|
+
const platform = os.detect();
|
|
17
|
+
|
|
18
|
+
switch (platform.type) {
|
|
19
|
+
case 'macos':
|
|
20
|
+
// TODO: Implement macOS installation
|
|
21
|
+
break;
|
|
22
|
+
case 'debian':
|
|
23
|
+
// TODO: Implement Debian/Ubuntu installation
|
|
24
|
+
break;
|
|
25
|
+
case 'rhel':
|
|
26
|
+
// TODO: Implement RHEL/Amazon Linux installation
|
|
27
|
+
break;
|
|
28
|
+
case 'windows-wsl':
|
|
29
|
+
// TODO: Implement WSL installation
|
|
30
|
+
break;
|
|
31
|
+
case 'windows':
|
|
32
|
+
// TODO: Implement Windows installation
|
|
33
|
+
break;
|
|
34
|
+
default:
|
|
35
|
+
console.error(`Unsupported platform: ${platform.type}`);
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
module.exports = { install };
|
|
41
|
+
|
|
42
|
+
if (require.main === module) {
|
|
43
|
+
install();
|
|
44
|
+
}
|