@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,277 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: Apache-2.0 OR MIT
3
- # Copyright (c) 2015-2026 Sebastien Rousseau
4
- # Dotfiles CLI - Aliases Commands (extracted from tools.sh)
5
- # aliases list|search|why|stats|cheatsheet|tiers, alias-check
6
-
7
- set -euo pipefail
8
-
9
- # Guard: only define functions, do not execute on source
10
- # These functions are sourced by tools.sh for dispatch.
11
-
12
- alias_manifest_path() {
13
- local src_dir
14
- src_dir="$(require_source_dir)"
15
- printf "%s\n" "$src_dir/scripts/diagnostics/aliases-manifest.sh"
16
- }
17
-
18
- emit_alias_manifest() {
19
- local manifest
20
- manifest="$(alias_manifest_path)"
21
- if [[ ! -x "$manifest" ]]; then
22
- die "Alias manifest script not found: $manifest"
23
- fi
24
- bash "$manifest"
25
- }
26
-
27
- cmd_aliases() {
28
- local subcommand="${1:-list}"
29
- shift || true
30
-
31
- alias_tier_enabled() {
32
- local csv="${1:-all}"
33
- local token="${2:-}"
34
- if [[ "$csv" == "all" ]]; then
35
- return 0
36
- fi
37
- [[ ",${csv}," == *",${token},"* ]]
38
- }
39
-
40
- case "$subcommand" in
41
- list)
42
- ui_header "Aliases"
43
- echo ""
44
- ui_table_begin "Name" "Value" "Source"
45
- while IFS=$'\t' read -r name value file line; do
46
- ui_table_add "$name" "${value:0:60}" "${file##*/}:$line"
47
- done < <(emit_alias_manifest | sort -t $'\t' -k1,1)
48
- ui_table_end
49
- ;;
50
- search)
51
- local query="${1:-}"
52
- if [[ -z "$query" ]]; then
53
- die "Usage: dot aliases search <term>"
54
- fi
55
- ui_header "Alias Search"
56
- ui_info "Query" "$query"
57
- echo ""
58
- local results
59
- results="$(emit_alias_manifest | rg -i "$query" || true)"
60
- if [[ -z "$results" ]]; then
61
- ui_warn "No matches" "$query"
62
- return 1
63
- fi
64
- ui_table_begin "Name" "Value" "Source"
65
- while IFS=$'\t' read -r name value file line; do
66
- ui_table_add "$name" "${value:0:60}" "$file:$line"
67
- done <<<"$results"
68
- ui_table_end
69
- ;;
70
- why)
71
- local alias_name="${1:-}"
72
- if [[ -z "$alias_name" ]]; then
73
- die "Usage: dot aliases why <alias>"
74
- fi
75
- ui_header "Alias Details"
76
- ui_info "Alias" "$alias_name"
77
- echo ""
78
- local rows
79
- rows="$(emit_alias_manifest | awk -F'\t' -v a="$alias_name" '$1==a')"
80
- local src_dir deprecations_file deprecation
81
- src_dir="$(require_source_dir)"
82
- deprecations_file="$src_dir/scripts/dot/data/alias-deprecations.tsv"
83
- if [[ -n "$rows" ]]; then
84
- printf "%s\n" "$rows" | while IFS=$'\t' read -r name value file line; do
85
- ui_ok "$name" "${value}"
86
- printf " source: %s:%s\n" "$file" "$line"
87
- done
88
- fi
89
- if [[ -f "$deprecations_file" ]]; then
90
- deprecation="$(awk -F'\t' -v a="$alias_name" 'BEGIN{IGNORECASE=0} $1 !~ /^#/ && $1==a {print $0; exit}' "$deprecations_file")"
91
- if [[ -n "$deprecation" ]]; then
92
- local _a replacement remove_in note
93
- IFS=$'\t' read -r _a replacement remove_in note <<<"$deprecation"
94
- echo ""
95
- ui_warn "Deprecated" "yes"
96
- ui_info "Replacement" "$replacement"
97
- ui_info "Remove In" "$remove_in"
98
- ui_info "Note" "$note"
99
- fi
100
- fi
101
- if [[ -z "$rows" && -z "$deprecation" ]]; then
102
- ui_warn "Alias" "not found: $alias_name"
103
- return 1
104
- fi
105
- ;;
106
- stats)
107
- local histfile="${HISTFILE:-$HOME/.zsh_history}"
108
- if [[ ! -f "$histfile" ]]; then
109
- die "History file not found: $histfile"
110
- fi
111
- ui_header "Alias Usage (History)"
112
- ui_info "History file" "$histfile"
113
- echo ""
114
- local tmp_aliases
115
- tmp_aliases="$(umask 077 && mktemp)"
116
- trap 'rm -f "$tmp_aliases"' RETURN
117
- emit_alias_manifest | awk -F'\t' '{print $1}' | sort -u >"$tmp_aliases"
118
- awk -v aliases_file="$tmp_aliases" '
119
- BEGIN {
120
- while ((getline < aliases_file) > 0) alias[$1]=1
121
- }
122
- {
123
- line=$0
124
- sub(/^:[[:space:]]*[0-9]+:[0-9]+;/, "", line) # zsh EXTENDED_HISTORY prefix
125
- split(line, parts, /[[:space:]]+/)
126
- cmd=parts[1]
127
- if (cmd in alias) count[cmd]++
128
- }
129
- END {
130
- for (k in count) printf "%7d %s\n", count[k], k
131
- }
132
- ' "$histfile" | sort -nr | head -20
133
- rm -f "$tmp_aliases"
134
- ;;
135
- cheatsheet)
136
- # Destination defaults to the checkout's docs/ but can be
137
- # redirected with `--output PATH` (or `-` for stdout). The
138
- # hardcoded path made this the one subcommand that could not be
139
- # exercised without writing into the working tree:
140
- # require_source_dir() resolves from the location of the lib that
141
- # was sourced, so it always pointed at the real repo no matter
142
- # how the sandbox redirected $HOME/.dotfiles.
143
- ui_header "Alias Cheatsheet"
144
- local src_dir out=""
145
- src_dir="$(require_source_dir)"
146
- while (($#)); do
147
- case "$1" in
148
- --output | -o)
149
- out="${2:-}"
150
- [[ -n "$out" ]] || die "Usage: dot aliases cheatsheet [--output PATH|-]"
151
- shift 2
152
- ;;
153
- *)
154
- die "Unknown option for cheatsheet: $1"
155
- ;;
156
- esac
157
- done
158
- out="${out:-$src_dir/docs/ALIASES_CHEATSHEET.md}"
159
- if [[ "$out" == "-" ]]; then
160
- bash "$src_dir/scripts/diagnostics/aliases-cheatsheet.sh"
161
- else
162
- mkdir -p "$(dirname "$out")"
163
- bash "$src_dir/scripts/diagnostics/aliases-cheatsheet.sh" >"$out"
164
- ui_ok "Generated" "$out"
165
- fi
166
- ;;
167
- tiers)
168
- local profile ecosystems security_mode dangerous buckets
169
- profile="${DOTFILES_ALIAS_PROFILE:-standard}"
170
- ecosystems="${DOTFILES_ALIAS_ECOSYSTEMS:-all}"
171
- buckets="${DOTFILES_ALIAS_BUCKETS:-system,svn}"
172
- security_mode="${DOTFILES_SECURITY_MODE:-standard}"
173
- dangerous="${DOTFILES_ENABLE_DANGEROUS_ALIASES:-0}"
174
-
175
- ui_header "Alias Tiers"
176
- ui_info "Profile" "$profile"
177
- ui_info "Ecosystems" "$ecosystems"
178
- ui_info "Buckets" "$buckets"
179
- ui_info "Security Mode" "$security_mode"
180
- ui_info "Dangerous Aliases" "$dangerous"
181
- echo ""
182
-
183
- ui_header "Core (Always Loaded)"
184
- ui_ok "navigation" "cd, clear, default, diagnostics, ps"
185
- ui_ok "dev core" "git, editor, configuration, modern"
186
- ui_ok "cross-platform tooling" "docker, archives, disk-usage, rsync"
187
- echo ""
188
-
189
- ui_header "Ecosystems (Lazy)"
190
- if alias_tier_enabled "$ecosystems" "python"; then
191
- ui_ok "python" "enabled"
192
- else
193
- ui_warn "python" "disabled"
194
- fi
195
- if alias_tier_enabled "$ecosystems" "node"; then
196
- ui_ok "node" "enabled"
197
- else
198
- ui_warn "node" "disabled"
199
- fi
200
- if alias_tier_enabled "$ecosystems" "rust"; then
201
- ui_ok "rust" "enabled"
202
- else
203
- ui_warn "rust" "disabled"
204
- fi
205
- if alias_tier_enabled "$ecosystems" "network"; then
206
- ui_ok "network" "enabled"
207
- else
208
- ui_warn "network" "disabled"
209
- fi
210
- if alias_tier_enabled "$ecosystems" "legacy"; then
211
- ui_ok "legacy" "enabled"
212
- else
213
- ui_warn "legacy" "disabled"
214
- fi
215
- if alias_tier_enabled "$buckets" "system"; then
216
- ui_ok "system bucket" "enabled"
217
- else
218
- ui_warn "system bucket" "disabled"
219
- fi
220
- if alias_tier_enabled "$buckets" "svn"; then
221
- ui_ok "svn bucket" "enabled"
222
- else
223
- ui_warn "svn bucket" "disabled"
224
- fi
225
- ;;
226
- *)
227
- die "Unknown aliases subcommand: $subcommand"
228
- ;;
229
- esac
230
- }
231
-
232
- cmd_alias_check() {
233
- ui_header "Alias Check"
234
- echo ""
235
-
236
- local alias_file="${HOME}/.config/shell/90-ux-aliases.sh"
237
- local zshrc_file="${HOME}/.config/zsh/.zshrc"
238
- local auto_ls_file="${HOME}/.config/shell/custom/auto_ls.zsh"
239
- local missing=0
240
-
241
- if [[ -f "$alias_file" ]]; then
242
- ui_ok "Aliases file" "$alias_file"
243
- else
244
- ui_err "Aliases file missing" "$alias_file"
245
- missing=1
246
- fi
247
-
248
- local required_aliases=(c q e l ll la lr lra lt lta h a d _ i)
249
- local a
250
- for a in "${required_aliases[@]}"; do
251
- if grep -Eq "^[[:space:]]*alias[[:space:]]+${a}=" "$alias_file" 2>/dev/null; then
252
- ui_ok "alias ${a}" "present"
253
- else
254
- ui_warn "alias ${a}" "missing"
255
- missing=1
256
- fi
257
- done
258
-
259
- if [[ -f "$auto_ls_file" ]]; then
260
- ui_ok "auto-ls hook" "$auto_ls_file"
261
- else
262
- ui_warn "auto-ls hook" "missing"
263
- fi
264
-
265
- if [[ -f "$zshrc_file" ]] && rg -q "auto_ls.zsh" "$zshrc_file"; then
266
- ui_ok "auto-ls sourced" "$zshrc_file"
267
- else
268
- ui_warn "auto-ls sourced" "not referenced in zshrc"
269
- fi
270
-
271
- echo ""
272
- if [[ "$missing" -eq 1 ]]; then
273
- ui_warn "Result" "Some aliases are missing; re-run 'chezmoi apply' and open a new shell."
274
- return 1
275
- fi
276
- ui_ok "Result" "All core aliases present"
277
- }
@@ -1,110 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: Apache-2.0 OR MIT
3
- # Copyright (c) 2015-2026 Sebastien Rousseau
4
- # Dotfiles CLI - Appearance Commands
5
- # theme, wallpaper, fonts, tune
6
-
7
- set -euo pipefail
8
-
9
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
10
- # shellcheck source=../../../lib/dot/utils.sh
11
- source "$SCRIPT_DIR/../../../lib/dot/utils.sh"
12
-
13
- dot_ui_command_banner "Appearance" "${1:-}"
14
-
15
- usage() {
16
- cat <<'EOF'
17
- Usage: appearance.sh <command> [args...]
18
-
19
- Commands:
20
- theme, wallpaper, fonts, tune
21
- EOF
22
- }
23
-
24
- cmd_theme() {
25
- run_script "scripts/theme/switch.sh" "Theme switcher" "$@"
26
- }
27
-
28
- cmd_wallpaper() {
29
- case "${1:-sync}" in
30
- sync)
31
- shift 2>/dev/null || true
32
- run_script "scripts/theme/wallpaper-sync.sh" "Wallpaper sync script" "$@"
33
- ;;
34
- rotate)
35
- shift
36
- run_script "scripts/theme/wallpaper-rotate.sh" "Wallpaper rotate script" "$@"
37
- ;;
38
- *)
39
- run_script "scripts/theme/wallpaper-sync.sh" "Wallpaper sync script" "$@"
40
- ;;
41
- esac
42
- }
43
-
44
- cmd_fonts() {
45
- local sub="${1:-install}"
46
- case "$sub" in
47
- patch)
48
- shift
49
- run_script "scripts/fonts/patch-fonts.sh" "Font patch helper" "$@"
50
- ;;
51
- install | "")
52
- [[ "$sub" == install ]] && shift || true
53
- run_script "scripts/fonts/install-nerd-fonts.sh" "Font install script" "$@"
54
- ;;
55
- *)
56
- run_script "scripts/fonts/install-nerd-fonts.sh" "Font install script" "$@"
57
- ;;
58
- esac
59
- }
60
-
61
- cmd_tune() {
62
- local src_dir
63
- local platform
64
- src_dir="$(require_source_dir)"
65
- platform="$(dot_platform_id)"
66
-
67
- case "$platform" in
68
- macos)
69
- exec bash "$src_dir/scripts/tuning/macos.sh" "$@"
70
- ;;
71
- linux | wsl)
72
- exec bash "$src_dir/scripts/tuning/linux.sh" "$@"
73
- ;;
74
- *)
75
- echo "OS tuning not supported on this platform."
76
- exit 1
77
- ;;
78
- esac
79
- }
80
-
81
- # Dispatch
82
- case "${1:-}" in
83
- --help | -h | help)
84
- usage
85
- ;;
86
- "")
87
- usage
88
- exit 1
89
- ;;
90
- theme)
91
- shift
92
- cmd_theme "$@"
93
- ;;
94
- wallpaper)
95
- shift
96
- cmd_wallpaper "$@"
97
- ;;
98
- fonts)
99
- shift
100
- cmd_fonts "$@"
101
- ;;
102
- tune)
103
- shift
104
- cmd_tune "$@"
105
- ;;
106
- *)
107
- echo "Unknown appearance command: ${1:-}" >&2
108
- exit 1
109
- ;;
110
- esac
@@ -1,171 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: Apache-2.0 OR MIT
3
- # Copyright (c) 2015-2026 Sebastien Rousseau
4
- ## `dot completion <bash|zsh|fish|nu>` — emit shell completion for `dot`,
5
- ## generated from the canonical _dot_help_specs registry in bin/dot. Using one
6
- ## source of truth keeps all four shells in sync (the previously hand-maintained
7
- ## fish/nushell lists drifted and referenced non-existent commands).
8
- ##
9
- ## Usage:
10
- ## dot completion bash >> ~/.bashrc.d/dot.bash
11
- ## dot completion zsh > "${fpath[1]}/_dot"
12
- ## dot completion fish > ~/.config/fish/completions/dot.fish
13
- ## dot completion nu >> ~/.config/nushell/completions.nu
14
-
15
- set -euo pipefail
16
-
17
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
18
- # shellcheck source=../../../lib/dot/utils.sh
19
- source "$SCRIPT_DIR/../../../lib/dot/utils.sh"
20
-
21
- _completion_dot_cli() {
22
- local src
23
- src="$(resolve_source_dir)"
24
- printf '%s/bin/dot\n' "$src"
25
- }
26
-
27
- # Emit "name<TAB>description" for every top-level command (a _dot_help_specs
28
- # field-2 entry with no space; entries containing a space are subcommands).
29
- # Strip ": ' from descriptions so they can't break any shell's quoting.
30
- _completion_commands() {
31
- local cli
32
- cli="$(_completion_dot_cli)"
33
- awk -F'|' '
34
- /_dot_help_specs\(\)/ { in_func = 1; next }
35
- in_func && /cat <<'\''EOF'\''/ { in_block = 1; next }
36
- in_block && /^EOF$/ { exit }
37
- in_block && NF >= 3 && $2 !~ / / {
38
- name = $2
39
- # Description = fields 3..NF-1 rejoined: registry descriptions can
40
- # contain "|" (e.g. "--ai|-A") and the last field is the hint.
41
- desc = $3
42
- for (i = 4; i < NF; i++) desc = desc "|" $i
43
- gsub(/^[ \t]+|[ \t]+$/, "", name)
44
- gsub(/^[ \t]+|[ \t]+$/, "", desc)
45
- gsub(/[":\047]/, "", desc)
46
- if (name != "") print name "\t" desc
47
- }
48
- ' "$cli"
49
- }
50
-
51
- # Emit "parent<TAB>child<TAB>description" for every subcommand (a field-2
52
- # entry that contains a space, e.g. "theme list" -> parent=theme child=list).
53
- _completion_subcommands() {
54
- local cli
55
- cli="$(_completion_dot_cli)"
56
- awk -F'|' '
57
- /_dot_help_specs\(\)/ { in_func = 1; next }
58
- in_func && /cat <<'\''EOF'\''/ { in_block = 1; next }
59
- in_block && /^EOF$/ { exit }
60
- in_block && NF >= 3 && $2 ~ / / {
61
- full = $2
62
- desc = $3
63
- for (i = 4; i < NF; i++) desc = desc "|" $i
64
- gsub(/^[ \t]+|[ \t]+$/, "", full)
65
- gsub(/^[ \t]+|[ \t]+$/, "", desc)
66
- gsub(/[":\047]/, "", desc)
67
- parent = full; sub(/ .*/, "", parent)
68
- child = full; sub(/^[^ ]+ /, "", child)
69
- if (parent != "" && child != "") print parent "\t" child "\t" desc
70
- }
71
- ' "$cli"
72
- }
73
-
74
- # The printf templates below are the *text of the generated script*;
75
- # `$cur`, `$prev`, `$commands` must reach the output unexpanded.
76
- # shellcheck disable=SC2016
77
- gen_bash() {
78
- local names parent child desc
79
- names="$(_completion_commands | cut -f1 | tr '\n' ' ')"
80
- printf '# dot bash completion — generated by: dot completion bash\n'
81
- printf '# Source this file, or install it to a bash-completion completions dir.\n'
82
- printf '_dot_completions() {\n'
83
- printf ' local cur prev commands\n'
84
- printf ' COMPREPLY=()\n'
85
- printf ' cur="${COMP_WORDS[COMP_CWORD]}"\n'
86
- printf ' prev="${COMP_WORDS[COMP_CWORD - 1]}"\n'
87
- printf " commands='%s'\n" "${names% }"
88
- printf ' case "$prev" in\n'
89
- printf ' dot)\n'
90
- printf ' COMPREPLY=($(compgen -W "$commands" -- "$cur"))\n'
91
- printf ' return 0\n'
92
- printf ' ;;\n'
93
- # One case arm per parent command that has subcommands.
94
- while IFS=$'\t' read -r parent child desc; do
95
- printf '%s\t%s\n' "$parent" "$child"
96
- done < <(_completion_subcommands) |
97
- awk -F'\t' '{ subs[$1] = subs[$1] (subs[$1] == "" ? "" : " ") $2 }
98
- END { for (p in subs) printf "%s\t%s\n", p, subs[p] }' |
99
- LC_ALL=C sort |
100
- while IFS=$'\t' read -r parent child; do
101
- printf ' %s)\n' "$parent"
102
- printf ' COMPREPLY=($(compgen -W "%s" -- "$cur"))\n' "$child"
103
- printf ' return 0\n'
104
- printf ' ;;\n'
105
- done
106
- printf ' esac\n'
107
- printf ' COMPREPLY=($(compgen -f -- "$cur"))\n'
108
- printf '}\n'
109
- printf 'complete -F _dot_completions dot\n'
110
- }
111
-
112
- gen_zsh() {
113
- local name desc
114
- printf '#compdef dot\n# generated by: dot completion zsh\n'
115
- printf '_dot() {\n local -a commands\n commands=(\n'
116
- while IFS=$'\t' read -r name desc; do
117
- printf " '%s:%s'\n" "$name" "$desc"
118
- done < <(_completion_commands)
119
- printf ' )\n _describe '\''command'\'' commands\n}\n_dot "$@"\n'
120
- }
121
-
122
- gen_fish() {
123
- local name desc
124
- printf '# dot fish completion — generated by: dot completion fish\n'
125
- printf 'complete -c dot -f\n'
126
- while IFS=$'\t' read -r name desc; do
127
- printf 'complete -c dot -n "__fish_use_subcommand" -a %s -d "%s"\n' "$name" "$desc"
128
- done < <(_completion_commands)
129
- local parent child
130
- while IFS=$'\t' read -r parent child desc; do
131
- printf 'complete -c dot -n "__fish_seen_subcommand_from %s" -a %s -d "%s"\n' \
132
- "$parent" "$child" "$desc"
133
- done < <(_completion_subcommands)
134
- }
135
-
136
- gen_nu() {
137
- local name desc
138
- printf '# dot nushell completion — generated by: dot completion nu\n'
139
- printf 'export extern dot [\n command?: string@dot_commands\n ...args: string\n]\n'
140
- printf 'def dot_commands [] {\n [\n'
141
- while IFS=$'\t' read -r name desc; do
142
- printf ' { value: "%s", description: "%s" }\n' "$name" "$desc"
143
- done < <(_completion_commands)
144
- printf ' ]\n}\n'
145
- }
146
-
147
- usage() {
148
- cat <<'USAGE'
149
- Usage: dot completion <bash|zsh|fish|nu>
150
-
151
- Generate shell completion for `dot` from the canonical command registry.
152
-
153
- dot completion bash >> ~/.bashrc.d/dot.bash
154
- dot completion zsh > "${fpath[1]}/_dot"
155
- dot completion fish > ~/.config/fish/completions/dot.fish
156
- dot completion nu >> ~/.config/nushell/completions.nu
157
- USAGE
158
- }
159
-
160
- # Dispatch: $1 is the command name ("completion"); $2 is the target shell.
161
- case "${2:-}" in
162
- bash) gen_bash ;;
163
- zsh) gen_zsh ;;
164
- fish) gen_fish ;;
165
- nu | nushell) gen_nu ;;
166
- "" | -h | --help | help) usage ;;
167
- *)
168
- echo "dot completion: unknown shell '${2}' (want: bash|zsh|fish|nu)" >&2
169
- exit 1
170
- ;;
171
- esac