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
@@ -0,0 +1,459 @@
1
+ #!/bin/zsh
2
+
3
+ # GitHub helper functions - extracted from the main alias file
4
+
5
+ gh-update-prs() {
6
+ local dependabot_command=""
7
+ local owner=""
8
+ local repo=""
9
+ local branch_filter=""
10
+ local args=()
11
+ local i=1
12
+
13
+ # Parse flags and arguments
14
+ if [ $# -gt 0 ]; then
15
+ while [ $i -le $# ]; do
16
+ arg="${@[$i]}"
17
+ case $arg in
18
+ --dependabot|-d)
19
+ if [ $i -lt $# ]; then
20
+ dependabot_command="${@[$((i+1))]}"
21
+ i=$((i+2))
22
+ else
23
+ echo "Error: --dependabot flag requires a command"
24
+ return 1
25
+ fi
26
+ ;;
27
+ --recreate|-r)
28
+ dependabot_command="recreate"
29
+ i=$((i+1))
30
+ ;;
31
+ *)
32
+ args+=("$arg")
33
+ i=$((i+1))
34
+ ;;
35
+ esac
36
+ done
37
+
38
+ # Extract positional args if provided
39
+ if [ -n "${args[1]}" ]; then
40
+ owner="${args[1]}"
41
+ fi
42
+ if [ -n "${args[2]}" ]; then
43
+ repo="${args[2]}"
44
+ fi
45
+ if [ -n "${args[3]}" ]; then
46
+ branch_filter="${args[3]}"
47
+ fi
48
+ fi
49
+
50
+ # Determine if we should use automation mode (skip all prompts)
51
+ # Automation mode: owner AND repo are both provided via arguments
52
+ local automation_mode=false
53
+ if [ $# -gt 0 ] && [ -n "$owner" ] && [ -n "$repo" ]; then
54
+ automation_mode=true
55
+ fi
56
+
57
+ # Interactive CLI mode - only if required args are missing
58
+ if [ "$automation_mode" = false ]; then
59
+ echo ""
60
+ echo "╔════════════════════════════════════════════════════════════╗"
61
+ echo "║ GitHub PR Update - Interactive Mode ║"
62
+ echo "╚════════════════════════════════════════════════════════════╝"
63
+ echo ""
64
+
65
+ # Get owner/org
66
+ if [ -z "$owner" ]; then
67
+ echo -n "› Enter GitHub owner/org: "
68
+ read -r owner
69
+ if [ -z "$owner" ]; then
70
+ echo "Error: Owner/org is required"
71
+ return 1
72
+ fi
73
+ else
74
+ echo "› GitHub owner/org: $owner"
75
+ fi
76
+
77
+ # Get repository
78
+ if [ -z "$repo" ]; then
79
+ echo -n "› Enter repository name: "
80
+ read -r repo
81
+ if [ -z "$repo" ]; then
82
+ echo "Error: Repository name is required"
83
+ return 1
84
+ fi
85
+ else
86
+ echo "› Repository: $repo"
87
+ fi
88
+
89
+ # Get branch filter (optional)
90
+ if [ -z "$branch_filter" ]; then
91
+ echo -n "› Enter branch filter (optional, leave blank for all PRs): "
92
+ read -r branch_filter
93
+ else
94
+ echo "› Branch filter: $branch_filter"
95
+ fi
96
+
97
+ # Get dependabot command (optional)
98
+ if [ -z "$dependabot_command" ]; then
99
+ echo ""
100
+ echo "› Add a Dependabot command? (y/N): "
101
+ read -r add_dependabot
102
+ if [[ "$add_dependabot" =~ ^[Yy]$ ]]; then
103
+ echo ""
104
+ echo " Available Dependabot commands:"
105
+ echo " 1) recreate - Recreate the PR"
106
+ echo " 2) merge - Merge the PR"
107
+ echo " 3) close - Close the PR"
108
+ echo " 4) rebase - Rebase the PR"
109
+ echo " 5) squash - Squash and merge the PR"
110
+ echo " 6) ignore-major - Ignore this major version"
111
+ echo " 7) ignore-minor - Ignore this minor version"
112
+ echo " 8) ignore-patch - Ignore this patch version"
113
+ echo " 9) ignore-dependency - Ignore this dependency"
114
+ echo ""
115
+ echo -n "› Select command (1-9 or name): "
116
+ read -r dependabot_choice
117
+
118
+ case $dependabot_choice in
119
+ 1|recreate)
120
+ dependabot_command="recreate"
121
+ ;;
122
+ 2|merge)
123
+ dependabot_command="merge"
124
+ ;;
125
+ 3|close)
126
+ dependabot_command="close"
127
+ ;;
128
+ 4|rebase)
129
+ dependabot_command="rebase"
130
+ ;;
131
+ 5|squash)
132
+ dependabot_command="squash"
133
+ ;;
134
+ 6|ignore-major)
135
+ dependabot_command="ignore-major"
136
+ ;;
137
+ 7|ignore-minor)
138
+ dependabot_command="ignore-minor"
139
+ ;;
140
+ 8|ignore-patch)
141
+ dependabot_command="ignore-patch"
142
+ ;;
143
+ 9|ignore-dependency)
144
+ dependabot_command="ignore-dependency"
145
+ ;;
146
+ *)
147
+ echo "Invalid selection. Skipping Dependabot command."
148
+ dependabot_command=""
149
+ ;;
150
+ esac
151
+ fi
152
+ else
153
+ echo "› Dependabot command: $dependabot_command"
154
+ fi
155
+
156
+ # Show summary
157
+ echo ""
158
+ echo "──────────────────────────────────────────"
159
+ echo " Configuration Summary:"
160
+ echo "──────────────────────────────────────────"
161
+ echo " Owner/Org: $owner"
162
+ echo " Repository: $repo"
163
+ if [ -n "$branch_filter" ]; then
164
+ echo " Branch Filter: $branch_filter"
165
+ else
166
+ echo " Branch Filter: (all PRs)"
167
+ fi
168
+ if [ -n "$dependabot_command" ]; then
169
+ echo " Dependabot: $dependabot_command"
170
+ else
171
+ echo " Dependabot: (none)"
172
+ fi
173
+ echo "──────────────────────────────────────────"
174
+ echo ""
175
+ fi
176
+
177
+ # Validate inputs
178
+ if [[ -z "$owner" || -z "$repo" ]]; then
179
+ echo "Error: Owner and repository are required"
180
+ return 1
181
+ fi
182
+
183
+ # Check prerequisites
184
+ # Check if gh CLI is installed
185
+ if ! command -v gh >/dev/null 2>&1; then
186
+ echo "Error: GitHub CLI (gh) is not installed. Install with 'brew install gh'"
187
+ return 1
188
+ fi
189
+
190
+ if ! gh auth status > /dev/null 2>&1; then
191
+ echo "Please run 'gh auth login' to authenticate first."
192
+ return 1
193
+ fi
194
+
195
+ # Check if jq is installed
196
+ if ! command -v jq >/dev/null 2>&1; then
197
+ echo "Error: jq is not installed. Install with 'brew install jq'"
198
+ return 1
199
+ fi
200
+
201
+ # Validate dependabot command if provided
202
+ if [ -n "$dependabot_command" ]; then
203
+ valid_commands=("recreate" "merge" "close" "rebase" "squash" "ignore-major" "ignore-minor" "ignore-patch" "ignore-dependency")
204
+ if [[ ! " ${valid_commands[@]} " =~ " ${dependabot_command} " ]]; then
205
+ echo "Error: Invalid dependabot command '$dependabot_command'"
206
+ echo "Valid commands: ${valid_commands[*]}"
207
+ echo ""
208
+ echo "Usage examples:"
209
+ echo " gh-update-prs owner repo --dependabot recreate"
210
+ echo " gh-update-prs owner repo --dependabot merge"
211
+ echo " gh-update-prs owner repo --recreate # shorthand for recreate"
212
+ echo " gh-update-prs # interactive mode"
213
+ return 1
214
+ fi
215
+ fi
216
+
217
+ # Fetch PRs
218
+ if [ "$automation_mode" = false ]; then
219
+ echo " Fetching all open PRs for $owner/$repo..."
220
+ else
221
+ echo ""
222
+ echo "──────────────────────────────────────────"
223
+ echo " Fetching all open PRs for $owner/$repo..."
224
+ echo "──────────────────────────────────────────"
225
+ fi
226
+
227
+ # Paginate through PRs (GitHub API returns 100 per request)
228
+ page=1
229
+ prs="[]"
230
+
231
+ while true; do
232
+ batch=$(gh api "/repos/$owner/$repo/pulls?state=open&per_page=100&page=$page" \
233
+ --jq '.[] | {number: .number, title: .title, url: .html_url, headRefName: .head.ref, author: .user.login}')
234
+
235
+ if [ -z "$batch" ]; then
236
+ break # Stop if no more PRs are found
237
+ fi
238
+
239
+ prs=$(echo "$prs" | jq --slurpfile new_prs <(echo "$batch") '. + $new_prs')
240
+ page=$((page + 1))
241
+ done
242
+
243
+ # Apply branch filtering if a filter is provided
244
+ if [ -n "$branch_filter" ]; then
245
+ prs=$(echo "$prs" | jq --arg filter "$branch_filter" '[.[] | select(.headRefName | contains($filter))]')
246
+ fi
247
+
248
+ # Check if prs is empty or invalid JSON
249
+ if [ "$(echo "$prs" | jq 'length')" -eq 0 ]; then
250
+ echo "⚠ No open PRs found matching filter '$branch_filter'."
251
+ return 0
252
+ fi
253
+
254
+ # Build action text based on dependabot command
255
+ action_text="updated"
256
+ if [ -n "$dependabot_command" ]; then
257
+ case $dependabot_command in
258
+ recreate)
259
+ action_text="updated and commented '@dependabot recreate'"
260
+ ;;
261
+ merge)
262
+ action_text="updated and commented '@dependabot merge'"
263
+ ;;
264
+ close)
265
+ action_text="updated and commented '@dependabot close'"
266
+ ;;
267
+ rebase)
268
+ action_text="updated and commented '@dependabot rebase'"
269
+ ;;
270
+ squash)
271
+ action_text="updated and commented '@dependabot squash and merge'"
272
+ ;;
273
+ ignore-major)
274
+ action_text="updated and commented '@dependabot ignore this major version'"
275
+ ;;
276
+ ignore-minor)
277
+ action_text="updated and commented '@dependabot ignore this minor version'"
278
+ ;;
279
+ ignore-patch)
280
+ action_text="updated and commented '@dependabot ignore this patch version'"
281
+ ;;
282
+ ignore-dependency)
283
+ action_text="updated and commented '@dependabot ignore this dependency'"
284
+ ;;
285
+ esac
286
+ fi
287
+
288
+ # Show PRs that will be affected
289
+ if [ "$automation_mode" = false ]; then
290
+ echo ""
291
+ fi
292
+ echo "──────────────────────────────────────────"
293
+ echo " The following PRs will be $action_text:"
294
+ echo "──────────────────────────────────────────"
295
+ echo "$prs" | jq -r '.[] | "@\(.author) #\(.number) \(.title)"'
296
+ echo "──────────────────────────────────────────"
297
+
298
+ # Calculate total count and print it
299
+ total=$(echo "$prs" | jq 'length')
300
+ echo " Total PRs: $total"
301
+
302
+ # Confirm before proceeding (skip in automation mode)
303
+ if [ "$automation_mode" = false ]; then
304
+ echo ""
305
+ echo -n "› Ready to proceed? (y/N): "
306
+ read -r confirm
307
+ if [[ ! "$confirm" =~ ^[Yy]$ ]]; then
308
+ echo "› Operation canceled."
309
+ return 0
310
+ fi
311
+ echo ""
312
+ else
313
+ echo ""
314
+ fi
315
+
316
+ echo "──────────────────────────────────────────"
317
+
318
+ # Process each PR
319
+ count=0
320
+ while read -r pr; do
321
+ count=$((count + 1))
322
+ pr_number=$(echo "$pr" | jq -r '.number')
323
+ pr_title=$(echo "$pr" | jq -r '.title')
324
+ pr_author=$(echo "$pr" | jq -r '.author')
325
+
326
+ printf "[%d/%d] @%s #%s \"%s\" " "$count" "$total" "$pr_author" "$pr_number" "$pr_title"
327
+
328
+ update_output=$(gh pr update-branch "$pr_number" --repo "$owner/$repo" 2>&1)
329
+
330
+ if echo "$update_output" | grep -q "PR branch already up-to-date"; then
331
+ echo -e "\033[0;33m🟡 Current\033[0m"
332
+ elif echo "$update_output" | grep -q "could not be updated"; then
333
+ echo -e "\033[0;31m🔴 Failed\033[0m"
334
+ echo " ⚠ GitHub Output: $update_output"
335
+ else
336
+ echo -e "\033[0;32m🟢 Updated\033[0m"
337
+ fi
338
+
339
+ # Comment dependabot command if specified
340
+ if [ -n "$dependabot_command" ]; then
341
+ case $dependabot_command in
342
+ recreate)
343
+ comment_body="@dependabot recreate"
344
+ ;;
345
+ merge)
346
+ comment_body="@dependabot merge"
347
+ ;;
348
+ close)
349
+ comment_body="@dependabot close"
350
+ ;;
351
+ rebase)
352
+ comment_body="@dependabot rebase"
353
+ ;;
354
+ squash)
355
+ comment_body="@dependabot squash and merge"
356
+ ;;
357
+ ignore-major)
358
+ comment_body="@dependabot ignore this major version"
359
+ ;;
360
+ ignore-minor)
361
+ comment_body="@dependabot ignore this minor version"
362
+ ;;
363
+ ignore-patch)
364
+ comment_body="@dependabot ignore this patch version"
365
+ ;;
366
+ ignore-dependency)
367
+ comment_body="@dependabot ignore this dependency"
368
+ ;;
369
+ esac
370
+
371
+ comment_output=$(gh pr comment "$pr_number" --repo "$owner/$repo" --body "$comment_body" 2>&1)
372
+ if [ $? -eq 0 ]; then
373
+ echo " ✓ Commented '$comment_body'"
374
+ else
375
+ echo " ⚠ Failed to comment: $comment_output"
376
+ fi
377
+ fi
378
+ done < <(echo "$prs" | jq -c '.[]')
379
+
380
+ echo "──────────────────────────────────────────"
381
+ echo "✓ All PRs processed."
382
+
383
+ # Show rerun command (only in interactive mode)
384
+ if [ "$automation_mode" = false ]; then
385
+ echo ""
386
+ # Build the rerun command
387
+ rerun_cmd="gh-update-prs"
388
+ rerun_cmd="$rerun_cmd \"$owner\""
389
+ rerun_cmd="$rerun_cmd \"$repo\""
390
+ if [ -n "$branch_filter" ]; then
391
+ rerun_cmd="$rerun_cmd \"$branch_filter\""
392
+ fi
393
+ if [ -n "$dependabot_command" ]; then
394
+ rerun_cmd="$rerun_cmd --dependabot \"$dependabot_command\""
395
+ fi
396
+
397
+ echo "To rerun this: $rerun_cmd"
398
+ fi
399
+ }
400
+
401
+ gh-tags() {
402
+ # Prompt for required inputs if not provided
403
+ if [ -z "$1" ]; then
404
+ echo -n "› Enter GitHub owner/org: "
405
+ read -r owner
406
+ else
407
+ owner=$1
408
+ fi
409
+
410
+ if [ -z "$2" ]; then
411
+ echo -n "› Enter repository name: "
412
+ read -r repo
413
+ else
414
+ repo=$2
415
+ fi
416
+
417
+ if [ -z "$3" ]; then
418
+ echo -n "› Action? (create|delete): "
419
+ read -r action
420
+ else
421
+ action=$3
422
+ fi
423
+
424
+ if [ "$action" = "create" ]; then
425
+ echo -n "› Enter version/tag to create: "
426
+ read -r version
427
+ echo "› Creating release/tag '$version' for $owner/$repo..."
428
+ gh release create "$version" --repo "$owner/$repo"
429
+ elif [ "$action" = "delete" ]; then
430
+ echo -n "› Enter version/tag to delete (or 'all'): "
431
+ read -r version
432
+ if [ "$version" = "all" ]; then
433
+ echo "› This will remove all releases/tags. Proceed? (y/N): "
434
+ read -r confirm_all
435
+ if [[ "$confirm_all" =~ ^[Yy]$ ]]; then
436
+ tags=$(gh release list --repo "$owner/$repo" --json tagName --jq '.[].tagName')
437
+ for tag in $tags; do
438
+ echo "› Deleting release/tag '$tag' from $owner/$repo..."
439
+ gh release delete "$tag" --repo "$owner/$repo"
440
+ gh api --method DELETE "/repos/$owner/$repo/git/refs/tags/$tag"
441
+ done
442
+ else
443
+ echo "› Operation canceled."
444
+ fi
445
+ else
446
+ echo "› Deleting release/tag '$version' from $owner/$repo..."
447
+ echo -n "› Delete release, tag, or both? (release|tag|both): "
448
+ read -r delete_choice
449
+ if [ "$delete_choice" = "release" ] || [ "$delete_choice" = "both" ]; then
450
+ gh release delete "$version" --repo "$owner/$repo"
451
+ fi
452
+ if [ "$delete_choice" = "tag" ] || [ "$delete_choice" = "both" ]; then
453
+ gh api --method DELETE "/repos/$owner/$repo/git/refs/tags/$version"
454
+ fi
455
+ fi
456
+ else
457
+ echo "› Unknown action: $action"
458
+ fi
459
+ }
@@ -0,0 +1,46 @@
1
+ #!/bin/zsh
2
+
3
+ # SSH connection aliases
4
+ alias ssh-auth="ssh -i auth.pem ec2-user@ec2-3-21-63-225.us-east-2.compute.amazonaws.com"
5
+ alias mosh-auth="mosh ec2-3-21-63-225.us-east-2.compute.amazonaws.com"
6
+ alias ssh-dns="ssh -i ~/.ssh/MCServer.pem ec2-user@ec2-3-136-147-58.us-east-2.compute.amazonaws.com"
7
+ alias mosh-dns="mosh ec2-3-136-147-58.us-east-2.compute.amazonaws.com"
8
+
9
+ # Project-specific SSH connections
10
+ alias ssh-raspy="ssh raspy@192.168.86.35"
11
+ alias mosh-raspy="mosh raspy@192.168.86.35"
12
+ alias ssh-raspy-remote="ssh raspy@ip.chaletlejar.com -p 25"
13
+ alias mosh-raspy-remote="mosh raspy@ip.chaletlejar.com"
14
+ alias ssh-cr="ssh cloudrock-admin@cloudrock.bleak-cliff.ts.net"
15
+ alias mosh-cr="mosh cloudrock-admin@cloudrock.bleak-cliff.ts.net"
16
+ alias ssh-wolfe="ssh -X wolfe@wolfe.bleak-cliff.ts.net"
17
+ alias ssh-wolfe-ip="ssh -X wolfe@192.168.0.4"
18
+ alias mosh-wolfe="mosh wolfe@wolfe.bleak-cliff.ts.net"
19
+ alias ssh-mikmac="ssh mikl@mikmac.bleak-cliff.ts.net"
20
+ alias ssh-duplo="ssh duplo"
21
+ alias ssh-mikpc="ssh mikpc"
22
+ alias ssh-mikpc-local="ssh mikpc-local"
23
+ alias mosh-mikpc="mosh wolfe@100.89.204.71"
24
+
25
+ # SCP aliases
26
+ alias scp-chalet-worlds="scp -P 2420 -rc chalet-le-jar@cloudrock.bleak-cliff.ts.net:/home/chalet-le-jar/worlds ~/Desktop/"
27
+ alias scp-cr-all="scp -rp ${CHALET_LE_JAR_DIR}/ chalet-le-jar@cloudrock.bleak-cliff.ts.net:~"
28
+ alias scp-cr-worlds="scp -rp ~/Desktop/clj.zip chalet-le-jar@cloudrock.bleak-cliff.ts.net:/home/chalet-le-jar/worlds/"
29
+
30
+ # SSH utility
31
+ alias ssh-reset="rm -r ${HOME}/.ssh/known_hosts*"
32
+
33
+ # SCP helper function
34
+ scp-wolfe() {
35
+ scp -rp "$@" wolfe@server.wolfe.family:~
36
+ }
37
+
38
+ # Application-specific aliases
39
+ alias vm3="cd ${DROPBOX}/${DEVBOX:-dev}/view-master-3000 && npm run start:all"
40
+
41
+ # Bedrock version utility
42
+ bedrockv() {
43
+ LATEST_URL=$(http -b GET https://www.minecraft.net/en-us/download/server/bedrock | grep -oE 'https://minecraft.azureedge.net/bin-linux/bedrock-server-[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\.zip' | head -1)
44
+ LATEST_VERSION=$(echo "${LATEST_URL}" | grep -oE 'bedrock-server-[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sed 's/bedrock-server-//')
45
+ echo "${LATEST_VERSION}"
46
+ }
@@ -0,0 +1,46 @@
1
+ #!/bin/zsh
2
+
3
+ # PATH configuration - order matters!
4
+ # HOMEBREW_PREFIX is set in variables.zsh (loaded before this file)
5
+ if [[ -n "${HOMEBREW_PREFIX:-}" ]]; then
6
+ PATH="${HOMEBREW_PREFIX}/bin:${PATH}" # Homebrew first
7
+ fi
8
+
9
+ # GNU grep - check both Homebrew locations
10
+ if [[ -d "${HOMEBREW_PREFIX:-/opt/homebrew}/opt/grep/libexec/gnubin" ]]; then
11
+ PATH="${HOMEBREW_PREFIX}/opt/grep/libexec/gnubin:${PATH}"
12
+ elif [[ -d "/usr/local/opt/grep/libexec/gnubin" ]]; then
13
+ PATH="/usr/local/opt/grep/libexec/gnubin:${PATH}"
14
+ fi
15
+
16
+ # Java 21 - check both Homebrew locations
17
+ if [[ -d "${HOMEBREW_PREFIX:-/opt/homebrew}/opt/openjdk@21/bin" ]]; then
18
+ PATH="${HOMEBREW_PREFIX}/opt/openjdk@21/bin:${PATH}"
19
+ elif [[ -d "/usr/local/opt/openjdk@21/bin" ]]; then
20
+ PATH="/usr/local/opt/openjdk@21/bin:${PATH}"
21
+ fi
22
+
23
+ # Tcl/Tk - use HOMEBREW_PREFIX if available
24
+ if [[ -n "${HOMEBREW_PREFIX:-}" ]] && [[ -d "${HOMEBREW_PREFIX}/opt/tcl-tk/bin" ]]; then
25
+ PATH="${HOMEBREW_PREFIX}/opt/tcl-tk/bin:${PATH}"
26
+ fi
27
+
28
+ # Ruby - use HOMEBREW_PREFIX if available
29
+ if [[ -n "${HOMEBREW_PREFIX:-}" ]] && [[ -d "${HOMEBREW_PREFIX}/opt/ruby/bin" ]]; then
30
+ PATH="${HOMEBREW_PREFIX}/opt/ruby/bin:${PATH}"
31
+ fi
32
+
33
+ # Modern curl - check both Homebrew locations
34
+ if [[ -d "${HOMEBREW_PREFIX:-/opt/homebrew}/opt/curl/bin" ]]; then
35
+ PATH="${HOMEBREW_PREFIX}/opt/curl/bin:${PATH}"
36
+ elif [[ -d "/usr/local/opt/curl/bin" ]]; then
37
+ PATH="/usr/local/opt/curl/bin:${PATH}"
38
+ fi
39
+
40
+ PATH="${HOME}/.pyenv/bin:${PATH}" # Python env
41
+ PATH="${PATH}:${HOME}/.dotnet/sdks/7.0.404" # .NET SDK
42
+ PATH="${PATH}:${HOME}/.dotnet/tools" # .NET tools
43
+ PATH="${PATH}:${HOME}/.local/bin" # Local binaries
44
+ PATH+="/usr/local/sbin" # System admin tools
45
+
46
+ export PATH
@@ -0,0 +1,78 @@
1
+ #!/bin/zsh
2
+
3
+ # Navigation functions
4
+ # Use functions instead of aliases for better error handling
5
+ dev() { cd "${DEV:-${HOME}}" || { echo "DEV not set"; return 1; } }
6
+ configs() { cd "${CONFIG_DIR:-${HOME}}" || { echo "CONFIG_DIR not set"; return 1; } }
7
+ scripts() { cd "${CONFIG_DIR:-${HOME}}/scripts" || { echo "CONFIG_DIR not set"; return 1; } }
8
+ zrc() { cd "${CONFIG_DIR:-${HOME}}/shell/zsh" || { echo "CONFIG_DIR not set"; return 1; } }
9
+ gitlang() { cd "${GITLANG_DIR:-${HOME}}" || { echo "GITLANG_DIR not set"; return 1; } }
10
+ clj() { cd "${CHALET_LE_JAR_DIR:-${HOME}}" || { echo "CHALET_LE_JAR_DIR not set"; return 1; } }
11
+ dropbox() { cd "${DROPBOX:-${HOME}}" || { echo "DROPBOX not set"; return 1; } }
12
+ unicorne() { cd "${DEV:-${HOME}}/unicorne" || { echo "DEV not set"; return 1; } }
13
+
14
+ # Editor shortcuts
15
+ alias vsc="code ."
16
+ alias zrc.="code ${CONFIG_DIR}/shell/zsh/.zshrc"
17
+ alias configs.="code ${CONFIG_DIR}"
18
+ alias scripts.="code ${CONFIG_DIR}/scripts"
19
+ alias gitlang.="code ${GITLANG_DIR}"
20
+ alias clj.="code ${CHALET_LE_JAR_DIR}"
21
+
22
+ # Configuration sync aliases
23
+ alias pull-configs="cd ${CONFIG_DIR} && ./scripts/sync/pull-configs.zsh"
24
+ alias push-configs="cd ${CONFIG_DIR} && ./scripts/sync/push-configs.zsh"
25
+
26
+ # System utilities
27
+ alias audio="SUDO_ASKPASS=${ASKPASS} sudo -A killall coreaudiod"
28
+ # Use eza if available, fall back to ls
29
+ if command -v eza >/dev/null 2>&1; then
30
+ alias ls="eza -a --icons --group-directories-first"
31
+ alias ll="eza -la --icons --group-directories-first --git"
32
+ alias lt="eza -a --icons --tree --level=2 --group-directories-first"
33
+ else
34
+ alias ls="ls -aG"
35
+ alias ll="ls -laG"
36
+ fi
37
+ alias x-scripts='find "${SCRIPT_DIR}" -name "*.sh" -exec chmod +x {} \;'
38
+ alias brew="export SUDO_ASKPASS=${ASKPASS}; brew"
39
+
40
+ # Update utilities
41
+ alias lc="${SCRIPT_DIR}/brew/livecheck/brew-livecheck.sh"
42
+ alias lcu="${SCRIPT_DIR}/brew/livecheck/brew-livecheck.sh -lbd"
43
+ alias brewu="${SCRIPT_DIR}/brew/upgrade/brew-upgrade-full.sh"
44
+ alias ngu="${SCRIPT_DIR}/npm/upgrade/npm-upgrade.sh"
45
+ alias macu="${SCRIPT_DIR}/mac/upgrade/mac-upgrade.sh"
46
+ alias docks="${SCRIPT_DIR}/mac/dock-sort/mac-dock-sort.sh"
47
+ alias update-ha-entities="${HOME}/Dropbox/mikbook/dev/wolfe-server/scripts/system/update-ha-entities.sh"
48
+ alias upgrade="brewu; ngu; macu; docks"
49
+ alias cupgrade="dev; clear; upgrade"
50
+ alias upgrader="upgrade; lcu"
51
+ alias cupgrader="dev; clear; upgrader"
52
+
53
+ # Dropbox ignore utilities
54
+ alias dbi='find "${DROPBOX}" -type d -name "node_modules" -exec ${SCRIPT_DIR}/mac/dropbox-ignore/mac-dropbox-ignore.sh {} \;'
55
+ alias dbi-current='find "$(pwd)" -maxdepth 1 -type d -name "node_modules" -exec ${SCRIPT_DIR}/mac/dropbox-ignore/mac-dropbox-ignore.sh {} \;'
56
+
57
+ # GitHub CLI shortcuts
58
+ alias '??'="gh copilot suggest"
59
+ alias '???'="gh copilot explain"
60
+
61
+ # Browser shortcuts
62
+ alias github="open 'https://github.com/chiefmikey'"
63
+ alias repos="open 'https://github.com/chiefmikey?tab=repositories'"
64
+ alias projects="open 'https://github.com/chiefmikey?tab=projects'"
65
+
66
+ # Docker cleanup aliases
67
+ docker-cleanup() {
68
+ # Route 'install' and other manage commands to the manage script
69
+ case "$1" in
70
+ install|uninstall|status|test|edit|help)
71
+ "${CONFIG_DIR}/scripts/docker/cleanup/docker-cleanup-manage.sh" "$@"
72
+ ;;
73
+ *)
74
+ "${CONFIG_DIR}/scripts/docker/cleanup/docker-cleanup.sh" "$@"
75
+ ;;
76
+ esac
77
+ }
78
+ alias docker-cleanup-manage="${CONFIG_DIR}/scripts/docker/cleanup/docker-cleanup-manage.sh"
@@ -0,0 +1,11 @@
1
+ #!/bin/zsh
2
+
3
+ plex-movie() {
4
+ rsync -avz --progress "$@" wolfe@100.125.250.33:/mnt/storage/plex/media/Movies/
5
+ }
6
+ plex-tv() {
7
+ rsync -avz --progress "$@" wolfe@100.125.250.33:/mnt/storage/plex/media/TV/
8
+ }
9
+ plex-music() {
10
+ rsync -avz --progress "$@" wolfe@100.125.250.33:/mnt/storage/plex/media/Music/
11
+ }