@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,277 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: 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: 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,134 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: 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; desc = $3
39
- gsub(/^[ \t]+|[ \t]+$/, "", name)
40
- gsub(/^[ \t]+|[ \t]+$/, "", desc)
41
- gsub(/[":\047]/, "", desc)
42
- if (name != "") print name "\t" desc
43
- }
44
- ' "$cli"
45
- }
46
-
47
- # Emit "parent<TAB>child<TAB>description" for every subcommand (a field-2
48
- # entry that contains a space, e.g. "theme list" -> parent=theme child=list).
49
- _completion_subcommands() {
50
- local cli
51
- cli="$(_completion_dot_cli)"
52
- awk -F'|' '
53
- /_dot_help_specs\(\)/ { in_func = 1; next }
54
- in_func && /cat <<'\''EOF'\''/ { in_block = 1; next }
55
- in_block && /^EOF$/ { exit }
56
- in_block && NF >= 3 && $2 ~ / / {
57
- full = $2; desc = $3
58
- gsub(/^[ \t]+|[ \t]+$/, "", full)
59
- gsub(/^[ \t]+|[ \t]+$/, "", desc)
60
- gsub(/[":\047]/, "", desc)
61
- parent = full; sub(/ .*/, "", parent)
62
- child = full; sub(/^[^ ]+ /, "", child)
63
- if (parent != "" && child != "") print parent "\t" child "\t" desc
64
- }
65
- ' "$cli"
66
- }
67
-
68
- gen_bash() {
69
- local names
70
- names="$(_completion_commands | cut -f1 | tr '\n' ' ')"
71
- printf '# dot bash completion — generated by: dot completion bash\n'
72
- printf "complete -W '%s' dot\n" "${names% }"
73
- }
74
-
75
- gen_zsh() {
76
- local name desc
77
- printf '#compdef dot\n# generated by: dot completion zsh\n'
78
- printf '_dot() {\n local -a commands\n commands=(\n'
79
- while IFS=$'\t' read -r name desc; do
80
- printf " '%s:%s'\n" "$name" "$desc"
81
- done < <(_completion_commands)
82
- printf ' )\n _describe '\''command'\'' commands\n}\n_dot "$@"\n'
83
- }
84
-
85
- gen_fish() {
86
- local name desc
87
- printf '# dot fish completion — generated by: dot completion fish\n'
88
- printf 'complete -c dot -f\n'
89
- while IFS=$'\t' read -r name desc; do
90
- printf 'complete -c dot -n "__fish_use_subcommand" -a %s -d "%s"\n' "$name" "$desc"
91
- done < <(_completion_commands)
92
- local parent child
93
- while IFS=$'\t' read -r parent child desc; do
94
- printf 'complete -c dot -n "__fish_seen_subcommand_from %s" -a %s -d "%s"\n' \
95
- "$parent" "$child" "$desc"
96
- done < <(_completion_subcommands)
97
- }
98
-
99
- gen_nu() {
100
- local name desc
101
- printf '# dot nushell completion — generated by: dot completion nu\n'
102
- printf 'export extern dot [\n command?: string@dot_commands\n ...args: string\n]\n'
103
- printf 'def dot_commands [] {\n [\n'
104
- while IFS=$'\t' read -r name desc; do
105
- printf ' { value: "%s", description: "%s" }\n' "$name" "$desc"
106
- done < <(_completion_commands)
107
- printf ' ]\n}\n'
108
- }
109
-
110
- usage() {
111
- cat <<'USAGE'
112
- Usage: dot completion <bash|zsh|fish|nu>
113
-
114
- Generate shell completion for `dot` from the canonical command registry.
115
-
116
- dot completion bash >> ~/.bashrc.d/dot.bash
117
- dot completion zsh > "${fpath[1]}/_dot"
118
- dot completion fish > ~/.config/fish/completions/dot.fish
119
- dot completion nu >> ~/.config/nushell/completions.nu
120
- USAGE
121
- }
122
-
123
- # Dispatch: $1 is the command name ("completion"); $2 is the target shell.
124
- case "${2:-}" in
125
- bash) gen_bash ;;
126
- zsh) gen_zsh ;;
127
- fish) gen_fish ;;
128
- nu | nushell) gen_nu ;;
129
- "" | -h | --help | help) usage ;;
130
- *)
131
- echo "dot completion: unknown shell '${2}' (want: bash|zsh|fish|nu)" >&2
132
- exit 1
133
- ;;
134
- esac