@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
package/README.md ADDED
@@ -0,0 +1,156 @@
1
+ # DevUtils CLI
2
+
3
+ > **Early Development (v0.0.1)** — This project is currently a proof of concept. Core functionality is being built and tested. You're welcome to:
4
+ > - Use it as-is and provide feedback
5
+ > - Participate in development
6
+ > - Watch for future releases (v0.1.0 for beta, v1.0.0 for stable)
7
+ > - [Reach out](#contact) with questions or suggestions
8
+
9
+ Stop wasting hours setting up new machines. One command, any platform, ready to code.
10
+
11
+ ## The Problem
12
+
13
+ Every developer knows the pain:
14
+ - New laptop? Spend a day installing tools and configuring dotfiles
15
+ - Switch between work and personal projects? Juggle SSH keys and git configs
16
+ - Help a teammate set up their environment? Walk them through 50 different steps
17
+ - Work on macOS at home, Linux in prod? Remember two sets of commands
18
+
19
+ ## The Solution
20
+
21
+ ```bash
22
+ npm install -g @fredlackey/devutils
23
+ dev setup
24
+ ```
25
+
26
+ That's it. DevUtils CLI detects your operating system and installs everything you need. Your configuration travels with you.
27
+
28
+ ## Installation
29
+
30
+ ```bash
31
+ npm install -g @fredlackey/devutils
32
+ ```
33
+
34
+ **Requirements:** Node.js 18+
35
+
36
+ ## Quick Start
37
+
38
+ ```bash
39
+ # Install essential tools (git, ssh, gpg, etc.)
40
+ dev setup
41
+
42
+ # Set up your developer profile
43
+ dev configure
44
+
45
+ # Install your favorite tools
46
+ dev install vscode
47
+ dev install docker
48
+ dev install node
49
+ ```
50
+
51
+ ## Key Features
52
+
53
+ ### Cross-Platform Package Installation
54
+
55
+ Forget whether it's `brew install`, `apt-get install`, or `choco install`. Just run:
56
+
57
+ ```bash
58
+ dev install docker
59
+ dev install node
60
+ dev install vscode
61
+ ```
62
+
63
+ DevUtils CLI figures out the right command for macOS, Ubuntu, Debian, Amazon Linux, Fedora, or Windows.
64
+
65
+ ### Git Identity Management
66
+
67
+ Manage multiple git identities for work, personal, and client projects:
68
+
69
+ ```bash
70
+ # Create identities with SSH and GPG keys
71
+ dev identity add work --email you@company.com
72
+ dev identity add personal --email you@gmail.com
73
+
74
+ # Link identities to folders - commits automatically use the right credentials
75
+ dev identity link work ~/work
76
+ dev identity link personal ~/personal https://github.com/yourusername
77
+ ```
78
+
79
+ Clone with any URL format. DevUtils CLI routes it through the correct SSH key automatically.
80
+
81
+ ### Smart .gitignore Management
82
+
83
+ ```bash
84
+ dev ignore node # Add Node.js patterns
85
+ dev ignore macos # Add .DS_Store and friends
86
+ dev ignore vscode # Add .vscode/ patterns
87
+ ```
88
+
89
+ Patterns are managed in sections—run it twice and it won't duplicate.
90
+
91
+ ### Portable Configuration
92
+
93
+ Your `~/.devutils` file stores your preferences:
94
+
95
+ ```json
96
+ {
97
+ "user": {
98
+ "name": "Jane Developer",
99
+ "email": "jane@example.com"
100
+ },
101
+ "identities": {
102
+ "work": { "email": "jane@company.com", "sshKey": "~/.ssh/id_ed25519_work" },
103
+ "personal": { "email": "jane@gmail.com", "sshKey": "~/.ssh/id_ed25519_personal" }
104
+ }
105
+ }
106
+ ```
107
+
108
+ Copy this file to a new machine and run `dev identity sync` to regenerate all your SSH configs.
109
+
110
+ ## Supported Platforms
111
+
112
+ | Platform | Package Manager |
113
+ |----------|-----------------|
114
+ | macOS | Homebrew |
115
+ | Ubuntu / Debian | APT |
116
+ | Raspberry Pi OS | APT |
117
+ | Amazon Linux / RHEL / Fedora | DNF / YUM |
118
+ | Windows | Chocolatey / winget |
119
+ | WSL | APT (with Windows integration) |
120
+
121
+ ## Available Commands
122
+
123
+ | Command | Description |
124
+ |---------|-------------|
125
+ | `dev setup` | Install essential development tools |
126
+ | `dev configure` | Set up your developer profile |
127
+ | `dev install <tool>` | Install a tool (cross-platform) |
128
+ | `dev identity add` | Create a new git identity with keys |
129
+ | `dev identity link` | Link an identity to a folder or remote |
130
+ | `dev identity unlink` | Remove a folder link |
131
+ | `dev ignore <tech>` | Add .gitignore patterns |
132
+ | `dev status` | Show current configuration |
133
+
134
+ ## Why DevUtils CLI?
135
+
136
+ - **Zero memorization** — Same commands on every platform
137
+ - **Identity isolation** — Never accidentally commit with the wrong email again
138
+ - **Reproducible setups** — New machine? `dev setup && dev identity sync`
139
+ - **No lock-in** — Standard tools, standard configs. Uninstall anytime
140
+
141
+ ## Contributing
142
+
143
+ Contributions welcome! Feel free to open issues or submit pull requests.
144
+
145
+ ## Contact
146
+
147
+ Questions, suggestions, or just want to chat about the project?
148
+
149
+ **Fred Lackey**
150
+ - Email: [fred.lackey@gmail.com](mailto:fred.lackey@gmail.com)
151
+ - Website: [fredlackey.com](https://fredlackey.com)
152
+ - GitHub: [@FredLackey](https://github.com/FredLackey)
153
+
154
+ ## License
155
+
156
+ Apache-2.0
package/bin/dev.js ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * @fileoverview Main entry point for the `dev` CLI command.
5
+ * This file handles tab completion detection and delegates to the CLI module.
6
+ */
7
+
8
+ // Handle tab completion before loading the full CLI
9
+ // This allows for fast completion responses
10
+ if (process.env.COMP_LINE) {
11
+ require('../src/completion').handleCompletion();
12
+ process.exit(0);
13
+ }
14
+
15
+ // Normal CLI execution
16
+ require('../src/cli').run();
File without changes
@@ -0,0 +1,3 @@
1
+ Read the following files for context:
2
+ - README.md
3
+ - CLAUDE.md
@@ -0,0 +1,36 @@
1
+ # Archive
2
+
3
+ **DO NOT READ OR MODIFY CONTENTS OF THIS FOLDER.**
4
+
5
+ ## Purpose
6
+
7
+ This folder is a **failsafe backup**—a last resort for code and resources that may need to be referenced in rare circumstances. Think of it as a "soft delete" before permanent removal.
8
+
9
+ ## Critical Warnings
10
+
11
+ - **Nothing in this folder should be trusted as correct**
12
+ - Contents are outdated, deprecated, or potentially broken
13
+ - Code here has been replaced by better implementations elsewhere
14
+ - Documentation may be inaccurate or misleading
15
+
16
+ ## AI Instructions
17
+
18
+ **This folder must be ignored by all AI processes:**
19
+ - Do NOT read files from this folder
20
+ - Do NOT reference code or patterns found here
21
+ - Do NOT modify or update any contents
22
+ - Do NOT use this folder as a source of truth for anything
23
+
24
+ ## What Belongs Here
25
+
26
+ - Deprecated code kept only as an emergency reference
27
+ - Old implementations preserved before deletion
28
+ - Retired features that might need forensic review
29
+ - Anything we're not ready to permanently delete
30
+
31
+ ## Guidelines
32
+
33
+ - Date items when archiving (use folder names like `YYYYMMDD/`)
34
+ - Include a brief note explaining why the item was archived
35
+ - Never actively maintain or improve archived code
36
+ - Periodically review and permanently delete obsolete items
@@ -0,0 +1,36 @@
1
+ # Legacy
2
+
3
+ **CONTENTS SHOULD NOT BE TRUSTED. USE WITH CAUTION.**
4
+
5
+ ## Purpose
6
+
7
+ This folder contains **previous attempts** at building the same concepts, packages, or even the entire project. Think of it as the "last version" or "last attempt" before the current rebuild.
8
+
9
+ We keep this code for reference, but if we're rebuilding, it's for a reason:
10
+
11
+ - **A)** We learned enough about the problem and now want to do it properly
12
+ - **B)** We failed completely and need to start over, but want to remember our mistakes
13
+
14
+ This folder is one step better than `/_archive`—we may occasionally refer to it—but it still should not be treated as a source of truth.
15
+
16
+ ## AI Instructions
17
+
18
+ **Approach this folder with skepticism:**
19
+ - Do NOT trust patterns or implementations found here
20
+ - Do NOT copy code from this folder without explicit instruction
21
+ - Do NOT use this as a reference for "how things should work"
22
+ - Contents represent what we're moving *away from*, not toward
23
+
24
+ ## What Belongs Here
25
+
26
+ - Previous iterations of the current project
27
+ - Failed attempts preserved for learning
28
+ - Old architectures we've outgrown
29
+ - Code that "worked" but wasn't good enough
30
+
31
+ ## Guidelines
32
+
33
+ - Note why the previous attempt was abandoned
34
+ - Reference only when specifically trying to avoid past mistakes
35
+ - Never improve or maintain legacy code—build new instead
36
+ - Move to `/_archive` once the new implementation is stable and proven
@@ -0,0 +1,33 @@
1
+ # AI Docs
2
+
3
+ This folder contains documentation **created by AI, for AI**.
4
+
5
+ ## Purpose
6
+
7
+ A persistent knowledge base that preserves AI research, discoveries, and insights so they don't have to be repeated. When AI investigates a concept, researches a technique, or works through a problem, the findings are documented here for future reference.
8
+
9
+ This eliminates redundant research and discovery processes across sessions.
10
+
11
+ ## Usage
12
+
13
+ - AI writes documentation here after research or discovery work
14
+ - AI reads from this folder to recall prior findings
15
+ - Humans may reference content but it's optimized for AI consumption
16
+ - Treat as a "memory" that persists between AI sessions
17
+
18
+ ## What Belongs Here
19
+
20
+ - Research findings and conclusions
21
+ - Technology evaluations and comparisons
22
+ - Best practices and implementation patterns
23
+ - Convention documentation and standards
24
+ - Schema definitions
25
+ - Brainstorming outcomes and design decisions
26
+ - Concept explanations and technical deep-dives
27
+
28
+ ## Guidelines
29
+
30
+ - Write in clear, structured formats AI can easily parse
31
+ - Include context about why research was performed
32
+ - Update documents as understanding evolves
33
+ - Prefer comprehensive detail over brevity
@@ -0,0 +1,24 @@
1
+ # Apps
2
+
3
+ This folder contains the main applications for the project.
4
+
5
+ ## Purpose
6
+
7
+ Each application in this folder represents a distinct, deployable unit—whether it's a frontend, backend API, admin tool, or other service. Applications are organized as separate subdirectories, each with their own dependencies and configuration.
8
+
9
+ ## Structure
10
+
11
+ ```
12
+ apps/
13
+ ├── [app-name]-ui-[framework]/ # Frontend applications
14
+ ├── [app-name]-api-[framework]/ # Backend API services
15
+ ├── [app-name]-admin-[framework]/ # Admin tools
16
+ └── ...
17
+ ```
18
+
19
+ ## Guidelines
20
+
21
+ - Each application should be independently runnable
22
+ - Applications may depend on shared code from `/packages`
23
+ - Keep application-specific code within its subdirectory
24
+ - Use consistent naming: `[project]-[type]-[framework]`
@@ -0,0 +1,40 @@
1
+ # Docs
2
+
3
+ This folder contains documentation **created by humans, for humans**.
4
+
5
+ ## Purpose
6
+
7
+ The counterpart to `/ai-docs`—this folder holds documentation intended for human authors and human readers. Content here should be accessible, verbose enough for clarity, and written so that a junior developer or project manager can understand it.
8
+
9
+ AI may assist with editing, formatting, or refining language, but the content is fundamentally human-focused.
10
+
11
+ ## Audience
12
+
13
+ - Junior developers onboarding to the project
14
+ - Project managers needing business context
15
+ - Team members referencing technical decisions
16
+ - External contributors or stakeholders
17
+
18
+ ## What Belongs Here
19
+
20
+ - Architecture decision records (ADRs)
21
+ - Setup and installation guides
22
+ - API documentation and usage examples
23
+ - Business logic explanations
24
+ - Deployment and operations guides
25
+ - Contributing guidelines
26
+ - Project overviews and roadmaps
27
+
28
+ ## Guidelines
29
+
30
+ - Write for clarity over brevity
31
+ - Assume the reader may not have full context
32
+ - Explain the "why" alongside the "what"
33
+ - Use plain language; avoid unnecessary jargon
34
+ - Include examples where helpful
35
+
36
+ ## What Does NOT Belong Here
37
+
38
+ - AI-generated research or discovery docs (use `/ai-docs`)
39
+ - Exploratory research materials (use `/research`)
40
+ - Auto-generated API docs (keep with the relevant app)
@@ -0,0 +1,25 @@
1
+ # Packages
2
+
3
+ This folder contains shared libraries and utilities used across applications.
4
+
5
+ ## Purpose
6
+
7
+ Packages are reusable code modules that provide common functionality to multiple applications in the monorepo. This promotes code reuse, consistency, and maintainability across the project.
8
+
9
+ ## Structure
10
+
11
+ ```
12
+ packages/
13
+ ├── [project]-utils/ # Utility functions and helpers
14
+ ├── [project]-types/ # Shared type definitions
15
+ ├── [project]-config/ # Shared configuration
16
+ └── ...
17
+ ```
18
+
19
+ ## Guidelines
20
+
21
+ - Packages should be framework-agnostic when possible
22
+ - Each package should have a single, well-defined responsibility
23
+ - Packages are imported by applications in `/apps`
24
+ - Keep packages small and focused
25
+ - Document public APIs within each package
@@ -0,0 +1,29 @@
1
+ # Research
2
+
3
+ This folder is a **workspace for reference artifacts**—often excluded from version control.
4
+
5
+ ## Purpose
6
+
7
+ A staging area where developers can pull in external artifacts, code samples, documentation, or even entire repos from other sources. This keeps useful reference material close at hand without polluting the actual codebase.
8
+
9
+ The goal: work within a single IDE while having access to everything you need.
10
+
11
+ ## Git Status
12
+
13
+ This folder is **typically excluded from the repository** (added to `.gitignore`). Contents are meant to be temporary and local to each developer's environment. Don't assume anything here will persist or be shared.
14
+
15
+ ## What Belongs Here
16
+
17
+ - Cloned repos for reference
18
+ - Code samples from external sources
19
+ - API documentation downloads
20
+ - Third-party library source code
21
+ - Screenshots, PDFs, or other reference materials
22
+ - Anything useful for development that doesn't belong in the repo
23
+
24
+ ## Guidelines
25
+
26
+ - Treat this folder as ephemeral and personal
27
+ - Don't rely on contents being available to others
28
+ - Clean up periodically—this isn't long-term storage
29
+ - If findings are valuable, document them in `/ai-docs` or `/docs`
@@ -0,0 +1,24 @@
1
+ # Scripts
2
+
3
+ This folder contains development, build, and operational scripts.
4
+
5
+ ## Purpose
6
+
7
+ Utility scripts that automate common tasks across the monorepo. These scripts help with development workflows, builds, deployments, and maintenance operations.
8
+
9
+ ## What Belongs Here
10
+
11
+ - Build and compilation scripts
12
+ - Development environment setup
13
+ - Database migration helpers
14
+ - Deployment automation
15
+ - Code generation tools
16
+ - Maintenance and cleanup utilities
17
+
18
+ ## Guidelines
19
+
20
+ - Make scripts executable (`chmod +x`)
21
+ - Include usage comments at the top of each script
22
+ - Use consistent naming conventions
23
+ - Document any required environment variables
24
+ - Keep scripts idempotent when possible
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@fredlackey/devutils",
3
+ "version": "0.0.1",
4
+ "description": "A globally-installable Node.js CLI toolkit for bootstrapping and configuring development environments across any machine.",
5
+ "main": "src/index.js",
6
+ "bin": {
7
+ "dev": "./bin/dev.js"
8
+ },
9
+ "files": [
10
+ "bin/",
11
+ "src/",
12
+ "files/"
13
+ ],
14
+ "scripts": {
15
+ "test": "echo \"Error: no test specified\" && exit 1"
16
+ },
17
+ "dependencies": {
18
+ "commander": "^12.0.0"
19
+ },
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "git+https://github.com/FredLackey/devutils-cli.git"
23
+ },
24
+ "keywords": [],
25
+ "author": {
26
+ "name": "Fred Lackey",
27
+ "email": "fred.lackey@gmail.com",
28
+ "url": "https://fredlackey.com"
29
+ },
30
+ "license": "Apache-2.0",
31
+ "publishConfig": {
32
+ "access": "public"
33
+ },
34
+ "type": "commonjs",
35
+ "bugs": {
36
+ "url": "https://github.com/FredLackey/devutils-cli/issues"
37
+ },
38
+ "homepage": "https://github.com/FredLackey/devutils-cli#readme"
39
+ }
package/src/cli.js ADDED
@@ -0,0 +1,68 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * @fileoverview CLI setup using Commander.js
5
+ * Registers all commands and handles program execution.
6
+ */
7
+
8
+ const { program } = require('commander');
9
+ const pkg = require('../package.json');
10
+
11
+ const configureCommand = require('./commands/configure');
12
+ const statusCommand = require('./commands/status');
13
+ const identityCommand = require('./commands/identity');
14
+ const ignoreCommand = require('./commands/ignore');
15
+ const installCommand = require('./commands/install');
16
+ const { installCompletion, uninstallCompletion } = require('./completion');
17
+
18
+ /**
19
+ * Run the CLI program
20
+ */
21
+ function run() {
22
+ program
23
+ .name('dev')
24
+ .description('CLI toolkit for bootstrapping development environments')
25
+ .version(pkg.version, '-v, --version', 'Display version number');
26
+
27
+ // Global options
28
+ program
29
+ .option('--verbose', 'Enable verbose output')
30
+ .option('-q, --quiet', 'Suppress non-essential output')
31
+ .option('--no-color', 'Disable colored output');
32
+
33
+ // Add commands
34
+ program.addCommand(configureCommand);
35
+ program.addCommand(statusCommand);
36
+ program.addCommand(identityCommand);
37
+ program.addCommand(ignoreCommand);
38
+ program.addCommand(installCommand);
39
+
40
+ // Setup command - install essential tools
41
+ const setupCommand = require('./commands/setup');
42
+ program.addCommand(setupCommand);
43
+
44
+ // Completion management
45
+ const completion = program
46
+ .command('completion')
47
+ .description('Manage shell tab completion');
48
+
49
+ completion
50
+ .command('install')
51
+ .description('Install tab completion for your shell')
52
+ .action(installCompletion);
53
+
54
+ completion
55
+ .command('uninstall')
56
+ .description('Remove tab completion')
57
+ .action(uninstallCompletion);
58
+
59
+ // Parse and execute
60
+ program.parse(process.argv);
61
+
62
+ // If no command specified, show help
63
+ if (process.argv.length === 2) {
64
+ program.help();
65
+ }
66
+ }
67
+
68
+ module.exports = { run };
@@ -0,0 +1,41 @@
1
+ # Commands
2
+
3
+ This folder contains the implementation logic for **Commands** — multi-word CLI operations invoked with the `dev` prefix.
4
+
5
+ ## Structure
6
+
7
+ ```
8
+ dev <action> [subcommand] [arguments] [options]
9
+ ```
10
+
11
+ ## Examples
12
+
13
+ ```bash
14
+ dev configure # Configure developer profile
15
+ dev status # Show current configuration
16
+ dev install vscode # Install VS Code
17
+ dev ignore node # Add Node.js patterns to .gitignore
18
+ dev identity add # Add a new identity profile
19
+ dev identity remove # Remove an identity profile
20
+ dev identity link # Link identity to a source folder
21
+ ```
22
+
23
+ ## Files
24
+
25
+ | File | Command | Description |
26
+ |------|---------|-------------|
27
+ | `configure.js` | `dev configure` | Interactive configuration wizard |
28
+ | `status.js` | `dev status` | Display current configuration |
29
+ | `install.js` | `dev install <name>` | Install development tools |
30
+ | `ignore.js` | `dev ignore <technology>` | Append patterns to .gitignore |
31
+ | `identity.js` | `dev identity <action>` | Manage identity profiles (add, remove, link) |
32
+
33
+ ## Related
34
+
35
+ - **Scripts** (`../scripts/`) — Standalone global utilities (e.g., `afk`, `clone`)
36
+ - **Installs** (`../installs/`) — Platform-specific installation logic
37
+ - **Utils** (`../utils/`) — Internal shared utilities
38
+
39
+ ## Documentation
40
+
41
+ See [docs/COMMANDS.md](../../docs/COMMANDS.md) for the complete command specification.