@sebastienrousseau/dotfiles 0.2.468 → 0.2.481

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 (489) hide show
  1. package/CHANGELOG.md +285 -0
  2. package/README.md +236 -319
  3. package/docs/ALIASES.md +128 -0
  4. package/docs/ARCHITECTURE.md +229 -0
  5. package/docs/COMPLIANCE.md +47 -0
  6. package/docs/COPYRIGHT +7 -0
  7. package/docs/FEATURES.md +166 -0
  8. package/docs/FONTS.md +147 -0
  9. package/docs/INSTALL.md +119 -0
  10. package/docs/KEYS.md +40 -0
  11. package/docs/KEY_ROTATION.md +219 -0
  12. package/docs/LEGACY_ROADMAP.md +142 -0
  13. package/docs/NEOVIM_IDE_GUIDE.md +52 -0
  14. package/docs/OPERATIONS.md +130 -0
  15. package/docs/PLAN.md +161 -0
  16. package/docs/PR_DESCRIPTION.md +149 -0
  17. package/docs/README.md +269 -0
  18. package/docs/REPO_AUDIT.md +23 -0
  19. package/docs/ROADMAP.md +148 -0
  20. package/docs/SCREENSHOTS.md +116 -0
  21. package/docs/SECRETS.md +76 -0
  22. package/docs/SECURITY.md +30 -0
  23. package/docs/SECURITY_CHECKLIST.md +25 -0
  24. package/docs/TASK.md +99 -0
  25. package/docs/TESTING.md +190 -0
  26. package/docs/TOOLS.md +146 -0
  27. package/docs/TROUBLESHOOTING.md +112 -0
  28. package/docs/UTILS.md +105 -0
  29. package/docs/WALKTHROUGH.md +165 -0
  30. package/docs/WSL2_NIX_TROUBLESHOOTING.md +723 -0
  31. package/docs/adr/ADR-001-ci-cd-pipeline.md +101 -0
  32. package/docs/adr/ADR-002-shell-performance.md +121 -0
  33. package/docs/adr/ADR-003-security-first.md +140 -0
  34. package/docs/adr/ADR-004-cli-architecture.md +157 -0
  35. package/docs/adr/ADR-005-chezmoi-choice.md +89 -0
  36. package/docs/adr/ADR-006-shell-selection.md +115 -0
  37. package/docs/adr/README.md +33 -0
  38. package/docs/themes/README.md +20 -0
  39. package/dot_config/aider/aider.conf.yml +32 -0
  40. package/dot_config/alacritty/alacritty.toml.tmpl +483 -0
  41. package/dot_config/ansible/ansible.cfg.tmpl +11 -0
  42. package/dot_config/atuin/config.toml +23 -0
  43. package/dot_config/bat/config +8 -0
  44. package/dot_config/brave-flags.conf.tmpl +7 -0
  45. package/dot_config/btop/btop.conf +16 -0
  46. package/dot_config/btop/themes/tokyonight.theme +34 -0
  47. package/dot_config/bun/bunfig.toml.tmpl +33 -0
  48. package/dot_config/claude/mcp_servers.json +49 -0
  49. package/dot_config/clippy.toml +55 -0
  50. package/dot_config/containers/containers.conf +14 -0
  51. package/dot_config/curl/dot_curlrc +18 -0
  52. package/dot_config/dlv/config.yml +39 -0
  53. package/dot_config/docker/config.json.tmpl +15 -0
  54. package/dot_config/dotfiles/boot/README.md +11 -0
  55. package/dot_config/dotfiles/grub/README.md +11 -0
  56. package/dot_config/dotfiles/lock/README.md +11 -0
  57. package/dot_config/dotfiles/versions.env.tmpl +19 -0
  58. package/dot_config/duf/duf.conf +6 -0
  59. package/dot_config/duti/defaults.duti +5 -0
  60. package/dot_config/emoji/emoji.txt +34 -0
  61. package/dot_config/fastfetch/config.jsonc +28 -0
  62. package/dot_config/firefox/user.js +8 -0
  63. package/dot_config/flatpak/flatpak.list +4 -0
  64. package/dot_config/fontconfig/fonts.conf.tmpl +44 -0
  65. package/dot_config/gh/config.yml +12 -0
  66. package/dot_config/ghostty/config.tmpl +661 -0
  67. package/dot_config/git/attributes +12 -0
  68. package/dot_config/git/config.tmpl +77 -0
  69. package/dot_config/git/ignore +27 -0
  70. package/dot_config/gnupg/gpg-agent.conf.tmpl +11 -0
  71. package/dot_config/go/aliases.sh +61 -0
  72. package/dot_config/go/env.sh +24 -0
  73. package/dot_config/go/golangci.yml +118 -0
  74. package/dot_config/go/gopls.json +30 -0
  75. package/dot_config/goose/config.yaml +29 -0
  76. package/dot_config/gtk-3.0/gtk.css.tmpl +305 -0
  77. package/dot_config/gtk-3.0/settings.ini.tmpl +66 -0
  78. package/dot_config/gtk-4.0/gtk.css.tmpl +309 -0
  79. package/dot_config/gtk-4.0/settings.ini.tmpl +21 -0
  80. package/dot_config/htop/htoprc +20 -0
  81. package/dot_config/ice/README.md +13 -0
  82. package/dot_config/inputrc +2 -0
  83. package/dot_config/ipython/profile_default/ipython_config.py.tmpl +5 -0
  84. package/dot_config/just/justfile +104 -0
  85. package/dot_config/k9s/config.yaml.tmpl +65 -0
  86. package/dot_config/k9s/skins/catppuccin-mocha.yaml +116 -0
  87. package/dot_config/karabiner/karabiner.json +14 -0
  88. package/dot_config/kitty/kitty.conf.tmpl +517 -0
  89. package/dot_config/lazydocker/config.yml +186 -0
  90. package/dot_config/lazygit/config.yml +23 -0
  91. package/dot_config/lsd/config.yaml +19 -0
  92. package/dot_config/mas/masapps.txt +5 -0
  93. package/dot_config/minikube/config.json +13 -0
  94. package/dot_config/mise/config.toml +41 -0
  95. package/dot_config/mongosh/mongoshrc.js +67 -0
  96. package/dot_config/mycli/myclirc +67 -0
  97. package/dot_config/nano/nanorc +28 -0
  98. package/dot_config/ncdu/config +12 -0
  99. package/dot_config/nvim/init.lua +4 -0
  100. package/dot_config/nvim/lazy-lock.json +27 -0
  101. package/dot_config/nvim/lua/config/autocmds.lua +63 -0
  102. package/dot_config/nvim/lua/config/keymaps.lua +87 -0
  103. package/dot_config/nvim/lua/config/lazy.lua +34 -0
  104. package/dot_config/nvim/lua/config/options.lua +48 -0
  105. package/dot_config/nvim/lua/plugins/coding.lua +234 -0
  106. package/dot_config/nvim/lua/plugins/dap.lua +201 -0
  107. package/dot_config/nvim/lua/plugins/editor.lua +59 -0
  108. package/dot_config/nvim/lua/plugins/git.lua +9 -0
  109. package/dot_config/nvim/lua/plugins/lsp.lua +221 -0
  110. package/dot_config/nvim/lua/plugins/markdown.lua +17 -0
  111. package/dot_config/nvim/lua/plugins/rust.lua +33 -0
  112. package/dot_config/nvim/lua/plugins/sessions.lua +32 -0
  113. package/dot_config/nvim/lua/plugins/ui.lua +537 -0
  114. package/dot_config/nvim/snippets/all.lua +9 -0
  115. package/dot_config/nvim/snippets/python.lua +16 -0
  116. package/dot_config/pip/pip.conf.tmpl +32 -0
  117. package/dot_config/pypoetry/config.toml.tmpl +6 -0
  118. package/dot_config/pyrightconfig.json.tmpl +5 -0
  119. package/dot_config/raycast/README.md +13 -0
  120. package/dot_config/redis/redisclirc +41 -0
  121. package/dot_config/shell/00-container-detect.sh +53 -0
  122. package/dot_config/shell/00-core-paths.sh.tmpl +95 -0
  123. package/dot_config/shell/05-core-safety.sh.tmpl +13 -0
  124. package/dot_config/shell/40-ls-colors.sh.tmpl +31 -0
  125. package/dot_config/shell/50-logic-functions.sh.tmpl +10 -0
  126. package/dot_config/shell/90-theme-switch.sh +70 -0
  127. package/dot_config/shell/90-ux-aliases.sh.tmpl +35 -0
  128. package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +23 -0
  129. package/dot_config/shell/Brewfile +207 -0
  130. package/dot_config/shell/Brewfile.cask +92 -0
  131. package/dot_config/shell/Brewfile.cli +119 -0
  132. package/dot_config/shell/README.md +267 -0
  133. package/dot_config/shell/custom/context_suggest.zsh +68 -0
  134. package/dot_config/shell/custom/error_analysis.zsh +45 -0
  135. package/dot_config/sops/dot_sops.yaml +23 -0
  136. package/dot_config/starship.toml.tmpl +124 -0
  137. package/dot_config/task/Taskfile.yml +86 -0
  138. package/dot_config/tflint/tflint.hcl.tmpl +9 -0
  139. package/dot_config/tmux/tmux.conf.tmpl +181 -0
  140. package/dot_config/topgrade/topgrade.toml.tmpl +42 -0
  141. package/dot_config/vscode/extensions.txt +11 -0
  142. package/dot_config/vscode/settings.json.tmpl +123 -0
  143. package/dot_config/waybar/style.css +8 -0
  144. package/dot_config/wezterm/wezterm.lua.tmpl +236 -0
  145. package/dot_config/wget/wgetrc +12 -0
  146. package/dot_config/yarn/yarnrc.yml.tmpl +36 -0
  147. package/dot_config/yazi/yazi.toml +40 -0
  148. package/dot_config/zellij/config.kdl +79 -0
  149. package/dot_config/zsh/dot_zprofile +13 -0
  150. package/dot_config/zsh/dot_zshenv +6 -0
  151. package/dot_config/zsh/dot_zshrc.tmpl +199 -0
  152. package/dot_config/zsh/rc.d/05-ssh-agent.zsh +5 -0
  153. package/dot_config/zsh/rc.d/10-env.zsh.tmpl +28 -0
  154. package/dot_config/zsh/rc.d/20-zinit.zsh.tmpl +22 -0
  155. package/dot_config/zsh/rc.d/30-options.zsh.tmpl +123 -0
  156. package/dot_config/zsh/rc.d/40-bell.zsh.tmpl +20 -0
  157. package/dot_config/zsh/rc.d/50-login-fortune.zsh.tmpl +9 -0
  158. package/dot_local/bin/executable_ai_core +130 -0
  159. package/dot_local/bin/executable_b64 +59 -0
  160. package/dot_local/bin/executable_dot +178 -0
  161. package/dot_local/bin/executable_dot_completion +55 -0
  162. package/dot_local/bin/executable_epoch +62 -0
  163. package/dot_local/bin/executable_extract +108 -0
  164. package/dot_local/bin/executable_git-ai-commit +160 -0
  165. package/dot_local/bin/executable_git-ai-diff +154 -0
  166. package/dot_local/bin/executable_hash +123 -0
  167. package/dot_local/bin/executable_hex +79 -0
  168. package/dot_local/bin/executable_ip +37 -0
  169. package/dot_local/bin/executable_jsonv +54 -0
  170. package/dot_local/bin/executable_jwt +78 -0
  171. package/dot_local/bin/executable_kill-port +59 -0
  172. package/dot_local/bin/executable_lorem +103 -0
  173. package/dot_local/bin/executable_regex +96 -0
  174. package/dot_local/bin/executable_tmux-sessionizer +187 -0
  175. package/dot_local/bin/executable_tour +137 -0
  176. package/dot_local/bin/executable_update +108 -0
  177. package/dot_local/bin/executable_uuid +57 -0
  178. package/dot_local/bin/executable_yamlv +39 -0
  179. package/dot_local/bin/executable_zig-install +89 -0
  180. package/dot_local/bin/voice_ops +7 -0
  181. package/dot_local/share/bash-completion/completions/dot +54 -0
  182. package/dot_local/share/zsh/completions/.keep +0 -0
  183. package/install.sh +255 -0
  184. package/package.json +52 -76
  185. package/scripts/ci/validate-ci-config.sh +222 -0
  186. package/scripts/demo/record.sh +41 -0
  187. package/scripts/diagnostics/benchmark.sh +201 -0
  188. package/scripts/diagnostics/doctor.sh +115 -0
  189. package/scripts/diagnostics/drift-dashboard.sh +26 -0
  190. package/scripts/diagnostics/health.sh +356 -0
  191. package/scripts/diagnostics/history-analysis.sh +77 -0
  192. package/scripts/diagnostics/security-score.sh +392 -0
  193. package/scripts/diagnostics/verify_state.sh +60 -0
  194. package/scripts/dot/commands/appearance.sh +63 -0
  195. package/scripts/dot/commands/core.sh +130 -0
  196. package/scripts/dot/commands/diagnostics.sh +100 -0
  197. package/scripts/dot/commands/meta.sh +117 -0
  198. package/scripts/dot/commands/restore.sh +209 -0
  199. package/scripts/dot/commands/secrets.sh +81 -0
  200. package/scripts/dot/commands/security.sh +73 -0
  201. package/scripts/dot/commands/tools.sh +228 -0
  202. package/scripts/dot/lib/utils.sh +72 -0
  203. package/scripts/fonts/install-nerd-fonts.sh +59 -0
  204. package/scripts/fonts/patch-fonts.sh +34 -0
  205. package/scripts/ops/chezmoi-apply.sh +42 -0
  206. package/scripts/ops/chezmoi-diff.sh +14 -0
  207. package/scripts/ops/chezmoi-remove.sh +43 -0
  208. package/scripts/ops/chezmoi-update.sh +16 -0
  209. package/scripts/ops/heal.sh +466 -0
  210. package/scripts/ops/health-check.sh +380 -0
  211. package/scripts/ops/rollback.sh +531 -0
  212. package/scripts/ops/teleport.sh +32 -0
  213. package/scripts/secrets/age-init.sh +69 -0
  214. package/scripts/secrets/create-secrets-file.sh +44 -0
  215. package/scripts/secrets/encrypt-ssh-key.sh +42 -0
  216. package/scripts/security/backup.sh +17 -0
  217. package/scripts/security/dns-doh.sh +29 -0
  218. package/scripts/security/encryption-check.sh +39 -0
  219. package/scripts/security/enforce-policies.sh +339 -0
  220. package/scripts/security/firewall.sh +34 -0
  221. package/scripts/security/lock-configs.sh +57 -0
  222. package/scripts/security/lock-screen.sh +33 -0
  223. package/scripts/security/manage-secrets.sh +415 -0
  224. package/scripts/security/telemetry-kill.sh +28 -0
  225. package/scripts/security/usb-safety.sh +29 -0
  226. package/scripts/tests/README.md +241 -0
  227. package/scripts/tests/benchmark.sh +91 -0
  228. package/scripts/tests/framework/assertions.sh +283 -0
  229. package/scripts/tests/framework/mocks.sh +201 -0
  230. package/scripts/tests/framework/test_runner.sh +189 -0
  231. package/scripts/tests/integration/test_install.sh +237 -0
  232. package/scripts/tests/performance/benchmark_runner.sh +156 -0
  233. package/scripts/tests/performance/regression_check.sh +73 -0
  234. package/scripts/tests/performance/stress_test.sh +65 -0
  235. package/scripts/tests/test-aliases.sh +25 -0
  236. package/scripts/tests/test-docker.sh +48 -0
  237. package/scripts/tests/unit/test_ai_aliases.sh +158 -0
  238. package/scripts/tests/unit/test_ai_cli_checks.sh +47 -0
  239. package/scripts/tests/unit/test_backup.sh +227 -0
  240. package/scripts/tests/unit/test_case_functions.sh +238 -0
  241. package/scripts/tests/unit/test_cd_aliases.sh +367 -0
  242. package/scripts/tests/unit/test_dot_cli.sh +217 -0
  243. package/scripts/tests/unit/test_encode64.sh +67 -0
  244. package/scripts/tests/unit/test_environment.sh +78 -0
  245. package/scripts/tests/unit/test_extract.sh +163 -0
  246. package/scripts/tests/unit/test_framework_edge_cases.sh +113 -0
  247. package/scripts/tests/unit/test_genpass.sh +298 -0
  248. package/scripts/tests/unit/test_install_edge_cases.sh +167 -0
  249. package/scripts/tests/unit/test_installers.sh +172 -0
  250. package/scripts/tests/unit/test_keygen.sh +68 -0
  251. package/scripts/tests/unit/test_logging.sh +96 -0
  252. package/scripts/tests/unit/test_os_detection_comprehensive.sh +388 -0
  253. package/scripts/tests/unit/test_package_managers_comprehensive.sh +321 -0
  254. package/scripts/tests/unit/test_prependpath.sh +66 -0
  255. package/scripts/tests/unit/test_prependpath_refactored.sh +89 -0
  256. package/scripts/tests/unit/test_rd.sh +230 -0
  257. package/scripts/tests/unit/test_security_fixes.sh +130 -0
  258. package/scripts/tests/unit/test_security_scripts.sh +87 -0
  259. package/scripts/tests/unit/test_template_validation.sh +238 -0
  260. package/scripts/tests/unit/test_utility_functions.sh +144 -0
  261. package/scripts/tests/unit/test_wave1_alias_split.sh +132 -0
  262. package/scripts/tests/unit/test_wave1_ci_pinning.sh +61 -0
  263. package/scripts/tests/unit/test_wave1_gitleaks_config.sh +52 -0
  264. package/scripts/tests/unit/test_wave1_heal_fixes.sh +97 -0
  265. package/scripts/tests/unit/test_wave1_install_gpg.sh +35 -0
  266. package/scripts/tests/unit/test_wave1_zshenv_path.sh +89 -0
  267. package/scripts/tests/unit/test_wave1_zshrc_lazy_hook.sh +115 -0
  268. package/scripts/tests/unit/test_wave2_dot_new_guard.sh +75 -0
  269. package/scripts/tests/unit/test_zipf.sh +76 -0
  270. package/scripts/theme/apply-gnome-theme.sh +297 -0
  271. package/scripts/theme/install-boot-logo.sh +61 -0
  272. package/scripts/theme/install-catppuccin-themes.sh +346 -0
  273. package/scripts/theme/install-cursors.sh +24 -0
  274. package/scripts/theme/install-file-icons.sh +25 -0
  275. package/scripts/theme/install-grub-theme.sh +51 -0
  276. package/scripts/theme/install-lock-icon.sh +29 -0
  277. package/scripts/theme/switch.sh +250 -0
  278. package/scripts/theme/wallpaper-rotate.sh +82 -0
  279. package/scripts/theme/wallpaper-sync.sh +42 -0
  280. package/scripts/tools/cmatrix.sh +20 -0
  281. package/scripts/tools/detect-collisions.py +84 -0
  282. package/scripts/tools/emoji-picker.sh +45 -0
  283. package/scripts/tools/figlet-banner.sh +17 -0
  284. package/scripts/tools/log-rotate.sh +29 -0
  285. package/scripts/tools/lolcat-wrap.sh +18 -0
  286. package/scripts/tools/pipes.sh +47 -0
  287. package/scripts/tuning/linux.sh +175 -0
  288. package/scripts/tuning/macos.sh +46 -0
  289. package/templates/projects/go/README.md +7 -0
  290. package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +7 -0
  291. package/templates/projects/go/go.mod +3 -0
  292. package/templates/projects/molecule/README.md +7 -0
  293. package/templates/projects/molecule/converge.yml +7 -0
  294. package/templates/projects/molecule/molecule.yml +16 -0
  295. package/templates/projects/node/README.md +7 -0
  296. package/templates/projects/node/package.json +10 -0
  297. package/templates/projects/node/src/index.js +2 -0
  298. package/templates/projects/packer/README.md +15 -0
  299. package/templates/projects/packer/main.pkr.hcl +15 -0
  300. package/templates/projects/python/README.md +7 -0
  301. package/templates/projects/python/pyproject.toml +25 -0
  302. package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +1 -0
  303. package/templates/projects/python/tests/test_basic.py +2 -0
  304. package/dist/Makefile +0 -57
  305. package/dist/bin/backup.d.ts +0 -3
  306. package/dist/bin/backup.d.ts.map +0 -1
  307. package/dist/bin/backup.js +0 -4
  308. package/dist/bin/backup.js.map +0 -1
  309. package/dist/bin/constants.d.ts +0 -7
  310. package/dist/bin/constants.d.ts.map +0 -1
  311. package/dist/bin/constants.js +0 -2
  312. package/dist/bin/constants.js.map +0 -1
  313. package/dist/bin/copy.d.ts +0 -3
  314. package/dist/bin/copy.d.ts.map +0 -1
  315. package/dist/bin/copy.js +0 -3
  316. package/dist/bin/copy.js.map +0 -1
  317. package/dist/bin/dotfiles.d.ts +0 -3
  318. package/dist/bin/dotfiles.d.ts.map +0 -1
  319. package/dist/bin/dotfiles.js +0 -2
  320. package/dist/bin/dotfiles.js.map +0 -1
  321. package/dist/bin/download.d.ts +0 -3
  322. package/dist/bin/download.d.ts.map +0 -1
  323. package/dist/bin/download.js +0 -2
  324. package/dist/bin/download.js.map +0 -1
  325. package/dist/bin/index.d.ts +0 -2
  326. package/dist/bin/index.d.ts.map +0 -1
  327. package/dist/bin/index.js +0 -1
  328. package/dist/bin/index.js.map +0 -1
  329. package/dist/bin/transfer.d.ts +0 -3
  330. package/dist/bin/transfer.d.ts.map +0 -1
  331. package/dist/bin/transfer.js +0 -4
  332. package/dist/bin/transfer.js.map +0 -1
  333. package/dist/bin/unpack.d.ts +0 -3
  334. package/dist/bin/unpack.d.ts.map +0 -1
  335. package/dist/bin/unpack.js +0 -3
  336. package/dist/bin/unpack.js.map +0 -1
  337. package/dist/filesizes.txt +0 -380
  338. package/dist/lib/README.md +0 -12
  339. package/dist/lib/aliases/README.md +0 -55
  340. package/dist/lib/aliases/archives/README.md +0 -59
  341. package/dist/lib/aliases/archives/archives.aliases.sh +0 -157
  342. package/dist/lib/aliases/cd/README.md +0 -65
  343. package/dist/lib/aliases/cd/cd.aliases.sh +0 -73
  344. package/dist/lib/aliases/chmod/README.md +0 -109
  345. package/dist/lib/aliases/chmod/chmod.aliases.sh +0 -91
  346. package/dist/lib/aliases/clear/README.md +0 -37
  347. package/dist/lib/aliases/clear/clear.aliases.sh +0 -71
  348. package/dist/lib/aliases/configuration/README.md +0 -39
  349. package/dist/lib/aliases/configuration/configuration.aliases.sh +0 -73
  350. package/dist/lib/aliases/default/README.md +0 -40
  351. package/dist/lib/aliases/default/default.aliases.sh +0 -139
  352. package/dist/lib/aliases/dig/README.md +0 -37
  353. package/dist/lib/aliases/dig/dig.aliases.sh +0 -43
  354. package/dist/lib/aliases/disk-usage/README.md +0 -36
  355. package/dist/lib/aliases/disk-usage/du.aliases.sh +0 -84
  356. package/dist/lib/aliases/editor/README.md +0 -53
  357. package/dist/lib/aliases/editor/editor.aliases.sh +0 -26
  358. package/dist/lib/aliases/find/README.md +0 -46
  359. package/dist/lib/aliases/find/find.aliases.sh +0 -60
  360. package/dist/lib/aliases/gcloud/README.md +0 -63
  361. package/dist/lib/aliases/gcloud/gcloud.aliases.sh +0 -335
  362. package/dist/lib/aliases/git/README.md +0 -153
  363. package/dist/lib/aliases/git/git.aliases.sh +0 -544
  364. package/dist/lib/aliases/gnu/README.md +0 -89
  365. package/dist/lib/aliases/gnu/gnucoreutils-aliases.sh +0 -150
  366. package/dist/lib/aliases/heroku/README.md +0 -430
  367. package/dist/lib/aliases/heroku/heroku.aliases.sh +0 -1053
  368. package/dist/lib/aliases/interactive/README.md +0 -55
  369. package/dist/lib/aliases/interactive/interactive.aliases.sh +0 -50
  370. package/dist/lib/aliases/jekyll/README.md +0 -41
  371. package/dist/lib/aliases/jekyll/jekyll.aliases.sh +0 -54
  372. package/dist/lib/aliases/list/README.md +0 -42
  373. package/dist/lib/aliases/list/list.aliases.sh +0 -86
  374. package/dist/lib/aliases/macOS/README.md +0 -42
  375. package/dist/lib/aliases/macOS/macos.aliases.sh +0 -65
  376. package/dist/lib/aliases/make/README.md +0 -32
  377. package/dist/lib/aliases/make/make.aliases.sh +0 -35
  378. package/dist/lib/aliases/mkdir/README.md +0 -30
  379. package/dist/lib/aliases/mkdir/mkdir.aliases.sh +0 -29
  380. package/dist/lib/aliases/npm/README.md +0 -41
  381. package/dist/lib/aliases/npm/npm.aliases.sh +0 -61
  382. package/dist/lib/aliases/permission/README.md +0 -47
  383. package/dist/lib/aliases/permission/permission.aliases.sh +0 -73
  384. package/dist/lib/aliases/pnpm/README.md +0 -53
  385. package/dist/lib/aliases/pnpm/pnpm.aliases.sh +0 -76
  386. package/dist/lib/aliases/ps/README.md +0 -29
  387. package/dist/lib/aliases/ps/ps.aliases.sh +0 -20
  388. package/dist/lib/aliases/rsync/README.md +0 -25
  389. package/dist/lib/aliases/rsync/rsync.aliases.sh +0 -17
  390. package/dist/lib/aliases/rust/README.md +0 -61
  391. package/dist/lib/aliases/rust/rust.aliases.sh +0 -127
  392. package/dist/lib/aliases/subversion/README.md +0 -66
  393. package/dist/lib/aliases/subversion/subversion.aliases.sh +0 -47
  394. package/dist/lib/aliases/sudo/README.md +0 -27
  395. package/dist/lib/aliases/sudo/sudo.aliases.sh +0 -20
  396. package/dist/lib/aliases/tmux/README.md +0 -31
  397. package/dist/lib/aliases/tmux/tmux.aliases.sh +0 -36
  398. package/dist/lib/aliases/update/README.md +0 -38
  399. package/dist/lib/aliases/update/update.aliases.sh +0 -69
  400. package/dist/lib/aliases/uuid/README.md +0 -24
  401. package/dist/lib/aliases/uuid/uuid.aliases.sh +0 -19
  402. package/dist/lib/aliases/wget/README.md +0 -27
  403. package/dist/lib/aliases/wget/wget.aliases.sh +0 -22
  404. package/dist/lib/aliases.sh +0 -50
  405. package/dist/lib/configurations/README.md +0 -18
  406. package/dist/lib/configurations/bash/bashrc +0 -39
  407. package/dist/lib/configurations/curl/cacert.pem +0 -3460
  408. package/dist/lib/configurations/curl/curlrc +0 -56
  409. package/dist/lib/configurations/default/color.sh +0 -24
  410. package/dist/lib/configurations/default/constants.sh +0 -43
  411. package/dist/lib/configurations/default/editor.sh +0 -18
  412. package/dist/lib/configurations/default/prompt.sh +0 -39
  413. package/dist/lib/configurations/input/inputrc +0 -23
  414. package/dist/lib/configurations/jshint/jshintrc +0 -37
  415. package/dist/lib/configurations/nano/nanorc +0 -35
  416. package/dist/lib/configurations/profile/profile +0 -37
  417. package/dist/lib/configurations/tmux/default +0 -18
  418. package/dist/lib/configurations/tmux/display +0 -30
  419. package/dist/lib/configurations/tmux/linux +0 -18
  420. package/dist/lib/configurations/tmux/navigation +0 -30
  421. package/dist/lib/configurations/tmux/panes +0 -10
  422. package/dist/lib/configurations/tmux/theme +0 -29
  423. package/dist/lib/configurations/tmux/tmux +0 -21
  424. package/dist/lib/configurations/vim/vimrc +0 -73
  425. package/dist/lib/configurations/wget/wgetrc +0 -40
  426. package/dist/lib/configurations/zsh/zshrc +0 -51
  427. package/dist/lib/configurations.sh +0 -33
  428. package/dist/lib/functions/README.md +0 -78
  429. package/dist/lib/functions/cdls.sh +0 -14
  430. package/dist/lib/functions/curlheader.sh +0 -22
  431. package/dist/lib/functions/curlstatus.sh +0 -17
  432. package/dist/lib/functions/curltime.sh +0 -33
  433. package/dist/lib/functions/encode64.sh +0 -27
  434. package/dist/lib/functions/environment.sh +0 -38
  435. package/dist/lib/functions/extract.sh +0 -34
  436. package/dist/lib/functions/filehead.sh +0 -4
  437. package/dist/lib/functions/freespace.sh +0 -21
  438. package/dist/lib/functions/genpwd.sh +0 -41
  439. package/dist/lib/functions/goto.sh +0 -16
  440. package/dist/lib/functions/hidehiddenfiles.sh +0 -14
  441. package/dist/lib/functions/hostinfo.sh +0 -27
  442. package/dist/lib/functions/hstats.sh +0 -11
  443. package/dist/lib/functions/httpdebug.sh +0 -9
  444. package/dist/lib/functions/keygen.sh +0 -31
  445. package/dist/lib/functions/last.sh +0 -11
  446. package/dist/lib/functions/logout.sh +0 -12
  447. package/dist/lib/functions/lowercase.sh +0 -29
  448. package/dist/lib/functions/matrix.sh +0 -41
  449. package/dist/lib/functions/mount_read_only.sh +0 -11
  450. package/dist/lib/functions/myproc.sh +0 -9
  451. package/dist/lib/functions/prependpath.sh +0 -21
  452. package/dist/lib/functions/ql.sh +0 -9
  453. package/dist/lib/functions/rd.sh +0 -17
  454. package/dist/lib/functions/remove_disk.sh +0 -11
  455. package/dist/lib/functions/ren.sh +0 -13
  456. package/dist/lib/functions/showhiddenfiles.sh +0 -14
  457. package/dist/lib/functions/size.sh +0 -15
  458. package/dist/lib/functions/stopwatch.sh +0 -15
  459. package/dist/lib/functions/uppercase.sh +0 -29
  460. package/dist/lib/functions/view-source.sh +0 -9
  461. package/dist/lib/functions/vscode.sh +0 -32
  462. package/dist/lib/functions/whoisport.sh +0 -14
  463. package/dist/lib/functions/zipf.sh +0 -16
  464. package/dist/lib/functions.sh +0 -32
  465. package/dist/lib/history.sh +0 -142
  466. package/dist/lib/paths/ant/ant.paths.sh +0 -15
  467. package/dist/lib/paths/default/default.paths.sh +0 -19
  468. package/dist/lib/paths/homebrew/homebrew.paths.sh +0 -27
  469. package/dist/lib/paths/java/java.paths.sh +0 -19
  470. package/dist/lib/paths/maven/maven.paths.sh +0 -18
  471. package/dist/lib/paths/node/node.paths.sh +0 -15
  472. package/dist/lib/paths/nvm/nvm.paths.sh +0 -23
  473. package/dist/lib/paths/pnpm/pnpm.paths.sh +0 -15
  474. package/dist/lib/paths/python/python.paths.sh +0 -36
  475. package/dist/lib/paths/ruby/ruby.paths.sh +0 -25
  476. package/dist/lib/paths/tmux/tmux.paths.sh +0 -12
  477. package/dist/lib/paths.sh +0 -33
  478. package/dist/scripts/backup.sh +0 -95
  479. package/dist/scripts/banner.sh +0 -20
  480. package/dist/scripts/build.sh +0 -41
  481. package/dist/scripts/clean.sh +0 -31
  482. package/dist/scripts/compile.sh +0 -54
  483. package/dist/scripts/copy.sh +0 -108
  484. package/dist/scripts/dotfiles.sh +0 -63
  485. package/dist/scripts/download.sh +0 -35
  486. package/dist/scripts/help.sh +0 -57
  487. package/dist/scripts/ssh.sh +0 -55
  488. package/dist/scripts/unpack.sh +0 -28
  489. /package/{dist/lib/configurations → dot_config}/gem/gemrc +0 -0
