@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.
Files changed (200) hide show
  1. package/README.md +156 -0
  2. package/bin/dev.js +16 -0
  3. package/files/README.md +0 -0
  4. package/files/claude/.claude/commands/setup-context.md +3 -0
  5. package/files/monorepos/_archive/README.md +36 -0
  6. package/files/monorepos/_legacy/README.md +36 -0
  7. package/files/monorepos/ai-docs/README.md +33 -0
  8. package/files/monorepos/apps/README.md +24 -0
  9. package/files/monorepos/docs/README.md +40 -0
  10. package/files/monorepos/packages/README.md +25 -0
  11. package/files/monorepos/research/README.md +29 -0
  12. package/files/monorepos/scripts/README.md +24 -0
  13. package/package.json +39 -0
  14. package/src/cli.js +68 -0
  15. package/src/commands/README.md +41 -0
  16. package/src/commands/configure.js +199 -0
  17. package/src/commands/identity.js +1630 -0
  18. package/src/commands/ignore.js +247 -0
  19. package/src/commands/install.js +173 -0
  20. package/src/commands/setup.js +212 -0
  21. package/src/commands/status.js +223 -0
  22. package/src/completion.js +284 -0
  23. package/src/constants.js +45 -0
  24. package/src/ignore/claude-code.txt +10 -0
  25. package/src/ignore/docker.txt +18 -0
  26. package/src/ignore/linux.txt +23 -0
  27. package/src/ignore/macos.txt +36 -0
  28. package/src/ignore/node.txt +55 -0
  29. package/src/ignore/terraform.txt +37 -0
  30. package/src/ignore/vscode.txt +18 -0
  31. package/src/ignore/windows.txt +35 -0
  32. package/src/index.js +0 -0
  33. package/src/installs/README.md +399 -0
  34. package/src/installs/adobe-creative-cloud.js +44 -0
  35. package/src/installs/appcleaner.js +44 -0
  36. package/src/installs/atomicparsley.js +44 -0
  37. package/src/installs/aws-cli.js +44 -0
  38. package/src/installs/balena-etcher.js +44 -0
  39. package/src/installs/bambu-studio.js +44 -0
  40. package/src/installs/bash-completion.js +44 -0
  41. package/src/installs/bash.js +44 -0
  42. package/src/installs/beyond-compare.js +44 -0
  43. package/src/installs/build-essential.js +44 -0
  44. package/src/installs/caffeine.js +44 -0
  45. package/src/installs/camtasia.js +44 -0
  46. package/src/installs/chatgpt.js +44 -0
  47. package/src/installs/chrome-canary.js +44 -0
  48. package/src/installs/chromium.js +44 -0
  49. package/src/installs/claude-code.js +44 -0
  50. package/src/installs/curl.js +44 -0
  51. package/src/installs/cursor.js +44 -0
  52. package/src/installs/dbschema.js +44 -0
  53. package/src/installs/docker.js +44 -0
  54. package/src/installs/drawio.js +44 -0
  55. package/src/installs/elmedia-player.js +44 -0
  56. package/src/installs/ffmpeg.js +44 -0
  57. package/src/installs/gemini-cli.js +44 -0
  58. package/src/installs/git.js +44 -0
  59. package/src/installs/gitego.js +44 -0
  60. package/src/installs/go.js +44 -0
  61. package/src/installs/google-chrome.js +44 -0
  62. package/src/installs/gpg.js +141 -0
  63. package/src/installs/homebrew.js +44 -0
  64. package/src/installs/imageoptim.js +44 -0
  65. package/src/installs/jq.js +44 -0
  66. package/src/installs/keyboard-maestro.js +44 -0
  67. package/src/installs/latex.js +44 -0
  68. package/src/installs/lftp.js +44 -0
  69. package/src/installs/messenger.js +44 -0
  70. package/src/installs/microsoft-office.js +44 -0
  71. package/src/installs/microsoft-teams.js +44 -0
  72. package/src/installs/node.js +44 -0
  73. package/src/installs/nordpass.js +44 -0
  74. package/src/installs/nvm.js +44 -0
  75. package/src/installs/openssh.js +134 -0
  76. package/src/installs/pandoc.js +44 -0
  77. package/src/installs/pinentry.js +44 -0
  78. package/src/installs/pngyu.js +44 -0
  79. package/src/installs/postman.js +44 -0
  80. package/src/installs/safari-tech-preview.js +44 -0
  81. package/src/installs/sfnt2woff.js +44 -0
  82. package/src/installs/shellcheck.js +44 -0
  83. package/src/installs/slack.js +44 -0
  84. package/src/installs/snagit.js +44 -0
  85. package/src/installs/spotify.js +44 -0
  86. package/src/installs/studio-3t.js +44 -0
  87. package/src/installs/sublime-text.js +44 -0
  88. package/src/installs/superwhisper.js +44 -0
  89. package/src/installs/tailscale.js +44 -0
  90. package/src/installs/termius.js +44 -0
  91. package/src/installs/terraform.js +44 -0
  92. package/src/installs/tidal.js +44 -0
  93. package/src/installs/tmux.js +44 -0
  94. package/src/installs/tree.js +44 -0
  95. package/src/installs/vim.js +44 -0
  96. package/src/installs/vlc.js +44 -0
  97. package/src/installs/vscode.js +44 -0
  98. package/src/installs/whatsapp.js +44 -0
  99. package/src/installs/woff2.js +44 -0
  100. package/src/installs/xcode.js +44 -0
  101. package/src/installs/yarn.js +44 -0
  102. package/src/installs/yq.js +44 -0
  103. package/src/installs/yt-dlp.js +44 -0
  104. package/src/installs/zoom.js +44 -0
  105. package/src/scripts/README.md +95 -0
  106. package/src/scripts/afk.js +23 -0
  107. package/src/scripts/backup-all.js +24 -0
  108. package/src/scripts/backup-source.js +24 -0
  109. package/src/scripts/brewd.js +23 -0
  110. package/src/scripts/brewi.js +24 -0
  111. package/src/scripts/brewr.js +24 -0
  112. package/src/scripts/brews.js +24 -0
  113. package/src/scripts/brewu.js +23 -0
  114. package/src/scripts/c.js +23 -0
  115. package/src/scripts/ccurl.js +24 -0
  116. package/src/scripts/certbot-crontab-init.js +24 -0
  117. package/src/scripts/certbot-init.js +25 -0
  118. package/src/scripts/ch.js +23 -0
  119. package/src/scripts/claude-danger.js +23 -0
  120. package/src/scripts/clean-dev.js +24 -0
  121. package/src/scripts/clear-dns-cache.js +23 -0
  122. package/src/scripts/clone.js +25 -0
  123. package/src/scripts/code-all.js +24 -0
  124. package/src/scripts/count-files.js +24 -0
  125. package/src/scripts/count-folders.js +24 -0
  126. package/src/scripts/count.js +24 -0
  127. package/src/scripts/d.js +23 -0
  128. package/src/scripts/datauri.js +24 -0
  129. package/src/scripts/delete-files.js +24 -0
  130. package/src/scripts/docker-clean.js +24 -0
  131. package/src/scripts/dp.js +23 -0
  132. package/src/scripts/e.js +24 -0
  133. package/src/scripts/empty-trash.js +23 -0
  134. package/src/scripts/evm.js +25 -0
  135. package/src/scripts/fetch-github-repos.js +25 -0
  136. package/src/scripts/get-channel.js +24 -0
  137. package/src/scripts/get-course.js +26 -0
  138. package/src/scripts/get-dependencies.js +25 -0
  139. package/src/scripts/get-folder.js +26 -0
  140. package/src/scripts/get-tunes.js +25 -0
  141. package/src/scripts/get-video.js +24 -0
  142. package/src/scripts/git-backup.js +25 -0
  143. package/src/scripts/git-clone.js +25 -0
  144. package/src/scripts/git-pup.js +23 -0
  145. package/src/scripts/git-push.js +24 -0
  146. package/src/scripts/h.js +24 -0
  147. package/src/scripts/hide-desktop-icons.js +23 -0
  148. package/src/scripts/hide-hidden-files.js +23 -0
  149. package/src/scripts/install-dependencies-from.js +25 -0
  150. package/src/scripts/ips.js +26 -0
  151. package/src/scripts/iso.js +24 -0
  152. package/src/scripts/killni.js +23 -0
  153. package/src/scripts/ll.js +24 -0
  154. package/src/scripts/local-ip.js +23 -0
  155. package/src/scripts/m.js +24 -0
  156. package/src/scripts/map.js +24 -0
  157. package/src/scripts/mkd.js +24 -0
  158. package/src/scripts/ncu-update-all.js +24 -0
  159. package/src/scripts/nginx-init.js +28 -0
  160. package/src/scripts/npmi.js +23 -0
  161. package/src/scripts/o.js +24 -0
  162. package/src/scripts/org-by-date.js +24 -0
  163. package/src/scripts/p.js +23 -0
  164. package/src/scripts/packages.js +25 -0
  165. package/src/scripts/path.js +23 -0
  166. package/src/scripts/ports.js +23 -0
  167. package/src/scripts/q.js +23 -0
  168. package/src/scripts/refresh-files.js +26 -0
  169. package/src/scripts/remove-smaller-files.js +24 -0
  170. package/src/scripts/rename-files-with-date.js +25 -0
  171. package/src/scripts/resize-image.js +25 -0
  172. package/src/scripts/rm-safe.js +24 -0
  173. package/src/scripts/s.js +24 -0
  174. package/src/scripts/set-git-public.js +23 -0
  175. package/src/scripts/show-desktop-icons.js +23 -0
  176. package/src/scripts/show-hidden-files.js +23 -0
  177. package/src/scripts/tpa.js +23 -0
  178. package/src/scripts/tpo.js +23 -0
  179. package/src/scripts/u.js +23 -0
  180. package/src/scripts/vpush.js +23 -0
  181. package/src/scripts/y.js +23 -0
  182. package/src/utils/README.md +95 -0
  183. package/src/utils/common/apps.js +143 -0
  184. package/src/utils/common/display.js +157 -0
  185. package/src/utils/common/network.js +185 -0
  186. package/src/utils/common/os.js +202 -0
  187. package/src/utils/common/package-manager.js +301 -0
  188. package/src/utils/common/privileges.js +138 -0
  189. package/src/utils/common/shell.js +195 -0
  190. package/src/utils/macos/apps.js +228 -0
  191. package/src/utils/macos/brew.js +315 -0
  192. package/src/utils/ubuntu/apt.js +301 -0
  193. package/src/utils/ubuntu/desktop.js +292 -0
  194. package/src/utils/ubuntu/snap.js +302 -0
  195. package/src/utils/ubuntu/systemd.js +286 -0
  196. package/src/utils/windows/choco.js +327 -0
  197. package/src/utils/windows/env.js +246 -0
  198. package/src/utils/windows/registry.js +269 -0
  199. package/src/utils/windows/shell.js +240 -0
  200. package/src/utils/windows/winget.js +378 -0
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * @fileoverview Install Keyboard Maestro.
5
+ * @module installs/keyboard-maestro
6
+ */
7
+
8
+ const os = require('../utils/common/os');
9
+
10
+ /**
11
+ * Install Keyboard Maestro 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 LaTeX.
5
+ * @module installs/latex
6
+ */
7
+
8
+ const os = require('../utils/common/os');
9
+
10
+ /**
11
+ * Install LaTeX 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 LFTP.
5
+ * @module installs/lftp
6
+ */
7
+
8
+ const os = require('../utils/common/os');
9
+
10
+ /**
11
+ * Install LFTP 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 Messenger.
5
+ * @module installs/messenger
6
+ */
7
+
8
+ const os = require('../utils/common/os');
9
+
10
+ /**
11
+ * Install Messenger 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 Microsoft Office 365.
5
+ * @module installs/microsoft-office
6
+ */
7
+
8
+ const os = require('../utils/common/os');
9
+
10
+ /**
11
+ * Install Microsoft Office 365 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 Microsoft Teams.
5
+ * @module installs/microsoft-teams
6
+ */
7
+
8
+ const os = require('../utils/common/os');
9
+
10
+ /**
11
+ * Install Microsoft Teams 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 Node.js.
5
+ * @module installs/node
6
+ */
7
+
8
+ const os = require('../utils/common/os');
9
+
10
+ /**
11
+ * Install Node.js 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 Nord Pass.
5
+ * @module installs/nordpass
6
+ */
7
+
8
+ const os = require('../utils/common/os');
9
+
10
+ /**
11
+ * Install Nord Pass 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 Node Version Manager.
5
+ * @module installs/nvm
6
+ */
7
+
8
+ const os = require('../utils/common/os');
9
+
10
+ /**
11
+ * Install Node Version Manager 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,134 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * @fileoverview Install OpenSSH (provides ssh-keygen).
5
+ * @module installs/openssh
6
+ */
7
+
8
+ const os = require('../utils/common/os');
9
+ const shell = require('../utils/common/shell');
10
+
11
+ /**
12
+ * Check if ssh-keygen is installed
13
+ * @returns {boolean}
14
+ */
15
+ function isInstalled() {
16
+ return shell.commandExists('ssh-keygen');
17
+ }
18
+
19
+ /**
20
+ * Install OpenSSH on macOS
21
+ * @returns {Promise<boolean>}
22
+ */
23
+ async function install_macos() {
24
+ // ssh-keygen is built-in on macOS, nothing to install
25
+ console.log('ssh-keygen is built-in on macOS.');
26
+ return true;
27
+ }
28
+
29
+ /**
30
+ * Install OpenSSH on Ubuntu/Debian
31
+ * @returns {Promise<boolean>}
32
+ */
33
+ async function install_debian() {
34
+ console.log('Installing openssh-client...');
35
+ const result = await shell.exec('sudo apt-get update && sudo apt-get install -y openssh-client');
36
+ return result.code === 0;
37
+ }
38
+
39
+ /**
40
+ * Install OpenSSH on Raspberry Pi
41
+ * @returns {Promise<boolean>}
42
+ */
43
+ async function install_raspbian() {
44
+ return install_debian();
45
+ }
46
+
47
+ /**
48
+ * Install OpenSSH on Amazon Linux/RHEL/Fedora
49
+ * @returns {Promise<boolean>}
50
+ */
51
+ async function install_rhel() {
52
+ const platform = os.detect();
53
+ const pm = platform.packageManager || 'yum';
54
+ console.log('Installing openssh-clients...');
55
+ const result = await shell.exec(`sudo ${pm} install -y openssh-clients`);
56
+ return result.code === 0;
57
+ }
58
+
59
+ /**
60
+ * Install OpenSSH on Windows
61
+ * @returns {Promise<boolean>}
62
+ */
63
+ async function install_windows() {
64
+ console.log('Installing OpenSSH via winget...');
65
+ const result = await shell.exec('winget install -e --id Microsoft.OpenSSH.Beta --accept-source-agreements --accept-package-agreements');
66
+ if (result.code !== 0) {
67
+ console.log('Trying chocolatey...');
68
+ const chocoResult = await shell.exec('choco install openssh -y');
69
+ return chocoResult.code === 0;
70
+ }
71
+ return true;
72
+ }
73
+
74
+ /**
75
+ * Install OpenSSH on WSL
76
+ * @returns {Promise<boolean>}
77
+ */
78
+ async function install_wsl() {
79
+ return install_debian();
80
+ }
81
+
82
+ /**
83
+ * Install OpenSSH across supported platforms.
84
+ * @returns {Promise<boolean>}
85
+ */
86
+ async function install() {
87
+ if (isInstalled()) {
88
+ console.log('ssh-keygen is already installed.');
89
+ return true;
90
+ }
91
+
92
+ const platform = os.detect();
93
+
94
+ const installers = {
95
+ 'macos': install_macos,
96
+ 'ubuntu': install_debian,
97
+ 'debian': install_debian,
98
+ 'raspbian': install_raspbian,
99
+ 'amazon_linux': install_rhel,
100
+ 'fedora': install_rhel,
101
+ 'rhel': install_rhel,
102
+ 'windows': install_windows,
103
+ 'wsl': install_wsl
104
+ };
105
+
106
+ const installer = installers[platform.type];
107
+ if (!installer) {
108
+ console.error(`Unsupported platform: ${platform.type}`);
109
+ return false;
110
+ }
111
+
112
+ const success = await installer();
113
+ if (success) {
114
+ console.log('OpenSSH installed successfully.');
115
+ } else {
116
+ console.error('Failed to install OpenSSH.');
117
+ }
118
+ return success;
119
+ }
120
+
121
+ module.exports = {
122
+ install,
123
+ isInstalled,
124
+ install_macos,
125
+ install_debian,
126
+ install_raspbian,
127
+ install_rhel,
128
+ install_windows,
129
+ install_wsl
130
+ };
131
+
132
+ if (require.main === module) {
133
+ install();
134
+ }
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * @fileoverview Install Pandoc.
5
+ * @module installs/pandoc
6
+ */
7
+
8
+ const os = require('../utils/common/os');
9
+
10
+ /**
11
+ * Install Pandoc 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 Pinentry.
5
+ * @module installs/pinentry
6
+ */
7
+
8
+ const os = require('../utils/common/os');
9
+
10
+ /**
11
+ * Install Pinentry 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 Pngyu.
5
+ * @module installs/pngyu
6
+ */
7
+
8
+ const os = require('../utils/common/os');
9
+
10
+ /**
11
+ * Install Pngyu 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
+ }