configs-all 1.0.0

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 (227) hide show
  1. package/.claude/settings.local.json +3 -0
  2. package/CLAUDE.md +94 -0
  3. package/README.md +424 -0
  4. package/TERMINAL_SHORTCUTS.md +96 -0
  5. package/WINDOWS_COMPATIBILITY.md +85 -0
  6. package/WINDOWS_MCP_SETUP.md +133 -0
  7. package/apps/RectangleConfig.plist +0 -0
  8. package/apps/Synergy +84 -0
  9. package/apps/iStat Menus Settings.ismp7 +0 -0
  10. package/claude/CLAUDE.md +228 -0
  11. package/claude/commands/changelog.md +36 -0
  12. package/claude/commands/commit.md +29 -0
  13. package/claude/commands/context.md +112 -0
  14. package/claude/commands/dash.md +37 -0
  15. package/claude/commands/deploy-check.md +37 -0
  16. package/claude/commands/deps.md +26 -0
  17. package/claude/commands/duplo.md +56 -0
  18. package/claude/commands/explain.md +43 -0
  19. package/claude/commands/fix-and-test.md +46 -0
  20. package/claude/commands/game-debug.md +66 -0
  21. package/claude/commands/games.md +53 -0
  22. package/claude/commands/go.md +147 -0
  23. package/claude/commands/guard.md +102 -0
  24. package/claude/commands/handoff.md +66 -0
  25. package/claude/commands/incident.md +144 -0
  26. package/claude/commands/init.md +78 -0
  27. package/claude/commands/k8s-debug.md +31 -0
  28. package/claude/commands/lint.md +27 -0
  29. package/claude/commands/merge-all.md +115 -0
  30. package/claude/commands/merge.md +129 -0
  31. package/claude/commands/mikpc.md +54 -0
  32. package/claude/commands/morning.md +72 -0
  33. package/claude/commands/partymode.md +105 -0
  34. package/claude/commands/plans.md +88 -0
  35. package/claude/commands/pr.md +41 -0
  36. package/claude/commands/prep.md +132 -0
  37. package/claude/commands/push-sync.md +82 -0
  38. package/claude/commands/push.md +34 -0
  39. package/claude/commands/research.md +73 -0
  40. package/claude/commands/retro.md +95 -0
  41. package/claude/commands/review-pr.md +96 -0
  42. package/claude/commands/review.md +41 -0
  43. package/claude/commands/scaffold-agent.md +45 -0
  44. package/claude/commands/setup.md +92 -0
  45. package/claude/commands/ship-prod.md +97 -0
  46. package/claude/commands/ship.md +82 -0
  47. package/claude/commands/simplify.md +42 -0
  48. package/claude/commands/spike.md +110 -0
  49. package/claude/commands/status.md +37 -0
  50. package/claude/commands/sync.md +72 -0
  51. package/claude/commands/test.md +29 -0
  52. package/claude/commands/triage.md +72 -0
  53. package/claude/desktop/claude_desktop_config.json +9 -0
  54. package/claude/hooks.json +15 -0
  55. package/claude/mcp-servers.duplo.json +8 -0
  56. package/claude/mcp-servers.json +62 -0
  57. package/claude/scripts/psdebug.ps1 +7 -0
  58. package/claude/settings.json +38 -0
  59. package/claude/settings.local.json +4 -0
  60. package/claude/statusline-command.sh +94 -0
  61. package/claude/templates/CLAUDE-k8s-devops.md +58 -0
  62. package/claude/templates/CLAUDE-python-agent.md +47 -0
  63. package/claude/templates/CLAUDE-typescript-frontend.md +50 -0
  64. package/docker/ai-stack/docker-compose.yml +76 -0
  65. package/docker/ai-stack/searxng/limiter.toml +3 -0
  66. package/docker/ai-stack/searxng/settings.yml +39 -0
  67. package/docker/cli/config.json.template +15 -0
  68. package/docker/cli/daemon.json +9 -0
  69. package/docker/cli/features.json +3 -0
  70. package/docker/mcp/catalog.json +9 -0
  71. package/docker/mcp/catalogs/docker-mcp.yaml +15107 -0
  72. package/docker/mcp/config.yaml +0 -0
  73. package/docker/mcp/registry.yaml +37 -0
  74. package/docker/mcp/tools.yaml +0 -0
  75. package/docs/context/.gitkeep +0 -0
  76. package/docs/context/2026-03-02-configs.md +142 -0
  77. package/docs/handoff/.gitkeep +0 -0
  78. package/docs/incidents/.gitkeep +0 -0
  79. package/docs/plans/2026-02-28-autonomous-command-suite-design.md +250 -0
  80. package/docs/plans/2026-02-28-autonomous-command-suite.md +682 -0
  81. package/docs/plans/2026-03-01-ai-stack-split-architecture.md +72 -0
  82. package/docs/plans/2026-03-02-ai-stack-expansion.md +33 -0
  83. package/docs/plans/2026-03-02-merge-commands-design.md +58 -0
  84. package/docs/plans/2026-03-02-merge-commands.md +354 -0
  85. package/docs/research/.gitkeep +0 -0
  86. package/docs/research/2026-03-02-configs-repo-architecture.md +152 -0
  87. package/docs/retros/.gitkeep +0 -0
  88. package/docs/retros/2026-03-01-ai-stack-split-architecture.md +38 -0
  89. package/docs/spikes/.gitkeep +0 -0
  90. package/gh/config.yml +16 -0
  91. package/gh/hosts.yml +5 -0
  92. package/gh/main.json +103 -0
  93. package/ghostty/config +90 -0
  94. package/git/config/base.gitconfig +46 -0
  95. package/git/config/chiefmikey.gitconfig +11 -0
  96. package/git/config/personal.gitconfig +10 -0
  97. package/git/config/work.gitconfig +14 -0
  98. package/ide/cursor/extensions.txt +111 -0
  99. package/ide/cursor/keybindings.json +307 -0
  100. package/ide/cursor/mcp.json +92 -0
  101. package/ide/cursor/settings.json +544 -0
  102. package/ide/vscode/extensions.txt +120 -0
  103. package/ide/vscode/insiders/extensions.txt +119 -0
  104. package/ide/vscode/insiders/keybindings.json +294 -0
  105. package/ide/vscode/insiders/settings.json +518 -0
  106. package/ide/vscode/keybindings.json +294 -0
  107. package/ide/vscode/settings.json +526 -0
  108. package/ide/vscode/vscode/extensions.txt +43 -0
  109. package/iterm/Mikey Pro.json +951 -0
  110. package/iterm/com.googlecode.iterm2.plist +5549 -0
  111. package/iterm/font/MesloLGS NF Bold Italic.ttf +0 -0
  112. package/iterm/font/MesloLGS NF Bold.ttf +0 -0
  113. package/iterm/font/MesloLGS NF Italic.ttf +0 -0
  114. package/iterm/font/MesloLGS NF Regular.ttf +0 -0
  115. package/package.json +15 -0
  116. package/scripts/ai/deploy-ai-stack.sh +119 -0
  117. package/scripts/ai/fix-ai-proxy.service +12 -0
  118. package/scripts/ai/fix-ai-proxy.sh +25 -0
  119. package/scripts/brew/search/brew-search-results.sh +19 -0
  120. package/scripts/brew/search/brew-search.sh +34 -0
  121. package/scripts/brew/upgrade/brew-upgrade-autoupdate.sh +5 -0
  122. package/scripts/brew/upgrade/brew-upgrade-full-auto.sh +89 -0
  123. package/scripts/brew/upgrade/brew-upgrade-full.sh +159 -0
  124. package/scripts/docker/cleanup/docker-cleanup-manage.sh +163 -0
  125. package/scripts/docker/cleanup/docker-cleanup.cron +12 -0
  126. package/scripts/docker/cleanup/docker-cleanup.sh +280 -0
  127. package/scripts/docker/install/README.md +23 -0
  128. package/scripts/docker/install/docker-al2.sh +7 -0
  129. package/scripts/docker/install/docker-compose-al2.sh +15 -0
  130. package/scripts/gh/auth/auth.sh +12 -0
  131. package/scripts/gh/config/gh-config.sh +3 -0
  132. package/scripts/gh/gist/gh-gist-create.sh +29 -0
  133. package/scripts/gh/gist/gh-gist-delete.sh +1 -0
  134. package/scripts/gh/gist/gh-gist-edit.sh +8 -0
  135. package/scripts/gh/gpg-key/gh-gpg-key-add.sh +3 -0
  136. package/scripts/gh/install/install.sh +7 -0
  137. package/scripts/gh/label/gh-label-clone.sh +0 -0
  138. package/scripts/gh/label/gh-label-create.sh +0 -0
  139. package/scripts/gh/label/gh-label-delete.sh +0 -0
  140. package/scripts/gh/label/gh-label-edit.sh +0 -0
  141. package/scripts/gh/label/gh-label-list.sh +0 -0
  142. package/scripts/gh/secret/gh-secret-delete.sh +24 -0
  143. package/scripts/gh/secret/gh-secret-set.sh +70 -0
  144. package/scripts/gh/ssh-key/gh-ssh-key-add.sh +8 -0
  145. package/scripts/git/add/git-add.sh +3 -0
  146. package/scripts/git/auth/README.md +11 -0
  147. package/scripts/git/auth/https.sh +20 -0
  148. package/scripts/git/auth/ssh-mac.sh +41 -0
  149. package/scripts/git/branch-delete/git-branch-delete.sh +16 -0
  150. package/scripts/git/checkout/git-checkout-stash.sh +32 -0
  151. package/scripts/git/temp/git-temp-pull.sh +6 -0
  152. package/scripts/git/temp/git-temp-push.sh +5 -0
  153. package/scripts/install/fresh.zsh +34 -0
  154. package/scripts/install/full-install.zsh +193 -0
  155. package/scripts/linux/codedeploy/README.md +19 -0
  156. package/scripts/linux/codedeploy/linux-codedeploy-al2.sh +13 -0
  157. package/scripts/linux/codedeploy/linux-codedeploy-index.sh +16 -0
  158. package/scripts/linux/codedeploy/linux-codedeploy-ubuntu.sh +14 -0
  159. package/scripts/linux/coredns/README.md +17 -0
  160. package/scripts/linux/coredns/linux-coredns-al2.sh +29 -0
  161. package/scripts/linux/wifi/01-netconf.yaml +21 -0
  162. package/scripts/linux/wifi/wifi-ubuntu.sh +17 -0
  163. package/scripts/mac/dock-sort/mac-dock-sort.sh +87 -0
  164. package/scripts/mac/dropbox-ignore/mac-dropbox-ignore.sh +12 -0
  165. package/scripts/mac/sudo-askpass/mac-sudo-askpass.sh +50 -0
  166. package/scripts/mac/sudo-askpass/setup-sudo-password.sh +49 -0
  167. package/scripts/mac/upgrade/mac-upgrade.sh +21 -0
  168. package/scripts/mac/vpn/mac-vpn.sh +4 -0
  169. package/scripts/mcp/aws-mcp-wrapper.ps1 +97 -0
  170. package/scripts/mcp/aws-mcp-wrapper.sh +53 -0
  171. package/scripts/mcp/duplo-mcp-wrapper.sh +31 -0
  172. package/scripts/mcp/filesystem-mcp-wrapper.ps1 +43 -0
  173. package/scripts/mcp/filesystem-mcp-wrapper.sh +34 -0
  174. package/scripts/mcp/git-mcp-wrapper.ps1 +42 -0
  175. package/scripts/mcp/git-mcp-wrapper.sh +33 -0
  176. package/scripts/mcp/github-mcp-wrapper.ps1 +43 -0
  177. package/scripts/mcp/github-mcp-wrapper.sh +19 -0
  178. package/scripts/mcp/kubernetes-mcp-wrapper.ps1 +22 -0
  179. package/scripts/mcp/kubernetes-mcp-wrapper.sh +16 -0
  180. package/scripts/mcp/mcp-launcher.ps1 +56 -0
  181. package/scripts/mcp/mcp-launcher.sh +71 -0
  182. package/scripts/mcp/mongodb-mcp-wrapper.ps1 +26 -0
  183. package/scripts/mcp/mongodb-mcp-wrapper.sh +17 -0
  184. package/scripts/mcp/notion-mcp-wrapper.ps1 +23 -0
  185. package/scripts/mcp/notion-mcp-wrapper.sh +14 -0
  186. package/scripts/mcp/postgres-mcp-wrapper.ps1 +23 -0
  187. package/scripts/mcp/postgres-mcp-wrapper.sh +16 -0
  188. package/scripts/npm/ncu/npm-ncu.sh +24 -0
  189. package/scripts/npm/upgrade/npm-upgrade.sh +51 -0
  190. package/scripts/qmk/build_reviung41.sh +28 -0
  191. package/scripts/qmk/sync_unicorne.sh +44 -0
  192. package/scripts/sync/README.md +64 -0
  193. package/scripts/sync/config-common.zsh +882 -0
  194. package/scripts/sync/pull-configs.ps1 +33 -0
  195. package/scripts/sync/pull-configs.zsh +278 -0
  196. package/scripts/sync/push-configs.ps1 +91 -0
  197. package/scripts/sync/push-configs.zsh +384 -0
  198. package/shell/alias/alias-d.zsh +333 -0
  199. package/shell/alias/alias.zsh +36 -0
  200. package/shell/alias/categories/development.zsh +157 -0
  201. package/shell/alias/categories/environment.zsh +13 -0
  202. package/shell/alias/categories/git.zsh +40 -0
  203. package/shell/alias/categories/github-functions.zsh +459 -0
  204. package/shell/alias/categories/network.zsh +46 -0
  205. package/shell/alias/categories/path.zsh +46 -0
  206. package/shell/alias/categories/system.zsh +78 -0
  207. package/shell/alias/categories/wolfe-server.zsh +11 -0
  208. package/shell/powershell/Microsoft.PowerShell_profile.ps1 +208 -0
  209. package/shell/zsh/.p10k.zsh +1832 -0
  210. package/shell/zsh/.zshrc +87 -0
  211. package/shell/zsh/config/completion.zsh +31 -0
  212. package/shell/zsh/config/functions.zsh +31 -0
  213. package/shell/zsh/config/keybindings.zsh +13 -0
  214. package/shell/zsh/config/options.zsh +56 -0
  215. package/shell/zsh/config/plugins.zsh +83 -0
  216. package/shell/zsh/config/variables.zsh +191 -0
  217. package/shell/zsh/powerlevel10k.zsh-theme +83 -0
  218. package/shell/zsh/zsh-autosuggestions.zsh +871 -0
  219. package/ssh/config +46 -0
  220. package/ssh/config.duplo +21 -0
  221. package/ssh/config.mikpc +35 -0
  222. package/ssh/personal_signing.pub +1 -0
  223. package/templates/.envrc.example +34 -0
  224. package/templates/.envrc.quickstart +17 -0
  225. package/wezterm/wezterm.lua +249 -0
  226. package/wsl/.wslconfig +3 -0
  227. package/wsl/wsl.conf +18 -0
