@sebastienrousseau/dotfiles 0.2.520 → 0.2.521

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 (323) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/LICENSE-APACHE +190 -0
  3. package/LICENSE-MIT +21 -0
  4. package/README.md +43 -37
  5. package/install.sh +76 -10
  6. package/package.json +7 -7
  7. package/tools/README.md +49 -0
  8. package/tools/ci/install-chezmoi-verified.sh +68 -0
  9. package/docs/.vitepress/reports/localization-readability-audit.md +0 -73
  10. package/docs/AI.md +0 -179
  11. package/docs/ARCHITECTURE.md +0 -117
  12. package/docs/CNAME +0 -1
  13. package/docs/CONFIG_STRATEGY.md +0 -124
  14. package/docs/COPYRIGHT +0 -7
  15. package/docs/ECOSYSTEM.md +0 -220
  16. package/docs/GOLD-STANDARD-AUDIT.md +0 -352
  17. package/docs/GOVERNANCE.md +0 -98
  18. package/docs/MAINTAINERS.md +0 -41
  19. package/docs/MINIMUM-TOOLCHAIN.md +0 -100
  20. package/docs/NAMING_CONVENTIONS.md +0 -102
  21. package/docs/OPENCODE.md +0 -127
  22. package/docs/README.md +0 -84
  23. package/docs/STRUCTURE.md +0 -102
  24. package/docs/adr/ADR-001-ci-cd-pipeline.md +0 -118
  25. package/docs/adr/ADR-002-shell-performance.md +0 -130
  26. package/docs/adr/ADR-003-security-first.md +0 -158
  27. package/docs/adr/ADR-004-cli-architecture.md +0 -171
  28. package/docs/adr/ADR-005-chezmoi-choice.md +0 -99
  29. package/docs/adr/ADR-006-shell-selection.md +0 -124
  30. package/docs/adr/ADR-007-multi-shell-parity.md +0 -62
  31. package/docs/adr/ADR-008-alias-system-architecture.md +0 -95
  32. package/docs/adr/ADR-009-wallpaper-driven-theming.md +0 -131
  33. package/docs/adr/ADR-010-starship-transient-prompt.md +0 -144
  34. package/docs/adr/ADR-011-nushell-tier3-keep.md +0 -144
  35. package/docs/adr/ADR-012-ai-fleet-local-proxy.md +0 -79
  36. package/docs/adr/README.md +0 -40
  37. package/docs/architecture/AI_COST_OPTIMIZATION.md +0 -144
  38. package/docs/architecture/ARCHITECTURE.md +0 -20
  39. package/docs/architecture/INTEROP.md +0 -44
  40. package/docs/architecture/REPO_LAYOUT.md +0 -241
  41. package/docs/architecture/WALKTHROUGH.md +0 -86
  42. package/docs/architecture/fleet-deployment.md +0 -77
  43. package/docs/archive/EUXIS_2026_REVIEW.md +0 -127
  44. package/docs/archive/LEGACY_ROADMAP.md +0 -6
  45. package/docs/archive/MILESTONE_v0.2.493.md +0 -47
  46. package/docs/archive/PLAN.md +0 -199
  47. package/docs/archive/REPO_AUDIT.md +0 -31
  48. package/docs/articles/.pages +0 -6
  49. package/docs/articles/2026-07-05-custom-mkdocs-material-dark-theme.md +0 -216
  50. package/docs/articles/2026-07-05-fish-startup-abbr.md +0 -153
  51. package/docs/articles/2026-07-05-master-to-main-rename-runbook.md +0 -128
  52. package/docs/articles/index.md +0 -36
  53. package/docs/guides/INSTALL.md +0 -144
  54. package/docs/guides/MACOS_ICLOUD_SYMLINKS.md +0 -121
  55. package/docs/guides/NEOVIM_IDE_GUIDE.md +0 -61
  56. package/docs/guides/THEMING.md +0 -230
  57. package/docs/guides/TROUBLESHOOTING.md +0 -176
  58. package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +0 -792
  59. package/docs/index.md +0 -132
  60. package/docs/interop/A2A.md +0 -39
  61. package/docs/interop/POWERSHELL.md +0 -102
  62. package/docs/manual/00-introduction.md +0 -89
  63. package/docs/manual/01-concepts/01-architecture.md +0 -138
  64. package/docs/manual/01-concepts/02-trust-model.md +0 -183
  65. package/docs/manual/01-concepts/03-theme-engine.md +0 -186
  66. package/docs/manual/01-concepts/04-fleet.md +0 -148
  67. package/docs/manual/01-concepts/05-self-healing.md +0 -204
  68. package/docs/manual/02-tutorials/01-first-install.md +0 -197
  69. package/docs/manual/02-tutorials/02-add-wallpaper.md +0 -216
  70. package/docs/manual/02-tutorials/03-create-profile.md +0 -244
  71. package/docs/manual/02-tutorials/04-encrypt-secret.md +0 -281
  72. package/docs/manual/02-tutorials/05-deploy-fleet.md +0 -283
  73. package/docs/manual/03-reference/01-dot-cli.md +0 -475
  74. package/docs/manual/03-reference/02-config-files.md +0 -265
  75. package/docs/manual/03-reference/03-environment.md +0 -124
  76. package/docs/manual/03-reference/04-templates.md +0 -190
  77. package/docs/manual/03-reference/05-feature-flags.md +0 -187
  78. package/docs/manual/04-cookbook/01-recipes.md +0 -285
  79. package/docs/manual/04-cookbook/02-troubleshooting.md +0 -351
  80. package/docs/manual/04-cookbook/03-faq.md +0 -175
  81. package/docs/manual/05-appendices/A-platform-matrix.md +0 -101
  82. package/docs/manual/05-appendices/B-security-checklist.md +0 -85
  83. package/docs/manual/05-appendices/C-glossary.md +0 -40
  84. package/docs/manual/05-appendices/D-bibliography.md +0 -58
  85. package/docs/manual/05-appendices/E-license.md +0 -38
  86. package/docs/manual/_toc.yml +0 -58
  87. package/docs/manual/command-index.md +0 -175
  88. package/docs/manual/concept-index.md +0 -170
  89. package/docs/manual/index.md +0 -66
  90. package/docs/migration/README.md +0 -81
  91. package/docs/migration/from-bare-git-repo.md +0 -156
  92. package/docs/migration/from-gnu-stow.md +0 -165
  93. package/docs/migration/from-plain-chezmoi.md +0 -148
  94. package/docs/migration/from-yadm.md +0 -187
  95. package/docs/operations/ARCHITECTURE_ROADMAP.md +0 -7
  96. package/docs/operations/ATTESTATION.md +0 -44
  97. package/docs/operations/CI_CADENCE.md +0 -107
  98. package/docs/operations/CI_COMPOSITES.md +0 -156
  99. package/docs/operations/COMPLETIONS.md +0 -123
  100. package/docs/operations/COVERAGE.md +0 -204
  101. package/docs/operations/DRIFT.md +0 -107
  102. package/docs/operations/HARD_AUDIT_2026.md +0 -631
  103. package/docs/operations/MAINTENANCE.md +0 -63
  104. package/docs/operations/MANIFEST.md +0 -127
  105. package/docs/operations/MIGRATION.md +0 -109
  106. package/docs/operations/OPERATIONS.md +0 -188
  107. package/docs/operations/PERFORMANCE.md +0 -133
  108. package/docs/operations/PERFORMANCE_BUDGETS.md +0 -196
  109. package/docs/operations/REGISTRY.md +0 -90
  110. package/docs/operations/RELEASE_PIPELINE.md +0 -128
  111. package/docs/operations/RELIABILITY.md +0 -122
  112. package/docs/operations/RFC_v0_2_503_reorganization.md +0 -280
  113. package/docs/operations/ROADMAP.md +0 -10
  114. package/docs/operations/ROADMAP_2026.md +0 -7
  115. package/docs/operations/ROADMAP_V0_2_503.md +0 -10
  116. package/docs/operations/TESTING.md +0 -216
  117. package/docs/operations/TRACEABILITY.md +0 -44
  118. package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +0 -65
  119. package/docs/operations/VERSION_SYNC.md +0 -393
  120. package/docs/packaging.md +0 -222
  121. package/docs/reference/ALIASES.md +0 -131
  122. package/docs/reference/ALIASES_CHEATSHEET.md +0 -32
  123. package/docs/reference/ALIASES_DEPRECATIONS.md +0 -13
  124. package/docs/reference/FEATURE-MATRIX.md +0 -646
  125. package/docs/reference/FEATURES.md +0 -66
  126. package/docs/reference/FONTS.md +0 -112
  127. package/docs/reference/POWERSHELL_PARITY.md +0 -82
  128. package/docs/reference/PROFILES.md +0 -69
  129. package/docs/reference/SCREENSHOTS.md +0 -121
  130. package/docs/reference/SCRIPTS.md +0 -71
  131. package/docs/reference/SUPPORT_MATRIX.md +0 -80
  132. package/docs/reference/THEMES.md +0 -117
  133. package/docs/reference/TOOLS.md +0 -110
  134. package/docs/reference/UTILS.md +0 -243
  135. package/docs/registry.json +0 -6
  136. package/docs/schema/dot-env-v1.json +0 -110
  137. package/docs/schema/dot-registry-v1.json +0 -33
  138. package/docs/security/AI_ACT_COMPLIANCE.md +0 -94
  139. package/docs/security/AUDIT_BYPASS.md +0 -103
  140. package/docs/security/AUTOMATION_SECRETS.md +0 -26
  141. package/docs/security/CI_EGRESS_ALLOWLIST.md +0 -127
  142. package/docs/security/CI_PINNING.md +0 -129
  143. package/docs/security/COMMIT_SIGNING.md +0 -138
  144. package/docs/security/COMPLIANCE.md +0 -458
  145. package/docs/security/DEPS_DEV_EXCEPTIONS.md +0 -86
  146. package/docs/security/DISCLOSURE.md +0 -130
  147. package/docs/security/ENCRYPTION.md +0 -57
  148. package/docs/security/FMEA.md +0 -159
  149. package/docs/security/FUZZING.md +0 -209
  150. package/docs/security/HISTORY_FILTERING.md +0 -132
  151. package/docs/security/INCIDENT_RESPONSE.md +0 -579
  152. package/docs/security/INSTALL_VERIFICATION.md +0 -122
  153. package/docs/security/KEYS.md +0 -49
  154. package/docs/security/KEY_ROTATION.md +0 -303
  155. package/docs/security/MCP_POLICY.md +0 -78
  156. package/docs/security/POLICY_RELEASES.md +0 -37
  157. package/docs/security/README.md +0 -28
  158. package/docs/security/SCORECARD.md +0 -195
  159. package/docs/security/SECRETS.md +0 -158
  160. package/docs/security/SECURITY.md +0 -45
  161. package/docs/security/SECURITY_CHECKLIST.md +0 -55
  162. package/docs/security/SHELL_EXEMPTIONS.md +0 -145
  163. package/docs/security/SOUP_REGISTER.md +0 -36
  164. package/docs/security/THREAT_MODEL.md +0 -130
  165. package/docs/security/VERIFICATION_VALIDATION.md +0 -228
  166. package/docs/security/VERIFY_RELEASE.md +0 -201
  167. package/docs/security/security-pubkey.asc +0 -15
  168. package/docs/stylesheets/extra.css +0 -444
  169. package/docs/themes/README.md +0 -10
  170. package/docs/themes/VISUAL_INTEGRITY_REPORT.md +0 -30
  171. package/docs/themes/hero-shot.svg +0 -78
  172. package/scripts/README.md +0 -123
  173. package/scripts/ci/check-copyright-headers.sh +0 -8
  174. package/scripts/ci/check-shell-preamble.sh +0 -8
  175. package/scripts/ci/guard-gitleaks-checkout.sh +0 -8
  176. package/scripts/demo/record.sh +0 -43
  177. package/scripts/diagnostics/a2a-conformance.sh +0 -163
  178. package/scripts/diagnostics/alias-governance.sh +0 -165
  179. package/scripts/diagnostics/aliases-cheatsheet.sh +0 -74
  180. package/scripts/diagnostics/aliases-manifest.sh +0 -77
  181. package/scripts/diagnostics/attest-verify.sh +0 -147
  182. package/scripts/diagnostics/benchmark.sh +0 -408
  183. package/scripts/diagnostics/conflicts.sh +0 -73
  184. package/scripts/diagnostics/doctor-unified.sh +0 -43
  185. package/scripts/diagnostics/doctor.sh +0 -797
  186. package/scripts/diagnostics/drift-dashboard.sh +0 -203
  187. package/scripts/diagnostics/health.sh +0 -656
  188. package/scripts/diagnostics/history-analysis.sh +0 -86
  189. package/scripts/diagnostics/mcp-doctor.sh +0 -582
  190. package/scripts/diagnostics/perf.sh +0 -453
  191. package/scripts/diagnostics/scorecard.sh +0 -120
  192. package/scripts/diagnostics/secret-governance.sh +0 -65
  193. package/scripts/diagnostics/security-score.sh +0 -467
  194. package/scripts/diagnostics/smoke-test.sh +0 -88
  195. package/scripts/diagnostics/snapshot.sh +0 -90
  196. package/scripts/diagnostics/verify.sh +0 -108
  197. package/scripts/diagnostics/verify_state.sh +0 -73
  198. package/scripts/diagnostics/version-locks.sh +0 -94
  199. package/scripts/diagnostics/workstation-attestation.sh +0 -212
  200. package/scripts/dot/commands/agent.sh +0 -535
  201. package/scripts/dot/commands/agents.sh +0 -352
  202. package/scripts/dot/commands/ai.sh +0 -600
  203. package/scripts/dot/commands/aliases.sh +0 -277
  204. package/scripts/dot/commands/appearance.sh +0 -110
  205. package/scripts/dot/commands/completion.sh +0 -171
  206. package/scripts/dot/commands/core.sh +0 -217
  207. package/scripts/dot/commands/diagnostics.sh +0 -265
  208. package/scripts/dot/commands/env-emit.sh +0 -203
  209. package/scripts/dot/commands/fleet.sh +0 -711
  210. package/scripts/dot/commands/init.sh +0 -185
  211. package/scripts/dot/commands/lint.sh +0 -208
  212. package/scripts/dot/commands/manual.sh +0 -169
  213. package/scripts/dot/commands/meta.sh +0 -438
  214. package/scripts/dot/commands/patterns.sh +0 -55
  215. package/scripts/dot/commands/registry.sh +0 -455
  216. package/scripts/dot/commands/restore.sh +0 -232
  217. package/scripts/dot/commands/secrets.sh +0 -296
  218. package/scripts/dot/commands/security.sh +0 -102
  219. package/scripts/dot/commands/tools.sh +0 -570
  220. package/scripts/dot/data/alias-deprecations.tsv +0 -2
  221. package/scripts/dot/powershell/Dot.psm1 +0 -319
  222. package/scripts/fonts/install-nerd-fonts.sh +0 -75
  223. package/scripts/fonts/patch-fonts.sh +0 -36
  224. package/scripts/git-hooks/install.sh +0 -12
  225. package/scripts/git-hooks/pre-commit +0 -12
  226. package/scripts/git-hooks/pre-commit-audit.sh +0 -146
  227. package/scripts/git-hooks/pre-push +0 -105
  228. package/scripts/git-hooks/prepare-commit-msg +0 -29
  229. package/scripts/lib/secrets_provider.sh +0 -200
  230. package/scripts/nvim/headless-upgrade.lua +0 -81
  231. package/scripts/ops/ai-setup.sh +0 -71
  232. package/scripts/ops/bundle.sh +0 -104
  233. package/scripts/ops/chaos.sh +0 -50
  234. package/scripts/ops/chezmoi-apply.sh +0 -333
  235. package/scripts/ops/chezmoi-diff.sh +0 -16
  236. package/scripts/ops/chezmoi-remove.sh +0 -46
  237. package/scripts/ops/chezmoi-update.sh +0 -67
  238. package/scripts/ops/heal-chezmoi.sh +0 -87
  239. package/scripts/ops/heal-system.sh +0 -129
  240. package/scripts/ops/heal-tools.sh +0 -297
  241. package/scripts/ops/heal.sh +0 -223
  242. package/scripts/ops/post-apply-repair.sh +0 -107
  243. package/scripts/ops/prewarm.sh +0 -128
  244. package/scripts/ops/release.sh +0 -262
  245. package/scripts/ops/rollback.sh +0 -613
  246. package/scripts/ops/setup.sh +0 -138
  247. package/scripts/ops/teleport.sh +0 -34
  248. package/scripts/qa/check-feature-matrix.sh +0 -296
  249. package/scripts/qa/check-version-consistency.sh +0 -12
  250. package/scripts/qa/coverage-baseline.sh +0 -61
  251. package/scripts/qa/docs-coverage.sh +0 -118
  252. package/scripts/qa/examples-coverage.sh +0 -94
  253. package/scripts/qa/powershell-contract.ps1 +0 -95
  254. package/scripts/qa/reliability-audit.sh +0 -139
  255. package/scripts/qa/scorecard-snapshot.sh +0 -128
  256. package/scripts/qa/traceability-coverage.sh +0 -124
  257. package/scripts/qa/validate-examples.sh +0 -90
  258. package/scripts/qa/wsl-contract.sh +0 -12
  259. package/scripts/secrets/age-init.sh +0 -82
  260. package/scripts/secrets/create-secrets-file.sh +0 -46
  261. package/scripts/secrets/encrypt-ssh-key.sh +0 -44
  262. package/scripts/security/backup.sh +0 -58
  263. package/scripts/security/check-disclosure-key-expiry.sh +0 -111
  264. package/scripts/security/dns-doh.sh +0 -52
  265. package/scripts/security/encryption-check.sh +0 -55
  266. package/scripts/security/enforce-policies.sh +0 -552
  267. package/scripts/security/firewall.sh +0 -91
  268. package/scripts/security/lock-configs.sh +0 -67
  269. package/scripts/security/lock-screen.sh +0 -56
  270. package/scripts/security/manage-secrets.sh +0 -429
  271. package/scripts/security/ssh-cert.sh +0 -204
  272. package/scripts/security/telemetry-kill.sh +0 -51
  273. package/scripts/security/usb-safety.sh +0 -52
  274. package/scripts/theme/apply-gnome-theme.sh +0 -333
  275. package/scripts/theme/extract-heic-frames.sh +0 -115
  276. package/scripts/theme/extract-theme.py +0 -1020
  277. package/scripts/theme/install-boot-logo.sh +0 -63
  278. package/scripts/theme/install-catppuccin-themes.sh +0 -371
  279. package/scripts/theme/install-cursors.sh +0 -26
  280. package/scripts/theme/install-file-icons.sh +0 -27
  281. package/scripts/theme/install-grub-theme.sh +0 -62
  282. package/scripts/theme/install-lock-icon.sh +0 -31
  283. package/scripts/theme/merge-wallpaper.sh +0 -146
  284. package/scripts/theme/rebuild-themes.sh +0 -603
  285. package/scripts/theme/switch.sh +0 -476
  286. package/scripts/theme/wallpaper-rotate.sh +0 -137
  287. package/scripts/theme/wallpaper-sync.sh +0 -690
  288. package/scripts/tools/cmatrix.sh +0 -22
  289. package/scripts/tools/detect-collisions.py +0 -103
  290. package/scripts/tools/emoji-picker.sh +0 -49
  291. package/scripts/tools/figlet-banner.sh +0 -19
  292. package/scripts/tools/log-rotate.sh +0 -31
  293. package/scripts/tools/lolcat-wrap.sh +0 -20
  294. package/scripts/tools/pipes.sh +0 -49
  295. package/scripts/tuning/linux.sh +0 -186
  296. package/scripts/tuning/macos.sh +0 -56
  297. package/scripts/uninstall.sh +0 -86
  298. package/scripts/verify-release-versions +0 -156
  299. package/scripts/version-sync.sh +0 -714
  300. package/templates/chezmoi-data/geekom-a9.toml.example +0 -21
  301. package/templates/chezmoi-data/mac-m1.toml.example +0 -16
  302. package/templates/chezmoi-data/mac-t2-linux.toml.example +0 -21
  303. package/templates/chezmoi-data/surface-pro-7p.toml.example +0 -21
  304. package/templates/projects/go/.github/workflows/ci.yml +0 -31
  305. package/templates/projects/go/README.md +0 -7
  306. package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +0 -8
  307. package/templates/projects/go/go.mod +0 -3
  308. package/templates/projects/go/go.sum +0 -0
  309. package/templates/projects/molecule/README.md +0 -7
  310. package/templates/projects/molecule/converge.yml +0 -7
  311. package/templates/projects/molecule/molecule.yml +0 -16
  312. package/templates/projects/node/.github/workflows/ci.yml +0 -30
  313. package/templates/projects/node/README.md +0 -7
  314. package/templates/projects/node/package-lock.json +0 -12
  315. package/templates/projects/node/package.json +0 -10
  316. package/templates/projects/node/src/index.js +0 -3
  317. package/templates/projects/packer/README.md +0 -15
  318. package/templates/projects/packer/main.pkr.hcl +0 -15
  319. package/templates/projects/python/.github/workflows/ci.yml +0 -34
  320. package/templates/projects/python/README.md +0 -7
  321. package/templates/projects/python/pyproject.toml +0 -25
  322. package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +0 -2
  323. package/templates/projects/python/tests/test_basic.py +0 -3
