@sebastienrousseau/dotfiles 0.2.519 → 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 (306) hide show
  1. package/CHANGELOG.md +200 -0
  2. package/LICENSE-APACHE +190 -0
  3. package/{LICENSE → LICENSE-MIT} +1 -1
  4. package/README.md +1172 -166
  5. package/install.sh +77 -11
  6. package/package.json +8 -8
  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/CNAME +0 -1
  12. package/docs/CONFIG_STRATEGY.md +0 -124
  13. package/docs/COPYRIGHT +0 -7
  14. package/docs/GOVERNANCE.md +0 -98
  15. package/docs/MAINTAINERS.md +0 -41
  16. package/docs/NAMING_CONVENTIONS.md +0 -102
  17. package/docs/OPENCODE.md +0 -127
  18. package/docs/README.md +0 -84
  19. package/docs/STRUCTURE.md +0 -102
  20. package/docs/adr/ADR-001-ci-cd-pipeline.md +0 -118
  21. package/docs/adr/ADR-002-shell-performance.md +0 -130
  22. package/docs/adr/ADR-003-security-first.md +0 -158
  23. package/docs/adr/ADR-004-cli-architecture.md +0 -171
  24. package/docs/adr/ADR-005-chezmoi-choice.md +0 -99
  25. package/docs/adr/ADR-006-shell-selection.md +0 -124
  26. package/docs/adr/ADR-007-multi-shell-parity.md +0 -62
  27. package/docs/adr/ADR-008-alias-system-architecture.md +0 -95
  28. package/docs/adr/ADR-009-wallpaper-driven-theming.md +0 -131
  29. package/docs/adr/ADR-010-starship-transient-prompt.md +0 -144
  30. package/docs/adr/ADR-011-nushell-tier3-keep.md +0 -144
  31. package/docs/adr/ADR-012-ai-fleet-local-proxy.md +0 -79
  32. package/docs/adr/README.md +0 -40
  33. package/docs/architecture/AI_COST_OPTIMIZATION.md +0 -144
  34. package/docs/architecture/ARCHITECTURE.md +0 -117
  35. package/docs/architecture/INTEROP.md +0 -44
  36. package/docs/architecture/REPO_LAYOUT.md +0 -241
  37. package/docs/architecture/WALKTHROUGH.md +0 -86
  38. package/docs/architecture/fleet-deployment.md +0 -77
  39. package/docs/archive/EUXIS_2026_REVIEW.md +0 -127
  40. package/docs/archive/LEGACY_ROADMAP.md +0 -6
  41. package/docs/archive/MILESTONE_v0.2.493.md +0 -47
  42. package/docs/archive/PLAN.md +0 -199
  43. package/docs/archive/REPO_AUDIT.md +0 -31
  44. package/docs/articles/.pages +0 -6
  45. package/docs/articles/2026-07-05-custom-mkdocs-material-dark-theme.md +0 -216
  46. package/docs/articles/2026-07-05-fish-startup-abbr.md +0 -153
  47. package/docs/articles/2026-07-05-master-to-main-rename-runbook.md +0 -128
  48. package/docs/articles/index.md +0 -36
  49. package/docs/guides/INSTALL.md +0 -144
  50. package/docs/guides/NEOVIM_IDE_GUIDE.md +0 -61
  51. package/docs/guides/THEMING.md +0 -230
  52. package/docs/guides/TROUBLESHOOTING.md +0 -176
  53. package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +0 -792
  54. package/docs/index.md +0 -132
  55. package/docs/interop/A2A.md +0 -39
  56. package/docs/interop/POWERSHELL.md +0 -102
  57. package/docs/manual/00-introduction.md +0 -89
  58. package/docs/manual/01-concepts/01-architecture.md +0 -138
  59. package/docs/manual/01-concepts/02-trust-model.md +0 -183
  60. package/docs/manual/01-concepts/03-theme-engine.md +0 -186
  61. package/docs/manual/01-concepts/04-fleet.md +0 -148
  62. package/docs/manual/01-concepts/05-self-healing.md +0 -204
  63. package/docs/manual/02-tutorials/01-first-install.md +0 -197
  64. package/docs/manual/02-tutorials/02-add-wallpaper.md +0 -216
  65. package/docs/manual/02-tutorials/03-create-profile.md +0 -244
  66. package/docs/manual/02-tutorials/04-encrypt-secret.md +0 -281
  67. package/docs/manual/02-tutorials/05-deploy-fleet.md +0 -283
  68. package/docs/manual/03-reference/01-dot-cli.md +0 -450
  69. package/docs/manual/03-reference/02-config-files.md +0 -265
  70. package/docs/manual/03-reference/03-environment.md +0 -124
  71. package/docs/manual/03-reference/04-templates.md +0 -190
  72. package/docs/manual/03-reference/05-feature-flags.md +0 -187
  73. package/docs/manual/04-cookbook/01-recipes.md +0 -285
  74. package/docs/manual/04-cookbook/02-troubleshooting.md +0 -351
  75. package/docs/manual/04-cookbook/03-faq.md +0 -175
  76. package/docs/manual/05-appendices/A-platform-matrix.md +0 -101
  77. package/docs/manual/05-appendices/B-security-checklist.md +0 -85
  78. package/docs/manual/05-appendices/C-glossary.md +0 -40
  79. package/docs/manual/05-appendices/D-bibliography.md +0 -58
  80. package/docs/manual/05-appendices/E-license.md +0 -38
  81. package/docs/manual/_toc.yml +0 -58
  82. package/docs/manual/command-index.md +0 -155
  83. package/docs/manual/concept-index.md +0 -168
  84. package/docs/manual/index.md +0 -66
  85. package/docs/operations/ARCHITECTURE_ROADMAP.md +0 -7
  86. package/docs/operations/ATTESTATION.md +0 -44
  87. package/docs/operations/CI_CADENCE.md +0 -107
  88. package/docs/operations/CI_COMPOSITES.md +0 -156
  89. package/docs/operations/COMPLETIONS.md +0 -123
  90. package/docs/operations/COVERAGE.md +0 -204
  91. package/docs/operations/DRIFT.md +0 -107
  92. package/docs/operations/HARD_AUDIT_2026.md +0 -631
  93. package/docs/operations/MAINTENANCE.md +0 -63
  94. package/docs/operations/MANIFEST.md +0 -127
  95. package/docs/operations/MIGRATION.md +0 -109
  96. package/docs/operations/OPERATIONS.md +0 -188
  97. package/docs/operations/PERFORMANCE.md +0 -133
  98. package/docs/operations/REGISTRY.md +0 -90
  99. package/docs/operations/RELEASE_PIPELINE.md +0 -128
  100. package/docs/operations/RELIABILITY.md +0 -122
  101. package/docs/operations/RFC_v0_2_503_reorganization.md +0 -280
  102. package/docs/operations/ROADMAP.md +0 -10
  103. package/docs/operations/ROADMAP_2026.md +0 -7
  104. package/docs/operations/ROADMAP_V0_2_503.md +0 -10
  105. package/docs/operations/TESTING.md +0 -216
  106. package/docs/operations/TRACEABILITY.md +0 -43
  107. package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +0 -65
  108. package/docs/operations/VERSION_SYNC.md +0 -393
  109. package/docs/reference/ALIASES.md +0 -131
  110. package/docs/reference/ALIASES_CHEATSHEET.md +0 -32
  111. package/docs/reference/ALIASES_DEPRECATIONS.md +0 -13
  112. package/docs/reference/FEATURES.md +0 -66
  113. package/docs/reference/FONTS.md +0 -112
  114. package/docs/reference/POWERSHELL_PARITY.md +0 -82
  115. package/docs/reference/PROFILES.md +0 -69
  116. package/docs/reference/SCREENSHOTS.md +0 -121
  117. package/docs/reference/SCRIPTS.md +0 -71
  118. package/docs/reference/SUPPORT_MATRIX.md +0 -80
  119. package/docs/reference/THEMES.md +0 -117
  120. package/docs/reference/TOOLS.md +0 -110
  121. package/docs/reference/UTILS.md +0 -242
  122. package/docs/registry.json +0 -6
  123. package/docs/schema/dot-env-v1.json +0 -110
  124. package/docs/schema/dot-registry-v1.json +0 -33
  125. package/docs/security/AI_ACT_COMPLIANCE.md +0 -94
  126. package/docs/security/AUDIT_BYPASS.md +0 -103
  127. package/docs/security/AUTOMATION_SECRETS.md +0 -26
  128. package/docs/security/CI_EGRESS_ALLOWLIST.md +0 -127
  129. package/docs/security/CI_PINNING.md +0 -129
  130. package/docs/security/COMMIT_SIGNING.md +0 -138
  131. package/docs/security/COMPLIANCE.md +0 -458
  132. package/docs/security/DEPS_DEV_EXCEPTIONS.md +0 -86
  133. package/docs/security/DISCLOSURE.md +0 -130
  134. package/docs/security/ENCRYPTION.md +0 -57
  135. package/docs/security/FMEA.md +0 -159
  136. package/docs/security/FUZZING.md +0 -114
  137. package/docs/security/HISTORY_FILTERING.md +0 -132
  138. package/docs/security/INCIDENT_RESPONSE.md +0 -579
  139. package/docs/security/INSTALL_VERIFICATION.md +0 -122
  140. package/docs/security/KEYS.md +0 -49
  141. package/docs/security/KEY_ROTATION.md +0 -303
  142. package/docs/security/MCP_POLICY.md +0 -78
  143. package/docs/security/POLICY_RELEASES.md +0 -37
  144. package/docs/security/README.md +0 -28
  145. package/docs/security/SCORECARD.md +0 -195
  146. package/docs/security/SECRETS.md +0 -158
  147. package/docs/security/SECURITY.md +0 -45
  148. package/docs/security/SECURITY_CHECKLIST.md +0 -55
  149. package/docs/security/SHELL_EXEMPTIONS.md +0 -145
  150. package/docs/security/SOUP_REGISTER.md +0 -36
  151. package/docs/security/THREAT_MODEL.md +0 -130
  152. package/docs/security/VERIFICATION_VALIDATION.md +0 -228
  153. package/docs/security/VERIFY_RELEASE.md +0 -201
  154. package/docs/security/security-pubkey.asc +0 -15
  155. package/docs/stylesheets/extra.css +0 -444
  156. package/docs/themes/README.md +0 -10
  157. package/docs/themes/VISUAL_INTEGRITY_REPORT.md +0 -30
  158. package/docs/themes/hero-shot.svg +0 -78
  159. package/scripts/README.md +0 -123
  160. package/scripts/ci/check-copyright-headers.sh +0 -8
  161. package/scripts/ci/check-shell-preamble.sh +0 -8
  162. package/scripts/ci/guard-gitleaks-checkout.sh +0 -8
  163. package/scripts/demo/record.sh +0 -43
  164. package/scripts/diagnostics/a2a-conformance.sh +0 -163
  165. package/scripts/diagnostics/alias-governance.sh +0 -138
  166. package/scripts/diagnostics/aliases-cheatsheet.sh +0 -74
  167. package/scripts/diagnostics/aliases-manifest.sh +0 -77
  168. package/scripts/diagnostics/benchmark.sh +0 -408
  169. package/scripts/diagnostics/conflicts.sh +0 -73
  170. package/scripts/diagnostics/doctor-unified.sh +0 -39
  171. package/scripts/diagnostics/doctor.sh +0 -751
  172. package/scripts/diagnostics/drift-dashboard.sh +0 -202
  173. package/scripts/diagnostics/health.sh +0 -623
  174. package/scripts/diagnostics/history-analysis.sh +0 -86
  175. package/scripts/diagnostics/mcp-doctor.sh +0 -582
  176. package/scripts/diagnostics/perf.sh +0 -453
  177. package/scripts/diagnostics/scorecard.sh +0 -119
  178. package/scripts/diagnostics/secret-governance.sh +0 -65
  179. package/scripts/diagnostics/security-score.sh +0 -467
  180. package/scripts/diagnostics/smoke-test.sh +0 -88
  181. package/scripts/diagnostics/snapshot.sh +0 -90
  182. package/scripts/diagnostics/verify.sh +0 -108
  183. package/scripts/diagnostics/verify_state.sh +0 -73
  184. package/scripts/diagnostics/version-locks.sh +0 -94
  185. package/scripts/diagnostics/workstation-attestation.sh +0 -187
  186. package/scripts/dot/commands/agent.sh +0 -485
  187. package/scripts/dot/commands/agents.sh +0 -336
  188. package/scripts/dot/commands/ai.sh +0 -587
  189. package/scripts/dot/commands/aliases.sh +0 -277
  190. package/scripts/dot/commands/appearance.sh +0 -110
  191. package/scripts/dot/commands/completion.sh +0 -134
  192. package/scripts/dot/commands/core.sh +0 -217
  193. package/scripts/dot/commands/diagnostics.sh +0 -265
  194. package/scripts/dot/commands/env-emit.sh +0 -203
  195. package/scripts/dot/commands/fleet.sh +0 -688
  196. package/scripts/dot/commands/init.sh +0 -185
  197. package/scripts/dot/commands/lint.sh +0 -208
  198. package/scripts/dot/commands/manual.sh +0 -169
  199. package/scripts/dot/commands/meta.sh +0 -333
  200. package/scripts/dot/commands/patterns.sh +0 -55
  201. package/scripts/dot/commands/registry.sh +0 -419
  202. package/scripts/dot/commands/restore.sh +0 -232
  203. package/scripts/dot/commands/secrets.sh +0 -296
  204. package/scripts/dot/commands/security.sh +0 -102
  205. package/scripts/dot/commands/tools.sh +0 -556
  206. package/scripts/dot/data/alias-deprecations.tsv +0 -2
  207. package/scripts/dot/powershell/Dot.psm1 +0 -319
  208. package/scripts/fonts/install-nerd-fonts.sh +0 -75
  209. package/scripts/fonts/patch-fonts.sh +0 -36
  210. package/scripts/git-hooks/install.sh +0 -12
  211. package/scripts/git-hooks/pre-commit +0 -12
  212. package/scripts/git-hooks/pre-commit-audit.sh +0 -146
  213. package/scripts/git-hooks/pre-push +0 -105
  214. package/scripts/git-hooks/prepare-commit-msg +0 -29
  215. package/scripts/lib/secrets_provider.sh +0 -185
  216. package/scripts/ops/ai-setup.sh +0 -71
  217. package/scripts/ops/bundle.sh +0 -104
  218. package/scripts/ops/chaos.sh +0 -50
  219. package/scripts/ops/chezmoi-apply.sh +0 -333
  220. package/scripts/ops/chezmoi-diff.sh +0 -16
  221. package/scripts/ops/chezmoi-remove.sh +0 -46
  222. package/scripts/ops/chezmoi-update.sh +0 -63
  223. package/scripts/ops/heal-chezmoi.sh +0 -87
  224. package/scripts/ops/heal-system.sh +0 -129
  225. package/scripts/ops/heal-tools.sh +0 -297
  226. package/scripts/ops/heal.sh +0 -223
  227. package/scripts/ops/post-apply-repair.sh +0 -107
  228. package/scripts/ops/prewarm.sh +0 -128
  229. package/scripts/ops/release.sh +0 -262
  230. package/scripts/ops/rollback.sh +0 -604
  231. package/scripts/ops/setup.sh +0 -138
  232. package/scripts/ops/teleport.sh +0 -34
  233. package/scripts/qa/check-version-consistency.sh +0 -124
  234. package/scripts/qa/coverage-baseline.sh +0 -61
  235. package/scripts/qa/docs-coverage.sh +0 -112
  236. package/scripts/qa/examples-coverage.sh +0 -94
  237. package/scripts/qa/powershell-contract.ps1 +0 -95
  238. package/scripts/qa/reliability-audit.sh +0 -139
  239. package/scripts/qa/scorecard-snapshot.sh +0 -128
  240. package/scripts/qa/traceability-coverage.sh +0 -117
  241. package/scripts/qa/validate-examples.sh +0 -27
  242. package/scripts/qa/wsl-contract.sh +0 -12
  243. package/scripts/secrets/age-init.sh +0 -82
  244. package/scripts/secrets/create-secrets-file.sh +0 -46
  245. package/scripts/secrets/encrypt-ssh-key.sh +0 -44
  246. package/scripts/security/backup.sh +0 -58
  247. package/scripts/security/check-disclosure-key-expiry.sh +0 -111
  248. package/scripts/security/dns-doh.sh +0 -52
  249. package/scripts/security/encryption-check.sh +0 -55
  250. package/scripts/security/enforce-policies.sh +0 -335
  251. package/scripts/security/firewall.sh +0 -91
  252. package/scripts/security/lock-configs.sh +0 -67
  253. package/scripts/security/lock-screen.sh +0 -56
  254. package/scripts/security/manage-secrets.sh +0 -429
  255. package/scripts/security/ssh-cert.sh +0 -204
  256. package/scripts/security/telemetry-kill.sh +0 -51
  257. package/scripts/security/usb-safety.sh +0 -52
  258. package/scripts/theme/apply-gnome-theme.sh +0 -333
  259. package/scripts/theme/extract-heic-frames.sh +0 -115
  260. package/scripts/theme/extract-theme.py +0 -742
  261. package/scripts/theme/install-boot-logo.sh +0 -63
  262. package/scripts/theme/install-catppuccin-themes.sh +0 -371
  263. package/scripts/theme/install-cursors.sh +0 -26
  264. package/scripts/theme/install-file-icons.sh +0 -27
  265. package/scripts/theme/install-grub-theme.sh +0 -62
  266. package/scripts/theme/install-lock-icon.sh +0 -31
  267. package/scripts/theme/merge-wallpaper.sh +0 -146
  268. package/scripts/theme/rebuild-themes.sh +0 -544
  269. package/scripts/theme/switch.sh +0 -449
  270. package/scripts/theme/wallpaper-rotate.sh +0 -137
  271. package/scripts/theme/wallpaper-sync.sh +0 -690
  272. package/scripts/tools/cmatrix.sh +0 -22
  273. package/scripts/tools/detect-collisions.py +0 -103
  274. package/scripts/tools/emoji-picker.sh +0 -49
  275. package/scripts/tools/figlet-banner.sh +0 -19
  276. package/scripts/tools/log-rotate.sh +0 -31
  277. package/scripts/tools/lolcat-wrap.sh +0 -20
  278. package/scripts/tools/pipes.sh +0 -49
  279. package/scripts/tuning/linux.sh +0 -186
  280. package/scripts/tuning/macos.sh +0 -56
  281. package/scripts/uninstall.sh +0 -86
  282. package/scripts/version-sync.sh +0 -654
  283. package/templates/chezmoi-data/geekom-a9.toml.example +0 -21
  284. package/templates/chezmoi-data/mac-m1.toml.example +0 -16
  285. package/templates/chezmoi-data/mac-t2-linux.toml.example +0 -21
  286. package/templates/chezmoi-data/surface-pro-7p.toml.example +0 -21
  287. package/templates/projects/go/.github/workflows/ci.yml +0 -31
  288. package/templates/projects/go/README.md +0 -7
  289. package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +0 -8
  290. package/templates/projects/go/go.mod +0 -3
  291. package/templates/projects/go/go.sum +0 -0
  292. package/templates/projects/molecule/README.md +0 -7
  293. package/templates/projects/molecule/converge.yml +0 -7
  294. package/templates/projects/molecule/molecule.yml +0 -16
  295. package/templates/projects/node/.github/workflows/ci.yml +0 -30
  296. package/templates/projects/node/README.md +0 -7
  297. package/templates/projects/node/package-lock.json +0 -12
  298. package/templates/projects/node/package.json +0 -10
  299. package/templates/projects/node/src/index.js +0 -3
  300. package/templates/projects/packer/README.md +0 -15
  301. package/templates/projects/packer/main.pkr.hcl +0 -15
  302. package/templates/projects/python/.github/workflows/ci.yml +0 -34
  303. package/templates/projects/python/README.md +0 -7
  304. package/templates/projects/python/pyproject.toml +0 -25
  305. package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +0 -2
  306. package/templates/projects/python/tests/test_basic.py +0 -3
@@ -1,128 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: 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: 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 "$@"