Binary file
package/package.json ADDED
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "configs-all",
3
+ "version": "1.0.0",
4
+ "devDependencies": {
5
+ "mikey-pro": "^9.0.6"
6
+ },
7
+ "license": "ISC",
8
+ "prettier": "@mikey-pro/prettier-config",
9
+ "eslintConfig": {
10
+ "extends": "@mikey-pro/eslint-config"
11
+ },
12
+ "stylelint": {
13
+ "extends": "@mikey-pro/stylelint-config"
14
+ }
15
+ }
@@ -0,0 +1,119 @@
1
+ #!/bin/bash
2
+ # Deploy GPU compute stack to mikpc
3
+ # Web UIs run on wolfe-server — this deploys compute-only services
4
+ # Run from Mac: ./scripts/ai/deploy-ai-stack.sh
5
+ # Run on mikpc: ./scripts/ai/deploy-ai-stack.sh --local
6
+
7
+ set -uo pipefail
8
+
9
+ REMOTE_HOST="mikpc"
10
+ REMOTE_DEPLOY_DIR="/opt/ai-stack"
11
+
12
+ # Colors
13
+ GREEN='\033[0;32m'
14
+ YELLOW='\033[1;33m'
15
+ RED='\033[0;31m'
16
+ NC='\033[0m'
17
+
18
+ info() { echo -e "${GREEN}[✓]${NC} $1"; }
19
+ warn() { echo -e "${YELLOW}[!]${NC} $1"; }
20
+ error() { echo -e "${RED}[✗]${NC} $1"; }
21
+
22
+ # Detect if running locally on mikpc or remotely from Mac
23
+ if [[ "${1:-}" == "--local" ]] || [[ "$(hostname 2>/dev/null)" == "mikpc" ]]; then
24
+ LOCAL_MODE=true
25
+ else
26
+ LOCAL_MODE=false
27
+ fi
28
+
29
+ run_remote() {
30
+ if [[ "$LOCAL_MODE" == true ]]; then
31
+ eval "$1"
32
+ else
33
+ ssh "$REMOTE_HOST" "$1"
34
+ fi
35
+ }
36
+
37
+ # Resolve script location to find the stack configs
38
+ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
39
+ REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
40
+ STACK_SRC="$REPO_ROOT/docker/ai-stack"
41
+
42
+ if [[ ! -f "$STACK_SRC/docker-compose.yml" ]]; then
43
+ error "Cannot find $STACK_SRC/docker-compose.yml"
44
+ exit 1
45
+ fi
46
+
47
+ echo "═══════════════════════════════════════════════════"
48
+ echo " GPU Compute Stack Deployment — mikpc"
49
+ echo "═══════════════════════════════════════════════════"
50
+ echo ""
51
+
52
+ # 1. Verify Docker is running
53
+ info "Checking Docker on mikpc..."
54
+ if ! run_remote "docker info >/dev/null 2>&1"; then
55
+ warn "Docker not running, attempting to start..."
56
+ run_remote "sudo service docker start"
57
+ sleep 2
58
+ if ! run_remote "docker info >/dev/null 2>&1"; then
59
+ error "Docker failed to start on mikpc"
60
+ exit 1
61
+ fi
62
+ fi
63
+ info "Docker is running"
64
+
65
+ # 2. Deploy configs via rsync
66
+ info "Deploying compute stack configs to $REMOTE_DEPLOY_DIR..."
67
+ if [[ "$LOCAL_MODE" == true ]]; then
68
+ sudo mkdir -p "$REMOTE_DEPLOY_DIR"
69
+ sudo cp -r "$STACK_SRC/"* "$REMOTE_DEPLOY_DIR/"
70
+ sudo chown -R "$(whoami):$(id -gn)" "$REMOTE_DEPLOY_DIR"
71
+ else
72
+ run_remote "sudo mkdir -p $REMOTE_DEPLOY_DIR && sudo chown wolfe:wolfe $REMOTE_DEPLOY_DIR"
73
+ rsync -avz --delete "$STACK_SRC/" "${REMOTE_HOST}:${REMOTE_DEPLOY_DIR}/"
74
+ fi
75
+ info "Configs deployed"
76
+
77
+ # 3. Deploy port proxy automation
78
+ info "Setting up port proxy automation..."
79
+ PROXY_SCRIPT="$REPO_ROOT/scripts/ai/fix-ai-proxy.sh"
80
+ PROXY_SERVICE="$REPO_ROOT/scripts/ai/fix-ai-proxy.service"
81
+ if [[ "$LOCAL_MODE" == true ]]; then
82
+ sudo cp "$PROXY_SCRIPT" "$REMOTE_DEPLOY_DIR/fix-ai-proxy.sh"
83
+ sudo chmod +x "$REMOTE_DEPLOY_DIR/fix-ai-proxy.sh"
84
+ sudo cp "$PROXY_SERVICE" /etc/systemd/system/fix-ai-proxy.service
85
+ sudo systemctl daemon-reload
86
+ sudo systemctl enable fix-ai-proxy 2>/dev/null
87
+ else
88
+ rsync -avz "$PROXY_SCRIPT" "${REMOTE_HOST}:${REMOTE_DEPLOY_DIR}/fix-ai-proxy.sh"
89
+ run_remote "chmod +x $REMOTE_DEPLOY_DIR/fix-ai-proxy.sh"
90
+ rsync -avz "$PROXY_SERVICE" "${REMOTE_HOST}:/tmp/fix-ai-proxy.service"
91
+ run_remote "sudo cp /tmp/fix-ai-proxy.service /etc/systemd/system/fix-ai-proxy.service && sudo systemctl daemon-reload && sudo systemctl enable fix-ai-proxy 2>/dev/null"
92
+ fi
93
+ info "Port proxy automation configured"
94
+
95
+ # 4. Pull images and start
96
+ info "Pulling images (this may take a few minutes)..."
97
+ run_remote "cd $REMOTE_DEPLOY_DIR && docker compose pull"
98
+ info "Starting compute stack..."
99
+ run_remote "cd $REMOTE_DEPLOY_DIR && docker compose up -d"
100
+
101
+ # 5. Verify
102
+ echo ""
103
+ info "Verifying services..."
104
+ sleep 5
105
+ run_remote "docker ps --filter 'network=ai-compute' --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'"
106
+
107
+ echo ""
108
+ echo "═══════════════════════════════════════════════════"
109
+ echo " GPU Compute Services — mikpc"
110
+ echo "═══════════════════════════════════════════════════"
111
+ echo ""
112
+ echo " ComfyUI: http://100.89.204.71:8188 (Image Gen)"
113
+ echo " ACE-Step: http://100.89.204.71:7860 (Music Gen)"
114
+ echo ""
115
+ echo " Ollama: http://100.89.204.71:11434 (systemd service)"
116
+ echo " Speaches: Moved to wolfe-server (RTX 3060)"
117
+ echo ""
118
+ echo " Web UIs run on wolfe-server (chat/search/n8n.wolfe.family)"
119
+ echo "═══════════════════════════════════════════════════"
@@ -0,0 +1,12 @@
1
+ [Unit]
2
+ Description=WSL Port Proxy for AI Compute Services
3
+ After=network-online.target
4
+ Wants=network-online.target
5
+
6
+ [Service]
7
+ Type=oneshot
8
+ RemainAfterExit=yes
9
+ ExecStart=/opt/ai-stack/fix-ai-proxy.sh
10
+
11
+ [Install]
12
+ WantedBy=multi-user.target
@@ -0,0 +1,25 @@
1
+ #!/bin/bash
2
+ # Update Windows port proxy to current WSL IP for GPU compute services
3
+ # Must run from WSL on mikpc after each WSL restart (WSL IP changes)
4
+ # Ports: 11434 (Ollama), 7860 (ACE-Step), 8000 (Speaches), 8188 (ComfyUI)
5
+ # Web UIs now run on wolfe-server — only GPU compute exposed here
6
+
7
+ WSL_IP=$(hostname -I | tr -s ' ' | cut -d' ' -f1)
8
+ echo "WSL IP: $WSL_IP"
9
+
10
+ if [[ -z "$WSL_IP" ]]; then
11
+ echo "ERROR: Could not determine WSL IP"
12
+ exit 1
13
+ fi
14
+
15
+ PORTS=(11434 7860 8188)
16
+
17
+ for PORT in "${PORTS[@]}"; do
18
+ powershell.exe -Command "netsh interface portproxy delete v4tov4 listenport=$PORT listenaddress=0.0.0.0" 2>/dev/null
19
+ powershell.exe -Command "netsh interface portproxy add v4tov4 listenport=$PORT listenaddress=0.0.0.0 connectport=$PORT connectaddress=$WSL_IP"
20
+ echo "Forwarded port $PORT -> $WSL_IP:$PORT"
21
+ done
22
+
23
+ echo ""
24
+ echo "Current port proxy rules:"
25
+ powershell.exe -Command "netsh interface portproxy show v4tov4"
@@ -0,0 +1,19 @@
1
+ #!/bin/bash
2
+
3
+ BREW_CORE=homebrew/core
4
+ BREW_CASK=homebrew/cask
5
+ CASK_VERSIONS=homebrew/cask-versions
6
+ CASK_FONTS=homebrew/cask-fonts
7
+ ALL_TAPS="${BREW_CORE} ${BREW_CASK} ${CASK_VERSIONS} ${CASK_FONTS}"
8
+
9
+ package_counter () {
10
+ COUNTER=0
11
+ for cask in $("${SCRIPT_DIR}"/brew/search/brew-search.sh "${1}"); do
12
+ COUNTER=$((${COUNTER} + 1))
13
+ done
14
+ echo "${COUNTER}"
15
+ }
16
+
17
+ for tap in ${ALL_TAPS}; do
18
+ echo "${tap}: $(package_counter "${tap}")"
19
+ done
@@ -0,0 +1,34 @@
1
+ #!/bin/bash
2
+
3
+ all_packages () {
4
+ brew tap-info --json "$@" | jq -r '.[]|(.formula_names[],.cask_tokens[])' | sort -V
5
+ }
6
+
7
+ COUNTER_ONE=0
8
+ for rb in $(all_packages "${1}"); do
9
+ echo "${rb##*/}"
10
+ COUNTER_ONE=$((COUNTER_ONE+1))
11
+ done
12
+
13
+ # echo "homebrew/core: ${COUNTER_ONE}"
14
+
15
+ # COUNTER_TWO=0
16
+ # for rb in $(all_packages homebrew/cask); do
17
+ # echo "${rb##*/}"
18
+ # COUNTER_TWO=$((COUNTER_TWO+1))
19
+ # done
20
+
21
+ # echo "homebrew/cask: ${COUNTER_TWO}"
22
+
23
+ # COUNTER_FOUR=0
24
+ # for rb in $(all_packages homebrew/cask-versions); do
25
+ # echo "${rb##*/}"
26
+ # COUNTER_FOUR=$((COUNTER_FOUR+1))
27
+ # done
28
+
29
+ # echo "homebrew/cask-versions: ${COUNTER_FOUR}"
30
+
31
+ # echo "Totals:"
32
+ # echo "homebrew/core: ${COUNTER_ONE}"
33
+ # echo "homebrew/cask: ${COUNTER_TWO}"
34
+ # echo "homebrew/cask-versions: ${COUNTER_FOUR}"
@@ -0,0 +1,5 @@
1
+ #!/bin/bash
2
+
3
+ # Start autoupdate with less aggressive settings
4
+ # Note: Removed --greedy flag to prevent aggressive cask upgrades that remove Dock icons
5
+ brew autoupdate start "${1}" --upgrade --cleanup --immediate
@@ -0,0 +1,89 @@
1
+ #!/bin/bash
2
+
3
+ export SUDO_ASKPASS="${SCRIPT_DIR}"/mac/sudo-askpass/mac-sudo-askpass.sh
4
+
5
+ brew autoupdate stop
6
+
7
+
8
+ echo "+ brew update"
9
+ BREW_UPDATE=$(brew update)
10
+ export BREW_UPDATE
11
+ if [ "${BREW_UPDATE}" = "already up to date." ]; then
12
+ echo "already up to date."
13
+ else
14
+ echo "${BREW_UPDATE}"
15
+ fi
16
+
17
+ echo "+ brew upgrade"
18
+
19
+ # Backup Dock configuration to preserve app positions
20
+ backup_dock() {
21
+ if [[ "$OSTYPE" == "darwin"* ]]; then
22
+ echo "Backing up Dock configuration..."
23
+ defaults export com.apple.dock /tmp/dock-backup.plist 2>/dev/null || true
24
+ fi
25
+ }
26
+
27
+ restore_dock() {
28
+ if [[ "$OSTYPE" == "darwin"* ]] && [ -f "/tmp/dock-backup.plist" ]; then
29
+ echo "Restoring Dock configuration..."
30
+ defaults import com.apple.dock /tmp/dock-backup.plist 2>/dev/null || true
31
+ killall Dock 2>/dev/null || true
32
+ rm -f /tmp/dock-backup.plist
33
+ fi
34
+ }
35
+
36
+ # Backup Dock before upgrades
37
+ backup_dock
38
+
39
+ # Upgrade formulas first
40
+ echo "Upgrading formulas..."
41
+ BREW_UPGRADE_FORMULAS=$(brew upgrade)
42
+
43
+ # Upgrade regular casks (non-auto-updating)
44
+ echo "Upgrading regular casks..."
45
+ BREW_UPGRADE_CASKS=$(brew upgrade --cask)
46
+
47
+ # Upgrade auto-updating casks individually (safer approach)
48
+ echo "Upgrading auto-updating casks individually..."
49
+ # Get list of all installed casks and check each one for auto_updates
50
+ AUTO_UPDATING_CASKS=""
51
+ for cask in $(brew list --cask); do
52
+ if brew info --cask "$cask" 2>/dev/null | grep -q "auto_updates true"; then
53
+ AUTO_UPDATING_CASKS="$AUTO_UPDATING_CASKS$cask"$'\n'
54
+ fi
55
+ done
56
+ BREW_UPGRADE_AUTO_CASKS=""
57
+
58
+ if [ -n "$AUTO_UPDATING_CASKS" ]; then
59
+ while IFS= read -r cask; do
60
+ if [ -n "$cask" ]; then
61
+ echo "Upgrading auto-updating cask: $cask"
62
+ BREW_UPGRADE_AUTO_CASKS="$BREW_UPGRADE_AUTO_CASKS$(brew upgrade --cask "$cask" 2>&1)"$'\n'
63
+ fi
64
+ done <<< "$AUTO_UPDATING_CASKS"
65
+ fi
66
+
67
+ # Restore Dock configuration
68
+ restore_dock
69
+
70
+ BREW_UPGRADE="${BREW_UPGRADE_FORMULAS}
71
+ ${BREW_UPGRADE_CASKS}
72
+ ${BREW_UPGRADE_AUTO_CASKS}"
73
+ export BREW_UPGRADE
74
+ if [ -z "${BREW_UPGRADE}" ]; then
75
+ echo "already up to date."
76
+ else
77
+ echo "${BREW_UPGRADE}"
78
+ fi
79
+
80
+ echo "+ brew cleanup"
81
+ BREW_CLEANUP=$(brew cleanup)
82
+ export BREW_CLEANUP
83
+ if [ -z "${BREW_CLEANUP}" ]; then
84
+ echo "Cleanup complete."
85
+ else
86
+ echo "${BREW_CLEANUP}"
87
+ fi
88
+
89
+ "${SCRIPT_DIR}"/brew-upgrade/brew-upgrade-autoupdate.sh "${1}"
@@ -0,0 +1,159 @@
1
+ #!/bin/bash
2
+
3
+ # Daily Homebrew Upgrade Script (with smart cask handling)
4
+
5
+ # Set SUDO_ASKPASS if needed
6
+ export SUDO_ASKPASS="${SCRIPT_DIR}/mac/sudo-askpass/mac-sudo-askpass.sh"
7
+
8
+ cd "${HOME}" || exit
9
+
10
+
11
+ # Step 1: Update brew
12
+ echo "+ brew update"
13
+ brew update
14
+
15
+ # Step 2: Pre-clean stale `.upgrading` cask dirs
16
+ echo "+ pre-clean"
17
+ find /opt/homebrew/Caskroom -type d -name "*.upgrading" | while read -r stale; do
18
+ echo "Removing stale upgrade dir: $stale"
19
+ rm -rf "$stale"
20
+ done
21
+
22
+ # Step 4: Perform comprehensive upgrade with Dock preservation
23
+ echo "+ brew upgrade"
24
+
25
+ # Backup Dock configuration to preserve app positions
26
+ backup_dock() {
27
+ if [[ "$OSTYPE" == "darwin"* ]]; then
28
+ echo "Backing up Dock configuration..."
29
+ defaults export com.apple.dock /tmp/dock-backup.plist 2>/dev/null || true
30
+ fi
31
+ }
32
+
33
+ restore_dock() {
34
+ if [[ "$OSTYPE" == "darwin"* ]] && [ -f "/tmp/dock-backup.plist" ]; then
35
+ echo "Restoring Dock configuration..."
36
+ defaults import com.apple.dock /tmp/dock-backup.plist 2>/dev/null || true
37
+ killall Dock 2>/dev/null || true
38
+ rm -f /tmp/dock-backup.plist
39
+ fi
40
+ }
41
+
42
+ # Backup Dock before upgrades
43
+ backup_dock
44
+
45
+ BREW_UPGRADE=$(mktemp)
46
+
47
+ # Upgrade formulas first
48
+ echo "Upgrading formulas..."
49
+ brew upgrade 2>&1 | tee -a "$BREW_UPGRADE"
50
+
51
+ # Upgrade regular casks (non-auto-updating)
52
+ echo "Upgrading regular casks..."
53
+ brew upgrade --cask 2>&1 | tee -a "$BREW_UPGRADE"
54
+
55
+ # Upgrade auto-updating casks individually (safer approach)
56
+ echo "Upgrading auto-updating casks individually..."
57
+ # Get list of all installed casks and check each one for auto_updates
58
+ AUTO_UPDATING_CASKS=""
59
+ for cask in $(brew list --cask); do
60
+ if brew info --cask "$cask" 2>/dev/null | grep -q "auto_updates true"; then
61
+ AUTO_UPDATING_CASKS="$AUTO_UPDATING_CASKS$cask"$'\n'
62
+ fi
63
+ done
64
+
65
+ if [ -n "$AUTO_UPDATING_CASKS" ]; then
66
+ while IFS= read -r cask; do
67
+ if [ -n "$cask" ]; then
68
+ echo "Upgrading auto-updating cask: $cask"
69
+ brew upgrade --cask "$cask" 2>&1 | tee -a "$BREW_UPGRADE"
70
+ fi
71
+ done <<< "$AUTO_UPDATING_CASKS"
72
+ fi
73
+
74
+ BREW_UPGRADE_CONTENT=$(cat "$BREW_UPGRADE")
75
+ export BREW_UPGRADE_CONTENT
76
+ rm "$BREW_UPGRADE"
77
+
78
+ # Restore Dock configuration
79
+ restore_dock
80
+
81
+ if [ -z "${BREW_UPGRADE_CONTENT}" ]; then
82
+ echo "already up to date."
83
+ else
84
+ echo "${BREW_UPGRADE_CONTENT}"
85
+ fi
86
+
87
+ # Step 5: Parse summary
88
+ UPDATED_BOTTLES=()
89
+ UPDATED_CASKS=()
90
+
91
+ # Create temporary files to store results
92
+ BOTTLES_TEMP=$(mktemp)
93
+ CASKS_TEMP=$(mktemp)
94
+
95
+ # Parse upgrade sections from the output
96
+ while IFS= read -r line; do
97
+ if [[ "$line" =~ ^\=\=\> ]]; then
98
+ continue
99
+ fi
100
+
101
+ # Match package upgrade lines (name old_version -> new_version)
102
+ if [[ "$line" =~ ^([a-zA-Z0-9@/._-]+)[[:space:]]+([0-9._-]+.*)[[:space:]]-\>[[:space:]]+([0-9._-]+.*) ]]; then
103
+ name="${BASH_REMATCH[1]}"
104
+ fromvers="${BASH_REMATCH[2]}"
105
+ tovers="${BASH_REMATCH[3]}"
106
+
107
+ # Check if it's a cask by looking for "(Cask)" in brew info output
108
+ if brew info "$name" 2>/dev/null | grep -qF "(Cask)"; then
109
+ echo "$name $fromvers -> $tovers" >> "$CASKS_TEMP"
110
+ else
111
+ echo "$name $fromvers -> $tovers" >> "$BOTTLES_TEMP"
112
+ fi
113
+ fi
114
+ done < <(echo "$BREW_UPGRADE_CONTENT" | grep -A 50 "^==> Upgrading [0-9]* outdated packages:")
115
+
116
+ # Read results back into arrays
117
+ while IFS= read -r line; do
118
+ [ -n "$line" ] && UPDATED_BOTTLES+=("$line")
119
+ done < "$BOTTLES_TEMP"
120
+
121
+ while IFS= read -r line; do
122
+ [ -n "$line" ] && UPDATED_CASKS+=("$line")
123
+ done < "$CASKS_TEMP"
124
+
125
+ # Clean up temp files
126
+ rm -f "$BOTTLES_TEMP" "$CASKS_TEMP"
127
+
128
+ # Step 6: Cleanup deeply
129
+ echo "+ brew cleanup"
130
+ brew cleanup --prune=all -s
131
+
132
+ # Step 7: Output summary
133
+ echo
134
+ echo "========== Brew Upgrade Summary =========="
135
+ if [ ${#UPDATED_BOTTLES[@]} -gt 0 ]; then
136
+ echo "Updated Bottles:"
137
+ for bottle in "${UPDATED_BOTTLES[@]}"; do
138
+ echo "* $bottle"
139
+ done
140
+ else
141
+ echo "No bottles were updated."
142
+ fi
143
+
144
+ if [ ${#UPDATED_CASKS[@]} -gt 0 ]; then
145
+ echo "Updated Casks:"
146
+ for cask in "${UPDATED_CASKS[@]}"; do
147
+ echo "* $cask"
148
+ done
149
+ else
150
+ echo "No casks were updated."
151
+ fi
152
+ echo "=========================================="
153
+ echo
154
+
155
+ # Step 8: Optional full cache nuke
156
+ if [ "${1}" = "full" ]; then
157
+ echo "+ rm brew --cache"
158
+ rm -rf "$(brew --cache)"
159
+ fi
@@ -0,0 +1,163 @@
1
+ #!/bin/bash
2
+
3
+ # Docker Cleanup Cron Management Script
4
+ # Manage the automated Docker cleanup cron job
5
+
6
+ set -e
7
+
8
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
9
+ CLEANUP_SCRIPT="$SCRIPT_DIR/docker-cleanup.sh"
10
+ CRON_JOB="0 2 * * 0 $CLEANUP_SCRIPT --yes"
11
+
12
+ show_help() {
13
+ cat << EOF
14
+ Docker Cleanup Cron Management
15
+
16
+ Usage: $0 [command]
17
+
18
+ Commands:
19
+ install Install the weekly cleanup cron job (Sundays at 2 AM)
20
+ uninstall Remove the cleanup cron job
21
+ status Show current cron job status
22
+ test Test the cleanup script (dry-run)
23
+ edit Edit the cron schedule manually
24
+ help Show this help message
25
+
26
+ Examples:
27
+ $0 install # Install weekly cleanup (Sundays at 2 AM)
28
+ $0 status # Check if cron job is installed
29
+ $0 test # Preview what would be cleaned (dry-run)
30
+ $0 uninstall # Remove the cron job
31
+ $0 edit # Edit cron schedule manually
32
+
33
+ Setting Up Aliases:
34
+ Docker cleanup aliases are automatically loaded via your shell config.
35
+ They're defined in: shell/alias/categories/system.zsh
36
+
37
+ Use:
38
+ docker-cleanup-manage install
39
+ docker-cleanup-manage status
40
+ docker-cleanup-manage test
41
+
42
+ One-Time Cleanup:
43
+ To run cleanup manually (without cron):
44
+ docker-cleanup --dry-run # Preview
45
+ docker-cleanup --yes # Run cleanup
46
+
47
+ EOF
48
+ }
49
+
50
+ check_installed() {
51
+ if crontab -l 2>/dev/null | grep -q "docker-cleanup.sh"; then
52
+ return 0
53
+ else
54
+ return 1
55
+ fi
56
+ }
57
+
58
+ install_cron() {
59
+ if check_installed; then
60
+ echo "⚠️ Docker cleanup cron job already installed!"
61
+ echo ""
62
+ echo "Current entry:"
63
+ crontab -l | grep "docker-cleanup.sh"
64
+ echo ""
65
+ read -p "Replace existing entry? (y/N) " -n 1 -r
66
+ echo
67
+ if [[ ! $REPLY =~ ^[Yy]$ ]]; then
68
+ echo "Installation cancelled."
69
+ exit 0
70
+ fi
71
+ uninstall_cron
72
+ fi
73
+
74
+ if [ ! -f "$CLEANUP_SCRIPT" ]; then
75
+ echo "❌ Error: Cleanup script not found at $CLEANUP_SCRIPT"
76
+ exit 1
77
+ fi
78
+
79
+ # Add new cron job
80
+ (crontab -l 2>/dev/null; echo "$CRON_JOB") | crontab -
81
+
82
+ echo "✅ Docker cleanup cron job installed!"
83
+ echo ""
84
+ echo "Schedule: Every Sunday at 2:00 AM"
85
+ echo "Command: $CLEANUP_SCRIPT --yes"
86
+ echo ""
87
+ echo "To view: $0 status"
88
+ echo "To remove: $0 uninstall"
89
+ }
90
+
91
+ uninstall_cron() {
92
+ if ! check_installed; then
93
+ echo "ℹ️ No Docker cleanup cron job found."
94
+ exit 0
95
+ fi
96
+
97
+ echo "Removing Docker cleanup cron job..."
98
+ crontab -l 2>/dev/null | grep -v "docker-cleanup.sh" | crontab -
99
+ echo "✅ Cron job removed."
100
+ }
101
+
102
+ show_status() {
103
+ if check_installed; then
104
+ echo "✅ Docker cleanup cron job is installed:"
105
+ echo ""
106
+ crontab -l | grep "docker-cleanup.sh" | while read -r line; do
107
+ echo " $line"
108
+ done
109
+ echo ""
110
+ echo "Script location: $CLEANUP_SCRIPT"
111
+ else
112
+ echo "ℹ️ Docker cleanup cron job is not installed."
113
+ echo ""
114
+ echo "To install: $0 install"
115
+ fi
116
+ }
117
+
118
+ test_cleanup() {
119
+ echo "🧪 Testing cleanup script (dry-run)..."
120
+ echo ""
121
+ "$CLEANUP_SCRIPT" --dry-run
122
+ }
123
+
124
+ edit_cron() {
125
+ if ! check_installed; then
126
+ echo "ℹ️ No cron job installed. Install it first: $0 install"
127
+ exit 1
128
+ fi
129
+
130
+ echo "Opening crontab editor..."
131
+ echo "Look for the line containing 'docker-cleanup.sh' to edit the schedule."
132
+ echo ""
133
+ read -p "Press Enter to continue..."
134
+ crontab -e
135
+ }
136
+
137
+ # Main command handling
138
+ case "${1:-}" in
139
+ install)
140
+ install_cron
141
+ ;;
142
+ uninstall|remove)
143
+ uninstall_cron
144
+ ;;
145
+ status|check)
146
+ show_status
147
+ ;;
148
+ test)
149
+ test_cleanup
150
+ ;;
151
+ edit)
152
+ edit_cron
153
+ ;;
154
+ help|--help|-h)
155
+ show_help
156
+ ;;
157
+ *)
158
+ echo "Unknown command: ${1:-}"
159
+ echo ""
160
+ show_help
161
+ exit 1
162
+ ;;
163
+ esac
@@ -0,0 +1,12 @@
1
+ # Docker Cleanup Cron Job
2
+ # Runs weekly cleanup on Sundays at 2 AM
3
+ #
4
+ # To install, use the management script:
5
+ # ./docker-cleanup-manage.sh install
6
+ #
7
+ # Or manually edit crontab:
8
+ # crontab -e
9
+ # Then add this line (adjust path as needed):
10
+ # 0 2 * * 0 /path/to/docker-cleanup.sh --yes
11
+
12
+ 0 2 * * 0 /path/to/docker-cleanup.sh --yes