package/install.sh ADDED
@@ -0,0 +1,255 @@
1
+ #!/usr/bin/env bash
2
+ # Universal Dotfiles Installer (Zero-Dependency)
3
+ # Usage: sh -c "$(curl -fsSL https://dotfiles.io/install.sh)"
4
+ # (or ./install.sh locally)
5
+ #
6
+ # This installer uses modular libraries from install/lib/:
7
+ # - os_detection.sh : OS and architecture detection
8
+ # - package_managers.sh: Package manager bootstrapping
9
+ # - backup.sh : Dotfile backup functionality
10
+ # - chezmoi.sh : Chezmoi installation and configuration
11
+
12
+ set -euo pipefail
13
+
14
+ # =============================================================================
15
+ # Configuration
16
+ # =============================================================================
17
+
18
+ VERSION="${1:-v0.2.480}"
19
+ REPO_URL="https://github.com/sebastienrousseau/dotfiles.git"
20
+ SOURCE_DIR="$HOME/.dotfiles"
21
+ LEGACY_SOURCE_DIR="$HOME/.local/share/chezmoi"
22
+
23
+ # =============================================================================
24
+ # Colors and Output
25
+ # =============================================================================
26
+
27
+ if [[ -z "${NO_COLOR:-}" ]] && [[ -t 1 ]]; then
28
+ RED='\033[0;31m'
29
+ GREEN='\033[0;32m'
30
+ BLUE='\033[0;34m'
31
+ CYAN='\033[0;36m'
32
+ BOLD='\033[1m'
33
+ NC='\033[0m'
34
+ else
35
+ RED='' GREEN='' BLUE='' CYAN='' BOLD='' NC=''
36
+ fi
37
+
38
+ step() { echo -e "${BLUE}==>${NC} ${BOLD}$1${NC}"; }
39
+ success() { echo -e "${GREEN}==> Done!${NC}"; }
40
+ error() {
41
+ echo -e "${RED}==> Error: $1${NC}"
42
+ exit 1
43
+ }
44
+
45
+ # =============================================================================
46
+ # Banner
47
+ # =============================================================================
48
+
49
+ echo -e "${CYAN}${BOLD}"
50
+ cat <<"EOF"
51
+ ___ _ _ _ _
52
+ / _ \___ | |_ (_)| |(_) ___ ___
53
+ / /_)/ _ \| __|| || || |/ _ \/ __|
54
+ / ___/ (_) | |_ | || || | __/\__ \
55
+ \/ \___/ \__||_||_||_|\___||___/
56
+ Universal Installer
57
+ EOF
58
+ echo -e "${NC}"
59
+
60
+ # =============================================================================
61
+ # Library Loading
62
+ # =============================================================================
63
+
64
+ # Determine script directory for library loading
65
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" 2>/dev/null && pwd)" || SCRIPT_DIR=""
66
+ LIB_DIR="${SCRIPT_DIR}/install/lib"
67
+
68
+ # Source libraries if available (for local installs)
69
+ if [ -d "$LIB_DIR" ]; then
70
+ # shellcheck source=install/lib/os_detection.sh
71
+ source "$LIB_DIR/os_detection.sh"
72
+ # shellcheck source=install/lib/package_managers.sh
73
+ source "$LIB_DIR/package_managers.sh"
74
+ # shellcheck source=install/lib/backup.sh
75
+ source "$LIB_DIR/backup.sh"
76
+ # shellcheck source=install/lib/chezmoi.sh
77
+ source "$LIB_DIR/chezmoi.sh"
78
+ LIBS_LOADED=1
79
+ else
80
+ LIBS_LOADED=0
81
+ fi
82
+
83
+ # =============================================================================
84
+ # Inline Functions (for remote install without libraries)
85
+ # =============================================================================
86
+
87
+ if [ "$LIBS_LOADED" = "0" ]; then
88
+ # Minimal inline implementations when libraries aren't available
89
+ detect_os() {
90
+ OS="$(uname -s)"
91
+ ARCH="$(uname -m)"
92
+ target_os="unknown"
93
+ case "$OS" in
94
+ Darwin) target_os="macos" ;;
95
+ Linux)
96
+ if [ -f /proc/version ] && grep -qi 'microsoft\|WSL' /proc/version; then
97
+ target_os="wsl2"
98
+ elif [ -f /etc/os-release ]; then
99
+ . /etc/os-release
100
+ case "${ID:-}" in
101
+ ubuntu | debian | pop | linuxmint | elementary) target_os="debian" ;;
102
+ fedora | rhel | centos | rocky | alma) target_os="fedora" ;;
103
+ arch | manjaro | endeavouros) target_os="arch" ;;
104
+ *) target_os="linux" ;;
105
+ esac
106
+ else
107
+ target_os="linux"
108
+ fi
109
+ ;;
110
+ esac
111
+ export OS ARCH target_os
112
+ }
113
+
114
+ print_os_info() {
115
+ echo " OS: $OS"
116
+ echo " Arch: $ARCH"
117
+ echo " Target: $target_os"
118
+ }
119
+
120
+ bootstrap_package_manager() {
121
+ if [ "$target_os" = "macos" ] && ! command -v brew >/dev/null; then
122
+ echo " Homebrew not found."
123
+ echo -e "${CYAN} SECURITY NOTE: This will download and execute code from brew.sh${NC}"
124
+ if [ "${DOTFILES_NONINTERACTIVE:-0}" != "1" ]; then
125
+ read -r -p " Continue with Homebrew installation? [y/N] " response
126
+ case "$response" in
127
+ [yY][eE][sS] | [yY]) ;;
128
+ *) error "Homebrew installation cancelled." ;;
129
+ esac
130
+ fi
131
+ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
132
+ [ -x /opt/homebrew/bin/brew ] && eval "$(/opt/homebrew/bin/brew shellenv)"
133
+ [ -x /usr/local/bin/brew ] && eval "$(/usr/local/bin/brew shellenv)"
134
+ fi
135
+ case "$target_os" in
136
+ debian | wsl2) command -v apt-get >/dev/null || error "apt-get required" ;;
137
+ fedora) command -v dnf >/dev/null || error "dnf required" ;;
138
+ arch) command -v pacman >/dev/null || error "pacman required" ;;
139
+ esac
140
+ }
141
+
142
+ check_prerequisites() {
143
+ command -v curl >/dev/null || error "curl is required"
144
+ command -v git >/dev/null || error "git is required"
145
+ }
146
+
147
+ install_chezmoi() {
148
+ if command -v chezmoi >/dev/null; then
149
+ echo " chezmoi already installed: $(chezmoi --version)"
150
+ elif command -v brew >/dev/null; then
151
+ brew install chezmoi
152
+ else
153
+ local bin_dir="$HOME/.local/bin"
154
+ mkdir -p "$bin_dir"
155
+ local installer
156
+ installer=$(mktemp)
157
+ curl -fsSL -o "$installer" https://get.chezmoi.io || error "Failed to download chezmoi"
158
+ [ "$(wc -c <"$installer")" -gt 102400 ] && {
159
+ rm -f "$installer"
160
+ error "Installer too large"
161
+ }
162
+ sh "$installer" -- -b "$bin_dir" 2>/dev/null || {
163
+ rm -f "$installer"
164
+ error "Failed to install chezmoi"
165
+ }
166
+ rm -f "$installer"
167
+ export PATH="$bin_dir:$PATH"
168
+ fi
169
+ }
170
+
171
+ ensure_chezmoi_source() {
172
+ local dir="$1"
173
+ local config_dir="$HOME/.config/chezmoi"
174
+ mkdir -p "$config_dir"
175
+ printf 'sourceDir = "%s"\n' "$dir" >"$config_dir/chezmoi.toml"
176
+ }
177
+
178
+ perform_backup() {
179
+ local backup_dir
180
+ backup_dir="$HOME/.dotfiles.bak.$(date +"%Y%m%d_%H%M%S")"
181
+ local count=0
182
+ if command -v chezmoi >/dev/null && [ -f "$HOME/.config/chezmoi/chezmoi.toml" ]; then
183
+ while IFS= read -r file; do
184
+ [ -z "$file" ] && continue
185
+ if [ -e "$file" ]; then
186
+ local rel="${file#"$HOME"/}"
187
+ mkdir -p "$backup_dir/$(dirname "$rel")"
188
+ cp -a "$file" "$backup_dir/$rel"
189
+ count=$((count + 1))
190
+ fi
191
+ done < <(chezmoi managed --path-style=absolute 2>/dev/null || true)
192
+ fi
193
+ [ "$count" -gt 0 ] && echo " Backed up $count files to $backup_dir" || echo " No files to back up."
194
+ }
195
+ fi
196
+
197
+ # =============================================================================
198
+ # Main Installation Flow
199
+ # =============================================================================
200
+
201
+ # Step 1: Detect Environment
202
+ step "Detecting Environment..."
203
+ detect_os
204
+ print_os_info
205
+
206
+ # Step 2: Bootstrap Package Managers
207
+ step "Checking Prerequisites..."
208
+ bootstrap_package_manager
209
+ check_prerequisites
210
+
211
+ # Step 3: Install Chezmoi
212
+ step "Installing Chezmoi..."
213
+ install_chezmoi
214
+
215
+ # Step 4: Backup Existing Dotfiles
216
+ step "Backing up existing dotfiles..."
217
+ if [ -d "$SOURCE_DIR/.git" ]; then
218
+ ensure_chezmoi_source "$SOURCE_DIR"
219
+ elif [ -d "$LEGACY_SOURCE_DIR/.git" ]; then
220
+ ensure_chezmoi_source "$LEGACY_SOURCE_DIR"
221
+ fi
222
+ perform_backup
223
+
224
+ # Step 5: Apply Configuration
225
+ step "Applying Configuration..."
226
+
227
+ APPLY_FLAGS=()
228
+ [ "${DOTFILES_NONINTERACTIVE:-0}" = "1" ] && APPLY_FLAGS=(--force --no-tty)
229
+
230
+ if [ -d "$SOURCE_DIR/.git" ]; then
231
+ echo " Applying from local source: $SOURCE_DIR"
232
+ ensure_chezmoi_source "$SOURCE_DIR"
233
+ chezmoi apply "${APPLY_FLAGS[@]}"
234
+ elif [ -d "$LEGACY_SOURCE_DIR/.git" ]; then
235
+ echo " Migrating from legacy source: $LEGACY_SOURCE_DIR"
236
+ mv "$LEGACY_SOURCE_DIR" "$SOURCE_DIR"
237
+ ensure_chezmoi_source "$SOURCE_DIR"
238
+ chezmoi apply "${APPLY_FLAGS[@]}"
239
+ else
240
+ echo " Initializing from GitHub (Version: $VERSION)..."
241
+ echo -e "${CYAN} SECURITY NOTE: Cloning pinned version $VERSION${NC}"
242
+
243
+ git clone --depth 1 --branch "$VERSION" "$REPO_URL" "$SOURCE_DIR" 2>/dev/null ||
244
+ { git clone "$REPO_URL" "$SOURCE_DIR" && (cd "$SOURCE_DIR" && git checkout "$VERSION"); }
245
+
246
+ ensure_chezmoi_source "$SOURCE_DIR"
247
+ chezmoi apply "${APPLY_FLAGS[@]}"
248
+ fi
249
+
250
+ # =============================================================================
251
+ # Complete
252
+ # =============================================================================
253
+
254
+ success
255
+ echo -e "${GREEN}Configuration loaded. Please restart your shell.${NC}"
package/package.json CHANGED
@@ -1,90 +1,66 @@
1
1
  {
2
- "assets": [
3
- "./dist/bin/index.js"
4
- ],
5
- "author": "Sebastien Rousseau (https://github.com/sebastienrousseau)",
6
- "autoupdate": {
7
- "fileMap": [
8
- {
9
- "basePath": "dist",
10
- "files": [
11
- "**/*"
12
- ]
13
- }
14
- ],
15
- "source": "git",
16
- "target": "git://github.com/sebastienrousseau/dotfiles.git"
17
- },
2
+ "name": "@sebastienrousseau/dotfiles",
3
+ "version": "0.2.481",
4
+ "description": "The Trusted Shell Platform — Universal dotfiles managed by Chezmoi. Features Bash & Zsh for macOS, Linux & WSL. Rust modern tooling & enterprise-grade security.",
5
+ "main": "install.sh",
18
6
  "bin": {
19
- "dotfiles": "./dist/bin/index.js"
20
- },
21
- "bugs": {
22
- "url": "https://github.com/sebastienrousseau/dotfiles/issues"
23
- },
24
- "contributors": [
25
- "Graham Colgate (https://github.com/gramtech)"
26
- ],
27
- "description": "Dotfiles - A set of macOS / Linux and Windows configuration files - Simply designed to fit your shell life.",
28
- "devDependencies": {
29
- "@types/node": "^18.19.17",
30
- "compressing": "^1.10.0",
31
- "filesizes": "^0.1.2",
32
- "fs-extra": "11.1.1",
33
- "husky": "^8.0.3",
34
- "jsmin": "^1.0.1",
35
- "rimraf": "^5.0.5",
36
- "typescript": "^5.3.3",
37
- "winston": "^3.11.0"
7
+ "dotfiles-install": "./install.sh"
38
8
  },
39
- "directories": {
40
- "bin": "./bin",
41
- "lib": "./lib",
42
- "scripts": "./scripts"
9
+ "scripts": {
10
+ "test": "bash -n install.sh && echo 'Syntax OK'",
11
+ "lint": "shellcheck install.sh scripts/**/*.sh"
43
12
  },
44
- "engines": {
45
- "node": "^12.20.0 || ^14.13.1 || >=20.0.0"
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+https://github.com/sebastienrousseau/dotfiles.git"
46
16
  },
47
- "files": [
48
- "dist/"
49
- ],
50
- "homepage": "https://dotfiles.io/",
51
17
  "keywords": [
52
18
  "dotfiles",
19
+ "shell",
20
+ "zsh",
53
21
  "bash",
54
- "bash-profile",
22
+ "chezmoi",
55
23
  "macos",
56
- "macosx",
57
- "shell",
58
- "homebrew",
59
- "dotfiles-resources"
24
+ "linux",
25
+ "wsl",
26
+ "neovim",
27
+ "tmux",
28
+ "developer-tools",
29
+ "cli",
30
+ "automation",
31
+ "devops",
32
+ "security"
60
33
  ],
34
+ "author": {
35
+ "name": "Sebastien Rousseau",
36
+ "email": "sebastian.rousseau@gmail.com",
37
+ "url": "https://sebastienrousseau.com"
38
+ },
61
39
  "license": "MIT",
62
- "license_URI": "http://www.opensource.org/licenses/mit-license.php",
63
- "lockfileVersion": 1,
64
- "main": "./dist/bin/index.js",
65
- "name": "@sebastienrousseau/dotfiles",
40
+ "bugs": {
41
+ "url": "https://github.com/sebastienrousseau/dotfiles/issues"
42
+ },
43
+ "homepage": "https://dotfiles.io/",
44
+ "funding": {
45
+ "type": "github",
46
+ "url": "https://github.com/sponsors/sebastienrousseau"
47
+ },
48
+ "engines": {
49
+ "node": ">=18.0.0"
50
+ },
66
51
  "publishConfig": {
67
52
  "access": "public",
68
- "registry": "https://npm.pkg.github.com/"
53
+ "registry": "https://registry.npmjs.org/"
69
54
  },
70
- "repository": {
71
- "type": "git",
72
- "url": "git@github.com:sebastienrousseau/dotfiles.git"
73
- },
74
- "types": "./dist/bin/index.d.ts",
75
- "version": "0.2.468",
76
- "scripts": {
77
- "build": "pnpm run backup && pnpm run copy && pnpm run assemble",
78
- "backup": "chmod 755 \"./scripts/backup.sh\" && sh ./scripts/backup.sh backup",
79
- "assemble": "pnpm run clean && npx tsc --build tsconfig.json && pnpm run compile",
80
- "clean": "chmod 755 \"./scripts/clean.sh\" && sh ./scripts/clean.sh clean",
81
- "compile": "chmod 755 \"./scripts/compile.sh\" && ./scripts/compile.sh compile",
82
- "copy": "chmod 755 \"./scripts/copy.sh\" && ./scripts/copy.sh copy",
83
- "help": "chmod 755 \"./scripts/help.sh\" && ./scripts/help.sh help",
84
- "pack": "pnpm pack",
85
- "preinstall": "npx only-allow pnpm",
86
- "release": "pnpm run prepublishOnly && pnpm publish --access public --tag latest --no-git-checks --report-summary",
87
- "start": "node ./dist/bin/index.js",
88
- "test": "echo \"Error: no test specified\" && exit 1"
89
- }
90
- }
55
+ "files": [
56
+ "install.sh",
57
+ "README.md",
58
+ "LICENSE",
59
+ "CHANGELOG.md",
60
+ "docs/",
61
+ "dot_config/",
62
+ "dot_local/",
63
+ "scripts/",
64
+ "templates/"
65
+ ]
66
+ }
@@ -0,0 +1,222 @@
1
+ #!/usr/bin/env bash
2
+ # CI Configuration Validation Script
3
+ # Verifies that all zero-warning policy components are properly configured
4
+
5
+ set -euo pipefail
6
+
7
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
+ REPO_ROOT="$(dirname "$(dirname "$SCRIPT_DIR")")"
9
+
10
+ # Colors for output
11
+ RED='\033[0;31m'
12
+ GREEN='\033[0;32m'
13
+ YELLOW='\033[0;33m'
14
+ BLUE='\033[0;34m'
15
+ NC='\033[0m'
16
+
17
+ echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
18
+ echo -e "${BLUE} CI CONFIGURATION VALIDATOR ${NC}"
19
+ echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
20
+ echo ""
21
+
22
+ ERRORS=0
23
+ WARNINGS=0
24
+
25
+ # Helper functions
26
+ check_file_exists() {
27
+ local file="$1"
28
+ local description="$2"
29
+
30
+ if [[ -f "$file" ]]; then
31
+ echo -e " ${GREEN}✓${NC} $description"
32
+ return 0
33
+ else
34
+ echo -e " ${RED}✗${NC} $description"
35
+ ((ERRORS++))
36
+ return 1
37
+ fi
38
+ }
39
+
40
+ check_pattern_in_file() {
41
+ local file="$1"
42
+ local pattern="$2"
43
+ local description="$3"
44
+
45
+ if [[ -f "$file" ]] && grep -q "$pattern" "$file"; then
46
+ echo -e " ${GREEN}✓${NC} $description"
47
+ return 0
48
+ else
49
+ echo -e " ${RED}✗${NC} $description"
50
+ ((ERRORS++))
51
+ return 1
52
+ fi
53
+ }
54
+
55
+ warn_if_pattern() {
56
+ local file="$1"
57
+ local pattern="$2"
58
+ local description="$3"
59
+
60
+ if [[ -f "$file" ]] && grep -q "$pattern" "$file"; then
61
+ echo -e " ${YELLOW}⚠${NC} $description"
62
+ ((WARNINGS++))
63
+ return 1
64
+ else
65
+ echo -e " ${GREEN}✓${NC} $description"
66
+ return 0
67
+ fi
68
+ }
69
+
70
+ # Check 1: Core CI files exist
71
+ echo -e "${BLUE}1. Core CI Files${NC}"
72
+ check_file_exists "$REPO_ROOT/.github/workflows/ci.yml" "Main CI workflow exists"
73
+ check_file_exists "$REPO_ROOT/.github/workflows/nightly.yml" "Nightly workflow exists"
74
+ check_file_exists "$REPO_ROOT/.github/workflows/security-enhanced.yml" "Security workflow exists"
75
+ check_file_exists "$REPO_ROOT/config/pre-commit-config.yaml" "Pre-commit configuration exists"
76
+ echo ""
77
+
78
+ # Check 2: Zero-warning enforcement
79
+ echo -e "${BLUE}2. Zero-Warning Policy Enforcement${NC}"
80
+ check_pattern_in_file "$REPO_ROOT/.github/workflows/ci.yml" "zero-warning" "Zero-warning policy documented"
81
+ check_pattern_in_file "$REPO_ROOT/.github/workflows/ci.yml" "fail on unformatted code" "Formatter failure enforced"
82
+ check_pattern_in_file "$REPO_ROOT/.github/workflows/ci.yml" "warnings-as-errors" "Warnings treated as errors"
83
+
84
+ # Verify no || true patterns in security steps
85
+ warn_if_pattern "$REPO_ROOT/.github/workflows/ci.yml" "gitleaks.*||.*true" "Gitleaks bypass detected"
86
+ warn_if_pattern "$REPO_ROOT/.github/workflows/ci.yml" "shellcheck.*||.*true" "Shellcheck bypass detected"
87
+ echo ""
88
+
89
+ # Check 3: Test coverage requirements
90
+ echo -e "${BLUE}3. Test Coverage Requirements${NC}"
91
+ check_pattern_in_file "$REPO_ROOT/.github/workflows/ci.yml" "100%" "100% coverage requirement"
92
+ check_pattern_in_file "$REPO_ROOT/.github/workflows/ci.yml" "fail-under" "Coverage threshold enforcement"
93
+
94
+ if [[ -f "$REPO_ROOT/scripts/tests/framework/test_runner.sh" ]]; then
95
+ echo -e " ${GREEN}✓${NC} Test framework exists"
96
+ else
97
+ echo -e " ${RED}✗${NC} Test framework missing"
98
+ ((ERRORS++))
99
+ fi
100
+ echo ""
101
+
102
+ # Check 4: Security scanning
103
+ echo -e "${BLUE}4. Security Scanning Configuration${NC}"
104
+ check_pattern_in_file "$REPO_ROOT/.github/workflows/ci.yml" "security-secrets" "Secret scanning enabled"
105
+ check_pattern_in_file "$REPO_ROOT/.github/workflows/ci.yml" "security-dependencies" "Dependency audit enabled"
106
+ check_pattern_in_file "$REPO_ROOT/config/pre-commit-config.yaml" "gitleaks" "Pre-commit secret scanning"
107
+ check_pattern_in_file "$REPO_ROOT/config/pre-commit-config.yaml" "detect-secrets" "Advanced secret detection"
108
+
109
+ # Verify no piped execution patterns
110
+ warn_if_pattern "$REPO_ROOT/.github/workflows/ci.yml" "curl.*|.*sh" "Dangerous piped execution"
111
+ warn_if_pattern "$REPO_ROOT/.github/workflows/ci.yml" "wget.*|.*bash" "Dangerous piped execution"
112
+ echo ""
113
+
114
+ # Check 5: Performance monitoring
115
+ echo -e "${BLUE}5. Performance Monitoring${NC}"
116
+ check_pattern_in_file "$REPO_ROOT/.github/workflows/ci.yml" "benchmark" "Performance benchmarking enabled"
117
+ check_pattern_in_file "$REPO_ROOT/.github/workflows/ci.yml" "500ms" "Shell startup threshold defined"
118
+ check_pattern_in_file "$REPO_ROOT/.github/workflows/nightly.yml" "performance-tracking" "Nightly performance tracking"
119
+ echo ""
120
+
121
+ # Check 6: Multi-OS support
122
+ echo -e "${BLUE}6. Multi-OS Testing${NC}"
123
+ check_pattern_in_file "$REPO_ROOT/.github/workflows/ci.yml" "ubuntu-latest" "Linux testing enabled"
124
+ check_pattern_in_file "$REPO_ROOT/.github/workflows/ci.yml" "macos-latest" "macOS testing enabled"
125
+ check_pattern_in_file "$REPO_ROOT/.github/workflows/nightly.yml" "matrix:" "OS matrix testing configured"
126
+ echo ""
127
+
128
+ # Check 7: Timeouts and efficiency
129
+ echo -e "${BLUE}7. Timeout and Efficiency Settings${NC}"
130
+ if grep -q "timeout-minutes: [0-9]" "$REPO_ROOT/.github/workflows/ci.yml"; then
131
+ MAX_TIMEOUT=$(grep "timeout-minutes:" "$REPO_ROOT/.github/workflows/ci.yml" |
132
+ awk '{print $2}' | sort -n | tail -1)
133
+ if [[ $MAX_TIMEOUT -le 15 ]]; then
134
+ echo -e " ${GREEN}✓${NC} Job timeouts properly configured (max: ${MAX_TIMEOUT}min)"
135
+ else
136
+ echo -e " ${YELLOW}⚠${NC} Some jobs have long timeouts (max: ${MAX_TIMEOUT}min)"
137
+ ((WARNINGS++))
138
+ fi
139
+ else
140
+ echo -e " ${RED}✗${NC} No timeout configuration found"
141
+ ((ERRORS++))
142
+ fi
143
+
144
+ check_pattern_in_file "$REPO_ROOT/.github/workflows/ci.yml" "cache" "Dependency caching enabled"
145
+ echo ""
146
+
147
+ # Check 8: Branch protection readiness
148
+ echo -e "${BLUE}8. Branch Protection Readiness${NC}"
149
+ check_file_exists "$REPO_ROOT/.github/BRANCH_PROTECTION.md" "Branch protection documentation"
150
+ check_pattern_in_file "$REPO_ROOT/.github/workflows/ci.yml" "quality-gate" "Quality gate job defined"
151
+
152
+ # Check for required status check names
153
+ REQUIRED_CHECKS=(
154
+ "lint-shell"
155
+ "security-secrets"
156
+ "security-dependencies"
157
+ "test-unit"
158
+ "quality-gate"
159
+ )
160
+
161
+ for check in "${REQUIRED_CHECKS[@]}"; do
162
+ if grep -q "name:.*$check" "$REPO_ROOT/.github/workflows/ci.yml"; then
163
+ echo -e " ${GREEN}✓${NC} Required check '$check' defined"
164
+ else
165
+ echo -e " ${RED}✗${NC} Required check '$check' missing"
166
+ ((ERRORS++))
167
+ fi
168
+ done
169
+ echo ""
170
+
171
+ # Check 9: Nightly extended testing
172
+ echo -e "${BLUE}9. Nightly Extended Testing${NC}"
173
+ if [[ -f "$REPO_ROOT/.github/workflows/nightly.yml" ]]; then
174
+ check_pattern_in_file "$REPO_ROOT/.github/workflows/nightly.yml" "dependency-updates" "Dependency monitoring"
175
+ check_pattern_in_file "$REPO_ROOT/.github/workflows/nightly.yml" "beta-tools-test" "Beta tool testing"
176
+ check_pattern_in_file "$REPO_ROOT/.github/workflows/nightly.yml" "security-extended" "Extended security scanning"
177
+ check_pattern_in_file "$REPO_ROOT/.github/workflows/nightly.yml" "cron:" "Scheduled execution"
178
+ else
179
+ echo -e " ${RED}✗${NC} Nightly workflow missing"
180
+ ((ERRORS++))
181
+ fi
182
+ echo ""
183
+
184
+ # Final summary
185
+ echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
186
+ echo -e "${BLUE} VALIDATION SUMMARY ${NC}"
187
+ echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
188
+
189
+ if [[ $ERRORS -eq 0 ]] && [[ $WARNINGS -eq 0 ]]; then
190
+ echo -e "${GREEN}✅ PERFECT: CI configuration fully compliant${NC}"
191
+ echo " - Zero-warning policy properly enforced"
192
+ echo " - All security gates configured"
193
+ echo " - Performance monitoring active"
194
+ echo " - Ready for branch protection"
195
+ elif [[ $ERRORS -eq 0 ]]; then
196
+ echo -e "${YELLOW}⚠️ GOOD: CI mostly compliant with $WARNINGS warning(s)${NC}"
197
+ echo " - Core functionality working"
198
+ echo " - Minor improvements recommended"
199
+ else
200
+ echo -e "${RED}❌ ISSUES: CI configuration has $ERRORS error(s) and $WARNINGS warning(s)${NC}"
201
+ echo " - Critical fixes required before deployment"
202
+ fi
203
+
204
+ echo ""
205
+ echo "Configuration Details:"
206
+ echo " - Repository: $REPO_ROOT"
207
+ echo " - Main CI: .github/workflows/ci.yml"
208
+ echo " - Nightly: .github/workflows/nightly.yml"
209
+ echo " - Pre-commit: config/pre-commit-config.yaml"
210
+ echo ""
211
+ echo "Next Steps:"
212
+ if [[ $ERRORS -gt 0 ]]; then
213
+ echo " 1. Fix critical errors listed above"
214
+ echo " 2. Re-run validation: $0"
215
+ fi
216
+ if [[ $WARNINGS -gt 0 ]]; then
217
+ echo " 3. Address warnings for optimal configuration"
218
+ fi
219
+ echo " 4. Configure branch protection rules per BRANCH_PROTECTION.md"
220
+ echo " 5. Test CI pipeline with a small PR"
221
+
222
+ exit $ERRORS
@@ -0,0 +1,41 @@
1
+ #!/bin/sh
2
+ set -e
3
+
4
+ OUT="${1:-$HOME/.dotfiles/docs/demo/demo.gif}"
5
+ DURATION="${DURATION:-30}"
6
+ FPS="${FPS:-15}"
7
+
8
+ record_ffmpeg() {
9
+ if command -v ffmpeg >/dev/null; then
10
+ echo "Recording with ffmpeg for ${DURATION}s..."
11
+ if [ "$(uname -s)" = "Darwin" ]; then
12
+ # macOS (AVFoundation)
13
+ ffmpeg -y -t "$DURATION" -f avfoundation -i "1:none" -vf "fps=$FPS,scale=1024:-1:flags=lanczos" "$OUT"
14
+ else
15
+ # Linux (X11)
16
+ ffmpeg -y -t "$DURATION" -f x11grab -i :0.0 -vf "fps=$FPS,scale=1024:-1:flags=lanczos" "$OUT"
17
+ fi
18
+ else
19
+ echo "ffmpeg not found. Install it and retry."
20
+ exit 1
21
+ fi
22
+ }
23
+
24
+ record_wf_recorder() {
25
+ if command -v wf-recorder >/dev/null; then
26
+ echo "Recording with wf-recorder for ${DURATION}s..."
27
+ wf-recorder -f "$OUT" -t "$DURATION"
28
+ else
29
+ return 1
30
+ fi
31
+ }
32
+
33
+ if [ "$(uname -s)" = "Linux" ]; then
34
+ if record_wf_recorder; then
35
+ exit 0
36
+ fi
37
+ fi
38
+
39
+ record_ffmpeg
40
+
41
+ printf "Saved demo to %s\n" "$OUT"