Skip to content

Commit 6939eff

Browse files
atomanticclaude
andauthored
v7.0.0 Release: Complete architectural overhaul - Zero Dependencies (#127)
* Fix security vulnerabilities and update dependencies - Run npm audit fix to resolve 3 low severity vulnerabilities in tmp/external-editor chain - Update @inquirer/prompts from 7.6.0 to 7.8.4 and all related dependencies - Replace vulnerable external-editor with @inquirer/external-editor - Update all async.* dependencies with proper licenses - All dependencies now have 0 vulnerabilities Security fixes: - tmp <=0.2.3: Fixed arbitrary temporary file/directory write via symbolic link - external-editor dependency chain: Replaced with secure @inquirer/external-editor 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * Update package.json to reflect current installed versions - Update @inquirer/prompts from ^7.6.0 to ^7.8.4 to match installed version - This ensures package.json accurately reflects the security-patched dependencies - Keeps dependency declarations in sync with lockfile after npm audit fix 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * Remove unused async.series dependency - async.series was declared as dependency but never imported or used - Code already uses modern async/await with simple for loops - Removed 12 packages from node_modules (async.series and its dependencies) - Reduces bundle size and eliminates unnecessary dependency chain - Application functionality remains unchanged 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * Replace node-emoji with literal emoji characters - Replace emoji.get("coffee") with ☕ literal character - Replace emoji.get("fire") with 🔥 literal character - Remove node-emoji import and dependency entirely - Removed 6 additional packages from node_modules - Eliminates unnecessary dependency for just 2 simple emojis - Code is cleaner and has zero external emoji dependencies Bundle size reduction: 40 packages → 34 packages 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * Remove gitshots feature completely - Remove gitshots prompt and logic from index.js - Remove .git_template/hooks/gitshot-pc file - Remove gitshots reference from README.md - Simplify application startup - goes directly to software installation prompts - Clean up legacy feature that required camera access and additional dependencies The application now starts faster and has one less decision point for users. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * Eliminate Node.js dependency entirely - pure bash implementation ## Major Refactor: Node.js → Pure Bash ### What was removed: - ❌ `index.js` (Node.js application) - ❌ `package.json` and `package-lock.json` (npm dependencies) - ❌ `node_modules/` directory (34 packages eliminated) - ❌ `@inquirer/prompts` dependency - ❌ All `software/*.js` config files ### What was added: - ✅ `software/*.list` files (human-readable package lists) - ✅ Pure bash installation logic in `install.sh` - ✅ Comment support with `#` in list files - ✅ Interactive prompts using built-in bash `read` ### Benefits: - 🚀 **Zero dependencies** - no npm install required - ⚡ **Faster startup** - no Node.js initialization - 📝 **Easier maintenance** - simple text files instead of JS - 🔧 **Self-contained** - works with just bash and git - 💾 **Smaller footprint** - no node_modules directory ### Usage remains the same: ```bash ./install.sh ``` The dotfiles project is now completely self-contained with zero external dependencies! 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * Complete Node.js cleanup and documentation updates ## Cleanup remaining Node.js artifacts: - ❌ Remove `config.js` (old JavaScript config, replaced by .list files) - ❌ Remove `lib_node/command.js` (Node.js command wrapper, no longer needed) ## Documentation updates: - ✅ Update README.md to reference `.list` files instead of `.js` files - ✅ Update software/README.md with new list-based workflow - ✅ Add example for adding new software types with bash - ✅ Remove references to JavaScript exports and index.js ## Result: The project is now 100% pure bash with zero Node.js footprint and completely self-contained. Documentation accurately reflects the new list-based approach. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * Fix outdated Node.js comment in install.sh - Remove outdated comment about "switching to node.js mode" - Remove references to "JSON files and inquirer prompts" - Replace with accurate comment about "simple list files with built-in bash prompts" - Keep legitimate Node.js references (nvm installation and npm package installation) The install.sh is now accurately documented for the pure bash implementation. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * Bump to v7.0.0 - major release with zero dependencies This represents a complete architectural change from Node.js-based to pure bash implementation. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * Fix README reference from powerlevel9k to powerlevel10k - Update README.md to reference powerlevel10k (current theme) - Remove outdated reference to powerlevel9k - Aligns documentation with the theme upgrade made earlier 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * Fix security and compatibility issues Address GitHub Copilot code review feedback: - Remove deprecated Homebrew flags (vim, wget, screen tap) - Fix POSIX regex compatibility in install.sh - Fix command injection vulnerability by quoting variables 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 7fc4c73 commit 6939eff

19 files changed

Lines changed: 173 additions & 1142 deletions

File tree

.git_template/hooks/gitshot-pc

Lines changed: 0 additions & 7 deletions
This file was deleted.

README.md

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ When I finish with your machine, you will be able to look at your command-line i
5050
![iTerm Screenshot](img/term.png)
5151

5252
Check out how your shell prompt includes the full path, node.js version & the working git branch along with a lot of other info!
53-
We use powerlevel9k for command prompt, so customization of what you want is easily changable in `./.zshrc`
53+
We use powerlevel10k for command prompt, so customization of what you want is easily changable in `./.zshrc`
5454
The top terminal is using vim as a full replacement IDE.
5555
The bottom left two are git terminals.
5656
The bottom right is running `vtop`
@@ -132,8 +132,7 @@ Here is the current list:
132132

133133
The following will only happen if you agree on the prompt
134134

135-
- install a gitshots script to take a photo using your camera on every git commit (these go in as a post-commit hook to your .git_template)
136-
- overwrite your /etc/hosts file using the [StevenBlack/hosts](https://github.com/StevenBlack/hosts) project. Add custom entries in `./configs/hosts.local`.
135+
- overwrite your /etc/hosts file using the [StevenBlack/hosts](https://github.com/StevenBlack/hosts) project. Add custom entries in `./configs/hosts.local`.
137136

138137
## Security
139138

@@ -252,15 +251,17 @@ The following will only happen if you agree on the prompt
252251

253252
# Software Installation
254253

255-
homebrew, fontconfig, git, nvm (node + npm), and zsh (latest) are all installed inside the `install.sh` as foundational software for running this project.
254+
homebrew, fontconfig, git, nvm (node + npm), and zsh (latest) are all installed inside the `install.sh` as foundational software.
256255

257-
Additional software is configured in separate files within the `software/` directory and can be customized in your own fork/branch:
256+
Additional software is configured in simple list files within the `software/` directory and can be customized in your own fork/branch:
258257

259-
- `software/brew.js` - Homebrew utilities and command-line tools
260-
- `software/cask.js` - Homebrew desktop applications (GUI apps)
261-
- `software/npm.js` - Global NPM packages
262-
- `software/mas.js` - Mac App Store applications
263-
- `software/gem.js` - Ruby gems
258+
- `software/brew.list` - Homebrew utilities and command-line tools
259+
- `software/cask.list` - Homebrew desktop applications (GUI apps)
260+
- `software/npm.list` - Global NPM packages
261+
- `software/mas.list` - Mac App Store applications
262+
- `software/gem.list` - Ruby gems
263+
264+
Each file contains one package per line, with `#` for comments.
264265

265266
## .BrewFile Support
266267

config.js

Lines changed: 0 additions & 100 deletions
This file was deleted.

index.js

Lines changed: 0 additions & 123 deletions
This file was deleted.

install.sh

Lines changed: 44 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
#!/usr/bin/env bash
22

3-
#TODO: update after macOS Catalina, default mac shell: bash is changing to zsh
4-
53
###########################
4+
# v7.0.0
65
# This script installs the dotfiles and runs all other system configuration scripts
76
# @author Adam Eivy
87
###########################
@@ -351,18 +350,52 @@ export NVM_DIR="$HOME/.nvm"
351350
require_nvm stable
352351

353352
#####################################
354-
# Now we can switch to node.js mode
355-
# for better maintainability and
356-
# easier configuration via
357-
# JSON files and inquirer prompts
353+
# Install packages from simple list files
354+
# with built-in bash prompts
358355
#####################################
359356

360-
bot "installing npm tools needed to run this project..."
361-
npm install
362-
ok
363-
364357
bot "installing packages from software configuration files..."
365-
node index.js
358+
359+
# Function to install packages from list files
360+
install_packages() {
361+
local list_file=$1
362+
local install_cmd=$2
363+
local name=$3
364+
365+
if [[ ! -f "software/$list_file" ]]; then
366+
action "skipping $name (software/$list_file not found)"
367+
return
368+
fi
369+
370+
# Check if file has any non-comment, non-empty lines
371+
if ! grep -v '^[[:space:]]*#' "software/$list_file" | grep -v '^[[:space:]]*$' > /dev/null 2>&1; then
372+
action "skipping $name (no packages defined)"
373+
return
374+
fi
375+
376+
read -r -p "Do you want to install $name? [y|N] " response
377+
if [[ $response =~ (y|yes|Y) ]]; then
378+
action "installing $name"
379+
while IFS= read -r package || [[ -n "$package" ]]; do
380+
# Skip comments and empty lines
381+
[[ $package =~ ^[[:space:]]*# ]] && continue
382+
[[ -z "${package// }" ]] && continue
383+
384+
# Source the shell functions and install the package
385+
. lib_sh/echos.sh && . lib_sh/requireers.sh && $install_cmd "$package"
386+
done < "software/$list_file"
387+
else
388+
action "skipping $name installation"
389+
fi
390+
}
391+
392+
# Install each package type
393+
install_packages "brew.list" "require_brew" "Homebrew utilities"
394+
install_packages "cask.list" "require_cask" "Homebrew desktop apps"
395+
install_packages "npm.list" "require_npm" "NPM global packages"
396+
install_packages "mas.list" "require_mas" "Mac App Store apps"
397+
install_packages "gem.list" "require_gem" "Ruby gems"
398+
366399
ok
367400

368401
running "cleanup homebrew"

lib_node/command.js

Lines changed: 0 additions & 19 deletions
This file was deleted.

0 commit comments

Comments
 (0)