@@ -1,128 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: Apache-2.0 OR MIT
3
- # Copyright (c) 2015-2026 Sebastien Rousseau
4
- # Pre-warm shell initialization caches for ultra-fast startup.
5
-
6
- set -euo pipefail
7
-
8
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
9
- # shellcheck disable=SC1091
10
- source "$SCRIPT_DIR/../lib/dot/ui.sh"
11
- # shellcheck disable=SC1091
12
- source "$SCRIPT_DIR/../lib/dot/log.sh"
13
- export DOT_COMMAND="prewarm"
14
-
15
- # Prevent concurrent execution
16
- # Prefer XDG runtime dir when it exists and is writable; fallback to /tmp.
17
- LOCK_BASE="/tmp"
18
- if [[ -n "${XDG_RUNTIME_DIR:-}" ]] && [[ -d "${XDG_RUNTIME_DIR}" ]] && [[ -w "${XDG_RUNTIME_DIR}" ]]; then
19
- LOCK_BASE="${XDG_RUNTIME_DIR}"
20
- fi
21
- LOCK_FILE="${LOCK_BASE}/dotfiles-prewarm.lock"
22
- LOCK_DIR="${LOCK_FILE}.d"
23
- if command -v flock >/dev/null 2>&1; then
24
- exec 9>"$LOCK_FILE"
25
- if ! flock -n 9; then
26
- ui_warn "Already running" "Another instance is active"
27
- exit 0
28
- fi
29
- else
30
- # Portable fallback when flock is unavailable (e.g. minimal macOS envs).
31
- if ! mkdir "$LOCK_DIR" 2>/dev/null; then
32
- ui_warn "Already running" "Another instance is active"
33
- exit 0
34
- fi
35
- trap 'rmdir "$LOCK_DIR" 2>/dev/null || true' EXIT
36
- fi
37
-
38
- CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}"
39
- mkdir -p "$CACHE_DIR/"{zsh,bash,fish,nushell}
40
-
41
- ui_header "Pre-warming Shell Caches"
42
-
43
- warm_tool() {
44
- local tool="$1"
45
- local cmd="$2"
46
- local shell="$3"
47
- local ext="$4"
48
-
49
- local cache_file="$CACHE_DIR/$shell/$tool-init.$ext"
50
- local tmp_file="${cache_file}.tmp.$$"
51
-
52
- if command -v "$tool" >/dev/null 2>&1; then
53
- if eval "$cmd" >"$tmp_file" 2>/dev/null && [ -s "$tmp_file" ]; then
54
- mv "$tmp_file" "$cache_file"
55
- ui_ok "$tool" "Cached for $shell"
56
- else
57
- rm -f "$tmp_file"
58
- ui_warn "$tool" "Failed to cache for $shell"
59
- fi
60
- fi
61
- }
62
-
63
- ui_section "Zsh"
64
- warm_tool "mise" "mise activate zsh" "zsh" "zsh"
65
- warm_tool "starship" "starship init zsh" "zsh" "zsh"
66
- warm_tool "zoxide" "zoxide init zsh" "zsh" "zsh"
67
- warm_tool "atuin" "atuin init zsh --disable-up-arrow" "zsh" "zsh"
68
- warm_tool "fzf" "fzf --zsh" "zsh" "zsh"
69
- warm_tool "direnv" "direnv hook zsh" "zsh" "zsh"
70
-
71
- ui_section "Bash"
72
- warm_tool "mise" "mise activate bash" "bash" "bash"
73
- warm_tool "starship" "starship init bash" "bash" "bash"
74
- warm_tool "zoxide" "zoxide init bash" "bash" "bash"
75
- warm_tool "atuin" "atuin init bash --disable-up-arrow" "bash" "bash"
76
- warm_tool "fzf" "fzf --bash" "bash" "bash"
77
- warm_tool "direnv" "direnv hook bash" "bash" "bash"
78
-
79
- ui_section "Fish"
80
- warm_tool "mise" "mise activate fish" "fish" "fish"
81
- warm_tool "starship" "starship init fish" "fish" "fish"
82
- warm_tool "zoxide" "zoxide init fish" "fish" "fish"
83
- warm_tool "atuin" "atuin init fish" "fish" "fish"
84
- warm_tool "fzf" "fzf --fish" "fish" "fish"
85
- warm_tool "direnv" "direnv hook fish" "fish" "fish"
86
-
87
- ui_section "Nushell"
88
- for _nu_entry in "starship:starship init nu:starship.nu" "zoxide:zoxide init nushell:zoxide.nu" "atuin:atuin init nu:atuin.nu"; do
89
- _nu_tool="${_nu_entry%%:*}"
90
- _nu_rest="${_nu_entry#*:}"
91
- _nu_cmd="${_nu_rest%%:*}"
92
- _nu_file="${_nu_rest#*:}"
93
- if command -v "$_nu_tool" >/dev/null 2>&1; then
94
- _nu_tmp="$CACHE_DIR/nushell/${_nu_file}.tmp.$$"
95
- if eval "$_nu_cmd" >"$_nu_tmp" 2>/dev/null && [ -s "$_nu_tmp" ]; then
96
- mv "$_nu_tmp" "$CACHE_DIR/nushell/$_nu_file"
97
- ui_ok "$_nu_tool" "Cached for nushell"
98
- else
99
- rm -f "$_nu_tmp"
100
- ui_warn "$_nu_tool" "Failed to cache for nushell"
101
- fi
102
- fi
103
- done
104
-
105
- # --- Completions ---
106
- ui_section "Shell completions"
107
- ZSH_COMP_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/zsh/completions"
108
- mkdir -p "$ZSH_COMP_DIR"
109
-
110
- _prewarm_completion() {
111
- local name="$1" cmd="$2"
112
- shift 2
113
- if command -v "$cmd" >/dev/null 2>&1; then
114
- if "$cmd" "$@" >"${ZSH_COMP_DIR}/_${name}" 2>/dev/null; then
115
- ui_ok "$name" "completion generated"
116
- fi
117
- fi
118
- }
119
-
120
- _prewarm_completion "gh" "gh" completion -s zsh
121
- _prewarm_completion "just" "just" --completions zsh
122
- _prewarm_completion "chezmoi" "chezmoi" completion zsh
123
- _prewarm_completion "kubectl" "kubectl" completion zsh
124
- _prewarm_completion "mise" "mise" completion zsh
125
- _prewarm_completion "atuin" "atuin" gen-completions --shell zsh
126
-
127
- ui_header "Cache Pre-warming Complete"
128
- dot_log info "prewarm_complete"
@@ -1,262 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: Apache-2.0 OR MIT
3
- # Copyright (c) 2015-2026 Sebastien Rousseau
4
- # =============================================================================
5
- # Dotfiles Release Script
6
- # Orchestrates a new release: version bump, changelog, tag, and push
7
- # Usage: ./scripts/ops/release.sh [patch|minor] [--dry-run]
8
- # =============================================================================
9
-
10
- set -euo pipefail
11
-
12
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
13
- PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
14
- # shellcheck source=../../lib/dot/ui.sh
15
- # shellcheck disable=SC1091
16
- source "$SCRIPT_DIR/../../lib/dot/ui.sh"
17
- # shellcheck source=../../lib/dot/log.sh
18
- # shellcheck disable=SC1091
19
- source "$SCRIPT_DIR/../../lib/dot/log.sh"
20
- export DOT_COMMAND="release"
21
- ui_init
22
- BOLD="${BOLD:-}"
23
- NC="${NC:-}"
24
-
25
- log_info() { ui_info "$@"; }
26
- log_success() { ui_ok "$@"; }
27
- log_warn() { ui_warn "$@"; }
28
- log_error() { ui_err "$@"; }
29
- log_step() {
30
- echo ""
31
- ui_section "$*"
32
- }
33
-
34
- # Cross-platform sed in-place (BSD vs GNU)
35
- sed_in_place() {
36
- if sed --version >/dev/null 2>&1; then
37
- sed -i "$@" # GNU
38
- else
39
- sed -i '' "$@" # BSD (macOS)
40
- fi
41
- }
42
-
43
- usage() {
44
- local current
45
- current=$(get_version)
46
- local next_patch
47
- next_patch=$(bump_version "$current" "patch")
48
- local next_minor
49
- next_minor=$(bump_version "$current" "minor")
50
-
51
- cat <<EOF
52
- Dotfiles Release Tool
53
-
54
- Usage: $(basename "$0") [BUMP_TYPE] [OPTIONS]
55
-
56
- Bump Types:
57
- patch Increment patch version ($current → $next_patch) [default]
58
- minor Increment minor version ($current → $next_minor)
59
-
60
- Options:
61
- -n, --dry-run Show what would be done without making changes
62
- -h, --help Show this help message
63
-
64
- Steps performed:
65
- 1. Verify clean working tree and up-to-date branch
66
- 2. Bump version in package.json
67
- 3. Run version-sync to update docs
68
- 4. Update CHANGELOG.md with new version header
69
- 5. Create signed commit and tag
70
- 6. Push commit and tag to origin
71
-
72
- Examples:
73
- $(basename "$0") # Patch release
74
- $(basename "$0") minor # Minor release
75
- $(basename "$0") --dry-run # Preview patch release
76
-
77
- EOF
78
- }
79
-
80
- # Get current version from package.json
81
- get_version() {
82
- grep -o '"version": "[^"]*"' "$PROJECT_ROOT/package.json" | grep -o '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*'
83
- }
84
-
85
- # Bump version string
86
- bump_version() {
87
- local current="$1" bump_type="$2"
88
- local major minor patch
89
- IFS='.' read -r major minor patch <<<"$current"
90
-
91
- case "$bump_type" in
92
- patch) patch=$((patch + 1)) ;;
93
- minor)
94
- minor=$((minor + 1))
95
- patch=0
96
- ;;
97
- *)
98
- log_error "Unknown bump type: $bump_type"
99
- exit 1
100
- ;;
101
- esac
102
-
103
- echo "${major}.${minor}.${patch}"
104
- }
105
-
106
- main() {
107
- local bump_type="patch"
108
- local dry_run=0
109
-
110
- # Parse arguments
111
- while [[ $# -gt 0 ]]; do
112
- case "$1" in
113
- patch | minor)
114
- bump_type="$1"
115
- shift
116
- ;;
117
- -n | --dry-run)
118
- dry_run=1
119
- shift
120
- ;;
121
- -h | --help)
122
- usage
123
- exit 0
124
- ;;
125
- *)
126
- log_error "Unknown argument: $1"
127
- usage
128
- exit 1
129
- ;;
130
- esac
131
- done
132
-
133
- # Concurrency guard
134
- local lock_dir
135
- lock_dir="${XDG_RUNTIME_DIR:-${TMPDIR:-/tmp}}"
136
- if [[ ! -d "$lock_dir" || ! -w "$lock_dir" ]]; then
137
- lock_dir="${TMPDIR:-/tmp}"
138
- fi
139
- LOCK_FILE="$lock_dir/dotfiles-release.lock"
140
- if command -v flock >/dev/null 2>&1; then
141
- exec 9>"$LOCK_FILE"
142
- if ! flock -n 9; then
143
- ui_warn "Already running" "Another release is in progress"
144
- exit 0
145
- fi
146
- fi
147
-
148
- cd "$PROJECT_ROOT"
149
- dot_log info "release_start" "bump_type=$bump_type"
150
-
151
- local current_version new_version
152
- current_version=$(get_version)
153
- new_version=$(bump_version "$current_version" "$bump_type")
154
-
155
- printf '%b\n' "${BOLD}Dotfiles Release${NC}"
156
- echo " Current: v${current_version}"
157
- echo " Next: v${new_version} (${bump_type})"
158
- echo ""
159
-
160
- if [[ "$dry_run" == "1" ]]; then
161
- log_warn "DRY-RUN MODE — no changes will be made"
162
- echo ""
163
- fi
164
-
165
- # ── Step 1: Preflight checks ─────────────────────────────────
166
- log_step "Preflight checks"
167
-
168
- if [[ -n "$(git status --porcelain)" ]]; then
169
- log_error "Working tree is not clean. Commit or stash changes first."
170
- exit 1
171
- fi
172
- log_success "Working tree clean"
173
-
174
- local branch
175
- branch=$(git branch --show-current)
176
- if [[ "$branch" != "master" && "$branch" != "main" ]]; then
177
- log_warn "On branch '$branch' — releases typically happen from master/main"
178
- read -rp "Continue anyway? [y/N] " response
179
- [[ "$response" =~ ^[Yy]$ ]] || exit 0
180
- fi
181
- log_success "On branch: $branch"
182
-
183
- git fetch origin "$branch" --quiet
184
- local behind
185
- behind=$(git rev-list --count "HEAD..origin/$branch" 2>/dev/null || echo "0")
186
- if [[ "$behind" -gt 0 ]]; then
187
- log_error "Branch is $behind commit(s) behind origin. Pull first."
188
- exit 1
189
- fi
190
- log_success "Branch is up to date with origin"
191
-
192
- if [[ "$dry_run" == "1" ]]; then
193
- log_step "Would perform the following"
194
- log_info "1. Bump package.json: $current_version → $new_version"
195
- log_info "2. Run version-sync.sh"
196
- log_info "3. Add v${new_version} header to CHANGELOG.md"
197
- log_info "4. Commit: 'chore(release): v${new_version}'"
198
- log_info "5. Tag: v${new_version} (signed)"
199
- log_info "6. Push commit and tag to origin"
200
- echo ""
201
- log_success "Dry run complete"
202
- exit 0
203
- fi
204
-
205
- # ── Step 2: Bump version ──────────────────────────────────────
206
- log_step "Bump version in package.json"
207
- sed_in_place "s/\"version\": \"${current_version}\"/\"version\": \"${new_version}\"/" "$PROJECT_ROOT/package.json"
208
- log_success "package.json: $current_version → $new_version"
209
-
210
- # ── Step 3: Sync versions across docs ─────────────────────────
211
- log_step "Sync version across docs"
212
- if [[ -x "$SCRIPT_DIR/../version-sync.sh" ]]; then
213
- bash "$SCRIPT_DIR/../version-sync.sh" --force 2>&1 | tail -3
214
- log_success "Version sync complete"
215
- else
216
- log_warn "version-sync.sh not found, skipping"
217
- fi
218
-
219
- # ── Step 4: Update CHANGELOG ──────────────────────────────────
220
- log_step "Update CHANGELOG.md"
221
- local today
222
- today=$(date +%Y-%m-%d)
223
- local changelog="$PROJECT_ROOT/CHANGELOG.md"
224
-
225
- if [[ -f "$changelog" ]]; then
226
- # Insert new version header after the first "# Changelog" line
227
- sed_in_place "/^## v${current_version}/i\\
228
- ## v${new_version} (${today})\\
229
- \\
230
- ### Changed\\
231
- \\
232
- - Version bump to v${new_version}.\\
233
- " "$changelog"
234
- log_success "Added v${new_version} section to CHANGELOG.md"
235
- else
236
- log_warn "CHANGELOG.md not found, skipping"
237
- fi
238
-
239
- # ── Step 5: Commit and tag ────────────────────────────────────
240
- log_step "Create signed commit and tag"
241
- git add -A
242
- git commit -S -m "chore(release): v${new_version}"
243
- git tag -s "v${new_version}" -m "Release v${new_version}"
244
- log_success "Committed and tagged v${new_version}"
245
-
246
- # ── Step 6: Push ──────────────────────────────────────────────
247
- log_step "Push to origin"
248
- read -rp "Push v${new_version} to origin/$branch? [y/N] " response
249
- if [[ "$response" =~ ^[Yy]$ ]]; then
250
- git push origin "$branch" --follow-tags
251
- log_success "Pushed v${new_version} to origin"
252
- else
253
- log_warn "Skipped push. Run manually:"
254
- echo " git push origin $branch --follow-tags"
255
- fi
256
-
257
- echo ""
258
- dot_log info "release_end" "version=$new_version"
259
- log_success "Release v${new_version} complete"
260
- }
261
-
262
- main "$@"