@sebastienrousseau/dotfiles 0.2.501 → 0.2.503
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.
- package/CHANGELOG.md +155 -4
- package/LICENSE +21 -1283
- package/README.md +40 -8
- package/docs/CONFIG_STRATEGY.md +124 -0
- package/docs/COPYRIGHT +1 -1
- package/docs/GOVERNANCE.md +98 -0
- package/docs/MAINTAINERS.md +41 -0
- package/docs/OPENCODE.md +127 -0
- package/docs/README.md +2 -0
- package/docs/STRUCTURE.md +102 -0
- package/docs/adr/ADR-011-nushell-tier3-keep.md +2 -2
- package/docs/architecture/AI_COST_OPTIMIZATION.md +143 -0
- package/docs/architecture/REPO_LAYOUT.md +8 -8
- package/docs/archive/MILESTONE_v0.2.493.md +1 -1
- package/docs/index.md +2 -2
- package/docs/interop/POWERSHELL.md +1 -1
- package/docs/manual/00-introduction.md +1 -1
- package/docs/manual/01-concepts/02-trust-model.md +1 -1
- package/docs/manual/03-reference/01-dot-cli.md +63 -45
- package/docs/manual/03-reference/02-config-files.md +2 -2
- package/docs/manual/03-reference/05-feature-flags.md +62 -3
- package/docs/manual/_toc.yml +1 -1
- package/docs/manual/command-index.md +72 -55
- package/docs/manual/index.md +66 -0
- package/docs/operations/CI_COMPOSITES.md +2 -2
- package/docs/operations/COMPLETIONS.md +2 -2
- package/docs/operations/COVERAGE.md +40 -6
- package/docs/operations/HARD_AUDIT_2026.md +631 -0
- package/docs/operations/MAINTENANCE.md +3 -3
- package/docs/operations/MANIFEST.md +127 -0
- package/docs/operations/REGISTRY.md +89 -0
- package/docs/operations/RELEASE_PIPELINE.md +130 -0
- package/docs/operations/RFC_v0_2_503_reorganization.md +280 -0
- package/docs/operations/ROADMAP_2026.md +665 -0
- package/docs/operations/ROADMAP_V0_2_503.md +134 -0
- package/docs/operations/TESTING.md +17 -0
- package/docs/operations/TRACEABILITY.md +9 -3
- package/docs/operations/VERSION_SYNC.md +4 -4
- package/docs/reference/POWERSHELL_PARITY.md +81 -0
- package/docs/registry.json +6 -0
- package/docs/schema/dot-env-v1.json +110 -0
- package/docs/security/CI_EGRESS_ALLOWLIST.md +1 -1
- package/docs/security/CI_PINNING.md +121 -0
- package/docs/security/COMMIT_SIGNING.md +138 -0
- package/docs/security/DEPS_DEV_EXCEPTIONS.md +2 -2
- package/docs/security/DISCLOSURE.md +130 -0
- package/docs/security/FUZZING.md +114 -0
- package/docs/security/INSTALL_VERIFICATION.md +2 -2
- package/docs/security/KEY_ROTATION.md +81 -1
- package/docs/security/POLICY_RELEASES.md +2 -2
- package/docs/security/SCORECARD.md +130 -15
- package/docs/security/SHELL_EXEMPTIONS.md +4 -4
- package/docs/security/VERIFY_RELEASE.md +201 -0
- package/docs/security/security-pubkey.asc +15 -0
- package/install.sh +67 -38
- package/package.json +1 -1
- package/scripts/README.md +123 -0
- package/scripts/ci/check-copyright-headers.sh +4 -93
- package/scripts/ci/check-shell-preamble.sh +4 -103
- package/scripts/ci/guard-gitleaks-checkout.sh +4 -54
- package/scripts/diagnostics/a2a-conformance.sh +4 -4
- package/scripts/diagnostics/alias-governance.sh +1 -1
- package/scripts/diagnostics/aliases-cheatsheet.sh +2 -2
- package/scripts/diagnostics/benchmark.sh +4 -4
- package/scripts/diagnostics/conflicts.sh +2 -2
- package/scripts/diagnostics/doctor-unified.sh +2 -2
- package/scripts/diagnostics/doctor.sh +45 -15
- package/scripts/diagnostics/drift-dashboard.sh +2 -2
- package/scripts/diagnostics/health.sh +4 -4
- package/scripts/diagnostics/history-analysis.sh +2 -2
- package/scripts/diagnostics/mcp-doctor.sh +10 -7
- package/scripts/diagnostics/perf.sh +4 -4
- package/scripts/diagnostics/scorecard.sh +4 -4
- package/scripts/diagnostics/security-score.sh +2 -2
- package/scripts/diagnostics/smoke-test.sh +2 -2
- package/scripts/diagnostics/snapshot.sh +2 -2
- package/scripts/diagnostics/verify.sh +4 -4
- package/scripts/diagnostics/version-locks.sh +2 -2
- package/scripts/diagnostics/workstation-attestation.sh +14 -14
- package/scripts/dot/commands/agent.sh +27 -22
- package/scripts/dot/commands/agents.sh +335 -0
- package/scripts/dot/commands/ai.sh +144 -25
- package/scripts/dot/commands/aliases.sh +10 -8
- package/scripts/dot/commands/appearance.sh +2 -2
- package/scripts/dot/commands/core.sh +12 -6
- package/scripts/dot/commands/diagnostics.sh +5 -5
- package/scripts/dot/commands/env-emit.sh +202 -0
- package/scripts/dot/commands/fleet.sh +290 -14
- package/scripts/dot/commands/init.sh +184 -0
- package/scripts/dot/commands/lint.sh +9 -4
- package/scripts/dot/commands/manual.sh +3 -3
- package/scripts/dot/commands/meta.sh +19 -10
- package/scripts/dot/commands/patterns.sh +2 -2
- package/scripts/dot/commands/registry.sh +263 -0
- package/scripts/dot/commands/restore.sh +4 -4
- package/scripts/dot/commands/secrets.sh +4 -3
- package/scripts/dot/commands/security.sh +2 -2
- package/scripts/dot/commands/tools.sh +62 -4
- package/scripts/dot/powershell/Dot.psm1 +199 -0
- package/scripts/fonts/install-nerd-fonts.sh +2 -2
- package/scripts/git-hooks/pre-commit-audit.sh +2 -2
- package/scripts/git-hooks/pre-push +13 -0
- package/scripts/lib/secrets_provider.sh +32 -6
- package/scripts/ops/ai-setup.sh +1 -1
- package/scripts/ops/bundle.sh +2 -2
- package/scripts/ops/chaos.sh +2 -2
- package/scripts/ops/chezmoi-apply.sh +4 -4
- package/scripts/ops/heal.sh +4 -4
- package/scripts/ops/post-apply-repair.sh +2 -2
- package/scripts/ops/prewarm.sh +2 -2
- package/scripts/ops/release.sh +4 -4
- package/scripts/ops/rollback.sh +18 -4
- package/scripts/ops/setup.sh +2 -2
- package/scripts/qa/check-version-consistency.sh +123 -0
- package/scripts/qa/coverage-baseline.sh +1 -1
- package/scripts/qa/docs-coverage.sh +2 -2
- package/scripts/qa/powershell-contract.ps1 +1 -1
- package/scripts/qa/scorecard-snapshot.sh +127 -0
- package/scripts/security/backup.sh +2 -2
- package/scripts/security/check-disclosure-key-expiry.sh +110 -0
- package/scripts/security/dns-doh.sh +4 -4
- package/scripts/security/encryption-check.sh +4 -4
- package/scripts/security/enforce-policies.sh +2 -2
- package/scripts/security/firewall.sh +4 -4
- package/scripts/security/lock-configs.sh +11 -2
- package/scripts/security/lock-screen.sh +4 -4
- package/scripts/security/manage-secrets.sh +2 -2
- package/scripts/security/ssh-cert.sh +2 -2
- package/scripts/security/telemetry-kill.sh +4 -4
- package/scripts/security/usb-safety.sh +4 -4
- package/scripts/theme/extract-heic-frames.sh +114 -0
- package/scripts/theme/rebuild-themes.sh +8 -1
- package/scripts/theme/switch.sh +13 -6
- package/scripts/theme/wallpaper-sync.sh +297 -93
- package/scripts/tuning/linux.sh +2 -2
- package/scripts/tuning/macos.sh +2 -2
- package/scripts/version-sync.sh +58 -7
- package/dot_config/.module-manifest.json +0 -69
- package/dot_config/ai/identity.md +0 -23
- package/dot_config/ai/patterns/architect.md +0 -16
- package/dot_config/ai/patterns/hardener.md +0 -15
- package/dot_config/ai/patterns/refactor.md +0 -15
- package/dot_config/aider/aider.conf.yml +0 -32
- package/dot_config/alacritty/alacritty.toml.tmpl +0 -55
- package/dot_config/ansible/ansible.cfg +0 -11
- package/dot_config/atuin/config.toml.tmpl +0 -47
- package/dot_config/bat/config +0 -23
- package/dot_config/brave-flags.conf.tmpl +0 -7
- package/dot_config/btop/btop.conf +0 -16
- package/dot_config/btop/themes/tokyonight.theme +0 -34
- package/dot_config/bun/bunfig.toml.tmpl +0 -33
- package/dot_config/claude/mcp_servers.json +0 -20
- package/dot_config/containers/containers.conf +0 -14
- package/dot_config/curl/dot_curlrc +0 -18
- package/dot_config/dlv/config.yml +0 -39
- package/dot_config/docker/config.json +0 -15
- package/dot_config/dotfiles/agent-card.json +0 -29
- package/dot_config/dotfiles/agent-profiles.json +0 -92
- package/dot_config/dotfiles/boot/README.md +0 -13
- package/dot_config/dotfiles/grub/README.md +0 -13
- package/dot_config/dotfiles/lock/README.md +0 -13
- package/dot_config/dotfiles/mcp-lock.json +0 -33
- package/dot_config/dotfiles/mcp-policy.json +0 -52
- package/dot_config/dotfiles/mcp-registry.json +0 -47
- package/dot_config/dotfiles/model-registry.json +0 -20
- package/dot_config/dotfiles/policy-bundles.json +0 -38
- package/dot_config/dotfiles/prompt-registry.json +0 -16
- package/dot_config/dotfiles/versions.env +0 -18
- package/dot_config/duf/duf.conf +0 -6
- package/dot_config/duti/defaults.duti +0 -5
- package/dot_config/emoji/emoji.txt +0 -34
- package/dot_config/environment.d/50-ssh-agent.conf +0 -2
- package/dot_config/environment.d/90-wayland.conf +0 -19
- package/dot_config/fastfetch/config.jsonc +0 -28
- package/dot_config/firefox/user.js.tmpl +0 -58
- package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +0 -9
- package/dot_config/fish/completions/dot.fish.tmpl +0 -115
- package/dot_config/fish/conf.d/000-perf-cache.fish +0 -56
- package/dot_config/fish/conf.d/aliases.fish.tmpl +0 -77
- package/dot_config/fish/conf.d/env.fish.tmpl +0 -48
- package/dot_config/fish/conf.d/functions.fish.tmpl +0 -22
- package/dot_config/fish/conf.d/init.fish.tmpl +0 -172
- package/dot_config/fish/config.fish.tmpl +0 -44
- package/dot_config/fish/fish_plugins +0 -1
- package/dot_config/fish/functions/_.fish +0 -3
- package/dot_config/fish/functions/_cached_eval.fish +0 -131
- package/dot_config/fish/functions/_cached_eval_clear.fish +0 -17
- package/dot_config/fish/functions/als.fish +0 -46
- package/dot_config/fish/functions/bg-upgrade.fish +0 -7
- package/dot_config/fish/functions/c.fish +0 -3
- package/dot_config/fish/functions/cat.fish +0 -9
- package/dot_config/fish/functions/d.fish +0 -7
- package/dot_config/fish/functions/dot.fish +0 -34
- package/dot_config/fish/functions/h.fish +0 -3
- package/dot_config/fish/functions/l.fish +0 -7
- package/dot_config/fish/functions/la.fish +0 -7
- package/dot_config/fish/functions/ll.fish +0 -7
- package/dot_config/fish/functions/log_error.fish +0 -13
- package/dot_config/fish/functions/log_info.fish +0 -13
- package/dot_config/fish/functions/lr.fish +0 -7
- package/dot_config/fish/functions/lra.fish +0 -7
- package/dot_config/fish/functions/ls.fish +0 -7
- package/dot_config/fish/functions/lt.fish +0 -7
- package/dot_config/fish/functions/lta.fish +0 -7
- package/dot_config/fish/functions/notify-run.fish +0 -11
- package/dot_config/fish/functions/q.fish +0 -3
- package/dot_config/fish/functions/silent-run.fish +0 -7
- package/dot_config/fish/functions/yy.fish +0 -8
- package/dot_config/flatpak/flatpak.list +0 -4
- package/dot_config/fontconfig/fonts.conf.tmpl +0 -57
- package/dot_config/foot/foot.ini.tmpl +0 -33
- package/dot_config/fuzzel/fuzzel.ini.tmpl +0 -18
- package/dot_config/fzf/fzf.zsh +0 -48
- package/dot_config/gem/gemrc +0 -9
- package/dot_config/gh/config.yml +0 -12
- package/dot_config/ghostty/config.tmpl +0 -165
- package/dot_config/git/allowed_signers.tmpl +0 -18
- package/dot_config/git/attributes +0 -12
- package/dot_config/git/commit-template +0 -10
- package/dot_config/git/hooks/executable_commit-msg +0 -146
- package/dot_config/git/ignore +0 -27
- package/dot_config/gnupg/gpg-agent.conf +0 -11
- package/dot_config/go/golangci.yml +0 -118
- package/dot_config/go/gopls.json +0 -30
- package/dot_config/goose/config.yaml +0 -29
- package/dot_config/gtk-3.0/gtk.css.tmpl +0 -184
- package/dot_config/gtk-3.0/settings.ini.tmpl +0 -27
- package/dot_config/gtk-4.0/gtk.css.tmpl +0 -252
- package/dot_config/gtk-4.0/settings.ini.tmpl +0 -18
- package/dot_config/htop/htoprc +0 -20
- package/dot_config/inputrc +0 -2
- package/dot_config/ipython/profile_default/ipython_config.py +0 -19
- package/dot_config/just/justfile +0 -122
- package/dot_config/k9s/config.yaml +0 -65
- package/dot_config/k9s/skins/catppuccin-mocha.yaml +0 -116
- package/dot_config/kanshi/config.tmpl +0 -22
- package/dot_config/karabiner/karabiner.json +0 -14
- package/dot_config/kitty/kitty.conf.tmpl +0 -53
- package/dot_config/lazydocker/config.yml +0 -186
- package/dot_config/lazygit/config.yml +0 -35
- package/dot_config/mako/config +0 -47
- package/dot_config/mas/masapps.txt +0 -5
- package/dot_config/micro/settings.json +0 -3
- package/dot_config/mimeapps.list +0 -77
- package/dot_config/minikube/config.json +0 -13
- package/dot_config/mise/config.toml +0 -99
- package/dot_config/mongosh/mongoshrc.js +0 -68
- package/dot_config/mpv/input.conf +0 -47
- package/dot_config/mpv/mpv.conf +0 -47
- package/dot_config/mycli/myclirc +0 -67
- package/dot_config/nano/nanorc +0 -28
- package/dot_config/ncdu/config +0 -12
- package/dot_config/niri/config.kdl.tmpl +0 -327
- package/dot_config/nushell/aliases.nu +0 -18
- package/dot_config/nushell/cached_eval.nu +0 -80
- package/dot_config/nushell/completions.nu.tmpl +0 -52
- package/dot_config/nushell/config.nu.tmpl +0 -86
- package/dot_config/nushell/env.nu.tmpl +0 -102
- package/dot_config/nushell/functions.nu.tmpl +0 -17
- package/dot_config/nvim/init.lua +0 -18
- package/dot_config/nvim/lazy-lock.json +0 -58
- package/dot_config/nvim/lua/config/autocmds.lua +0 -107
- package/dot_config/nvim/lua/config/keymaps.lua +0 -92
- package/dot_config/nvim/lua/config/lazy.lua +0 -44
- package/dot_config/nvim/lua/config/options.lua +0 -49
- package/dot_config/nvim/lua/plugins/ai.lua +0 -75
- package/dot_config/nvim/lua/plugins/coding.lua +0 -216
- package/dot_config/nvim/lua/plugins/completion.lua +0 -60
- package/dot_config/nvim/lua/plugins/dap.lua +0 -412
- package/dot_config/nvim/lua/plugins/editor.lua +0 -55
- package/dot_config/nvim/lua/plugins/git.lua +0 -10
- package/dot_config/nvim/lua/plugins/lsp.lua +0 -156
- package/dot_config/nvim/lua/plugins/markdown.lua +0 -18
- package/dot_config/nvim/lua/plugins/rust.lua +0 -34
- package/dot_config/nvim/lua/plugins/sessions.lua +0 -33
- package/dot_config/nvim/lua/plugins/ui.lua +0 -509
- package/dot_config/paru/paru.conf +0 -10
- package/dot_config/pip/pip.conf.tmpl +0 -32
- package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +0 -81
- package/dot_config/pueue/pueue.yml +0 -34
- package/dot_config/pypoetry/config.toml +0 -6
- package/dot_config/pyrightconfig.json +0 -5
- package/dot_config/raycast/README.md +0 -13
- package/dot_config/redis/redisclirc +0 -41
- package/dot_config/ripgrep/ripgreprc +0 -21
- package/dot_config/shell/00-core-paths.sh.tmpl +0 -134
- package/dot_config/shell/05-core-safety.sh +0 -48
- package/dot_config/shell/10-secrets.sh +0 -41
- package/dot_config/shell/40-fzf-defaults.sh.tmpl +0 -17
- package/dot_config/shell/40-ls-colors.sh +0 -49
- package/dot_config/shell/50-logic-functions-core.sh.tmpl +0 -11
- package/dot_config/shell/50-logic-functions.sh.tmpl +0 -11
- package/dot_config/shell/51-logic-functions-extra.sh.tmpl +0 -65
- package/dot_config/shell/90-ux-aliases.sh.tmpl +0 -121
- package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +0 -55
- package/dot_config/shell/Brewfile +0 -207
- package/dot_config/shell/Brewfile.cask +0 -92
- package/dot_config/shell/Brewfile.cli +0 -127
- package/dot_config/shell/README.md +0 -284
- package/dot_config/shell/als_data.txt.tmpl +0 -65
- package/dot_config/shell/custom/auto_ls.zsh +0 -20
- package/dot_config/shell/custom/context_suggest.zsh +0 -68
- package/dot_config/shell/custom/error_analysis.zsh +0 -45
- package/dot_config/sops/dot_sops.yaml +0 -23
- package/dot_config/starship.toml.tmpl +0 -202
- package/dot_config/swaylock/config +0 -43
- package/dot_config/systemd/user/dotfiles-maintenance.service +0 -8
- package/dot_config/systemd/user/dotfiles-maintenance.timer +0 -11
- package/dot_config/systemd/user/pueued.service +0 -12
- package/dot_config/systemd/user/ssh-agent.service +0 -12
- package/dot_config/task/Taskfile.yml +0 -86
- package/dot_config/tflint/tflint.hcl +0 -9
- package/dot_config/tmux/tmux.conf.tmpl +0 -223
- package/dot_config/topgrade.toml.tmpl +0 -54
- package/dot_config/user-dirs.dirs +0 -10
- package/dot_config/vscode/extensions.txt +0 -11
- package/dot_config/vscode/settings.json.tmpl +0 -82
- package/dot_config/waybar/config.jsonc.tmpl +0 -90
- package/dot_config/waybar/style.css.tmpl +0 -211
- package/dot_config/wezterm/wezterm.lua.tmpl +0 -64
- package/dot_config/wget/wgetrc +0 -12
- package/dot_config/xdg-desktop-portal/niri-portals.conf +0 -5
- package/dot_config/yarn/yarnrc.yml +0 -36
- package/dot_config/yazi/keymap.toml +0 -67
- package/dot_config/yazi/theme.toml +0 -102
- package/dot_config/yazi/yazi.toml +0 -40
- package/dot_config/zathura/zathurarc +0 -52
- package/dot_config/zellij/config.kdl.tmpl +0 -79
- package/dot_config/zsh/dot_zprofile +0 -7
- package/dot_config/zsh/dot_zshenv +0 -5
- package/dot_config/zsh/dot_zshrc.tmpl +0 -635
- package/dot_config/zsh/rc.d/00-alias-shims.zsh +0 -99
- package/dot_config/zsh/rc.d/05-ssh-agent.zsh +0 -18
- package/dot_config/zsh/rc.d/10-env.zsh.tmpl +0 -28
- package/dot_config/zsh/rc.d/20-zinit.zsh +0 -65
- package/dot_config/zsh/rc.d/30-options.zsh.tmpl +0 -214
- package/dot_config/zsh/rc.d/40-bell.zsh +0 -20
- package/dot_config/zsh/rc.d/50-login-fortune.zsh +0 -9
- package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +0 -32
- package/dot_local/bin/executable_ai-update +0 -195
- package/dot_local/bin/executable_ai_core +0 -152
- package/dot_local/bin/executable_antigravity +0 -11
- package/dot_local/bin/executable_b64 +0 -84
- package/dot_local/bin/executable_bm +0 -79
- package/dot_local/bin/executable_cb +0 -39
- package/dot_local/bin/executable_dot +0 -596
- package/dot_local/bin/executable_dot-ai +0 -36
- package/dot_local/bin/executable_dot-bootstrap +0 -77
- package/dot_local/bin/executable_dot-launch-or-focus +0 -52
- package/dot_local/bin/executable_dot-load-benchmark +0 -31
- package/dot_local/bin/executable_dot-load-benchmark-pty +0 -77
- package/dot_local/bin/executable_dot-theme-sync +0 -952
- package/dot_local/bin/executable_dot_completion +0 -57
- package/dot_local/bin/executable_dtags +0 -28
- package/dot_local/bin/executable_epoch +0 -67
- package/dot_local/bin/executable_extract +0 -41
- package/dot_local/bin/executable_gbd +0 -52
- package/dot_local/bin/executable_gd +0 -42
- package/dot_local/bin/executable_git-ai-commit +0 -175
- package/dot_local/bin/executable_git-ai-diff +0 -169
- package/dot_local/bin/executable_gl +0 -101
- package/dot_local/bin/executable_hash +0 -161
- package/dot_local/bin/executable_hashsum +0 -160
- package/dot_local/bin/executable_hex +0 -115
- package/dot_local/bin/executable_jsonv +0 -78
- package/dot_local/bin/executable_jwt +0 -94
- package/dot_local/bin/executable_kill-port +0 -75
- package/dot_local/bin/executable_lorem +0 -118
- package/dot_local/bin/executable_mkscript +0 -35
- package/dot_local/bin/executable_monitor +0 -56
- package/dot_local/bin/executable_myip +0 -51
- package/dot_local/bin/executable_notify +0 -24
- package/dot_local/bin/executable_open +0 -38
- package/dot_local/bin/executable_pw +0 -27
- package/dot_local/bin/executable_rec-start +0 -46
- package/dot_local/bin/executable_rec-stop +0 -35
- package/dot_local/bin/executable_regex +0 -132
- package/dot_local/bin/executable_start-niri +0 -8
- package/dot_local/bin/executable_tmux-sessionizer +0 -314
- package/dot_local/bin/executable_tour +0 -177
- package/dot_local/bin/executable_up +0 -23
- package/dot_local/bin/executable_update +0 -142
- package/dot_local/bin/executable_uuid +0 -87
- package/dot_local/bin/executable_win +0 -32
- package/dot_local/bin/executable_yamlv +0 -57
- package/dot_local/share/bash-completion/completions/dot +0 -72
- package/dot_local/share/icons/hicolor/128x128/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/16x16/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/24x24/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/256x256/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/32x32/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/48x48/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/512x512/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/64x64/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/96x96/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/scalable/apps/rousseau.png +0 -0
- package/dot_local/share/man/man1/dot.1 +0 -149
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +0 -64
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +0 -18
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +0 -13
- package/dot_local/share/wayland-sessions/niri.desktop.tmpl +0 -6
- package/dot_local/share/zsh/completions/.keep +0 -0
- package/dot_local/share/zsh/completions/_dot +0 -283
- package/scripts/ci/check-dangerous-chmod.sh +0 -19
- package/scripts/ci/check-deps-dev.sh +0 -236
- package/scripts/ci/check-insecure-tls.sh +0 -61
- package/scripts/ci/check-regression-traceability.sh +0 -67
- package/scripts/ci/install-chezmoi-verified.sh +0 -64
- package/scripts/ci/run-coverage.sh +0 -362
- package/scripts/ci/validate-chezmoidata.sh +0 -25
- package/scripts/ci/validate-ci-config.sh +0 -224
- package/scripts/docs/build-manual.sh +0 -883
- package/scripts/docs/check-manual.sh +0 -213
- package/scripts/dot/lib/bento.sh +0 -50
- package/scripts/dot/lib/log.sh +0 -200
- package/scripts/dot/lib/platform.sh +0 -99
- package/scripts/dot/lib/ui.sh +0 -518
- package/scripts/dot/lib/utils.sh +0 -377
- package/scripts/maintenance/check-updates.sh +0 -131
- package/scripts/release/package-policy-bundles.sh +0 -125
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# `scripts/` — Framework Code
|
|
2
|
+
|
|
3
|
+
Everything in this directory is **framework code**. Nothing here
|
|
4
|
+
deploys to `~/`; chezmoi ignores the whole tree (see
|
|
5
|
+
`.chezmoiignore`). Scripts are invoked by the `dot` CLI, by CI
|
|
6
|
+
workflows, by `chezmoi apply` hooks, or by hand.
|
|
7
|
+
|
|
8
|
+
## Subtree map
|
|
9
|
+
|
|
10
|
+
Per the v0.2.503 reorg (RFC `docs/operations/RFC_v0_2_503_reorganization.md`),
|
|
11
|
+
**repo-only ops** (CI, release, maintenance, docs-generation) have
|
|
12
|
+
moved to the top-level `tools/` tree. `scripts/` retains the
|
|
13
|
+
**runtime-invoked** scripts that the `dot` CLI dispatches to plus a
|
|
14
|
+
few specialised subtrees.
|
|
15
|
+
|
|
16
|
+
### `scripts/` (CLI dispatch + specialised subtrees)
|
|
17
|
+
|
|
18
|
+
| Path | Purpose | Touched by |
|
|
19
|
+
|---|---|---|
|
|
20
|
+
| `scripts/dot/commands/` | Per-subcommand handlers for the `dot` CLI. Sources `lib/dot/*.sh` (moved out of this tree in v0.2.503 Phase 1). | Dispatched by `bin/dot` |
|
|
21
|
+
| `scripts/dot/powershell/` | Native PowerShell module (`Dot.psm1`) exporting `Get-DotVersion` / `Invoke-DotHelp` / `Test-DotAgentsSync`. | `bin/dot.ps1` |
|
|
22
|
+
| `scripts/dot/data/` | Per-command static data (registry seeds, palette tables). | `scripts/dot/commands/*` |
|
|
23
|
+
| `scripts/lib/` | Cross-cutting library helpers reused across multiple scripts. Example: `secrets_provider.sh` (keychain / pass / age dispatch). | `scripts/dot/commands/*`, ops scripts |
|
|
24
|
+
| `scripts/diagnostics/` | `doctor.sh` and its helpers — long-form environment health check. | `dot doctor` |
|
|
25
|
+
| `scripts/security/` | Security-domain ops: `check-disclosure-key-expiry.sh`, `lock-configs.sh`, etc. | `dot security`, CI |
|
|
26
|
+
| `scripts/secrets/` | Secret-bucket utilities (rotation, audit). | `dot secrets` subcommands |
|
|
27
|
+
| `scripts/theme/` | Wallpaper-to-palette extraction logic. | `dot theme rebuild` |
|
|
28
|
+
| `scripts/tools/` | Tool-helpers shipped via `dot tools` (e.g. `cmatrix.sh`, `emoji-picker.sh`, `figlet-banner.sh`, `log-rotate.sh`). Runtime-invoked. | `dot tools`, `dot env` |
|
|
29
|
+
| `scripts/tuning/` | Opt-in OS tuning scripts (`macos.sh`, `linux.sh`). | `dot tune`, manual invocation |
|
|
30
|
+
| `scripts/ops/` | Repo-wide ops: `rollback.sh`, etc. | `dot rollback`, maintenance |
|
|
31
|
+
| `scripts/fonts/` | Nerd Font install helpers. | `dot fonts` |
|
|
32
|
+
| `scripts/git-hooks/` | Git hooks not managed by chezmoi (kept here for portable install). | `install/provision/*` |
|
|
33
|
+
| `scripts/qa/` | Quality-assurance helpers (PowerShell contract tests, version-consistency checks, scorecard snapshot, etc). | `.github/workflows/pr-signature.yml`, `powershell-contract.yml`, doc-drift |
|
|
34
|
+
| `scripts/demo/` | Demonstration helpers (recordings, screenshots). | Manual |
|
|
35
|
+
| `scripts/version-sync.sh` | Bulk version-string propagator (`scripts/qa/check-version-consistency.sh` is the verifier). | Release flow |
|
|
36
|
+
| `scripts/uninstall.sh` | Reverse-of-`install.sh` — user-invoked. | Manual |
|
|
37
|
+
|
|
38
|
+
### `tools/` (repo-only ops, not distributable)
|
|
39
|
+
|
|
40
|
+
| Path | Purpose | Touched by |
|
|
41
|
+
|---|---|---|
|
|
42
|
+
| `tools/ci/` | CI-only helpers: `dot-cli-startup-bench.sh`, `install-chezmoi-verified.sh`, `windows-smoke-test.ps1`, `run-coverage.sh`, etc. | `.github/workflows/*` |
|
|
43
|
+
| `tools/release/` | Release-time tasks. | Release workflow |
|
|
44
|
+
| `tools/maintenance/` | Recurring upkeep: `check-updates.sh`, etc. | Cron, manual |
|
|
45
|
+
| `tools/docs/` | Documentation-generation helpers (manual builds, screenshot CI, `generate-command-index.sh`). | `manual-publish.yml`, `dot manual`, doc-drift |
|
|
46
|
+
|
|
47
|
+
## `scripts/dot/` breakdown
|
|
48
|
+
|
|
49
|
+
The `dot` CLI is implemented as `bin/dot`
|
|
50
|
+
(dispatcher) + `scripts/dot/commands/<cmd>.sh` (per-command
|
|
51
|
+
handlers) + `lib/dot/*.sh` (shared helpers — moved out of
|
|
52
|
+
`scripts/dot/lib/` in v0.2.503 Phase 1 per the
|
|
53
|
+
[reorganisation RFC](../docs/operations/RFC_v0_2_503_reorganization.md)).
|
|
54
|
+
|
|
55
|
+
| Path | Purpose |
|
|
56
|
+
|---|---|
|
|
57
|
+
| `scripts/dot/commands/` | One file per `dot <cmd>` subcommand. Each defines a `cmd_<name>()` function the dispatcher calls. Sources the library via `$SCRIPT_DIR/../../../lib/dot/<X>.sh`. |
|
|
58
|
+
| `scripts/dot/powershell/` | Native PowerShell module — see top-level table. |
|
|
59
|
+
| **`lib/dot/utils.sh`** | Common helpers (resolve_source_dir, validate_name, die, run_script, etc.). |
|
|
60
|
+
| **`lib/dot/ui.sh`** | Single source of truth for CLI output (ui_ok/warn/err/info, ui_header, ui_table_*, ui_spinner_*, ui_confirm, ...). |
|
|
61
|
+
| **`lib/dot/platform.sh`** | OS / shell / WSL detection, path translation. |
|
|
62
|
+
| **`lib/dot/log.sh`** | Structured logging (JSONL audit log when `DOTFILES_AUDIT_LOG=1`). |
|
|
63
|
+
| **`lib/dot/bento.sh`** | The "bento box" layout primitive used by `dot health` and friends. |
|
|
64
|
+
|
|
65
|
+
## Adding a new subcommand
|
|
66
|
+
|
|
67
|
+
1. Create `scripts/dot/commands/<name>.sh`:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
#!/usr/bin/env bash
|
|
71
|
+
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
72
|
+
set -euo pipefail
|
|
73
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
74
|
+
# shellcheck source=../lib/utils.sh
|
|
75
|
+
source "$SCRIPT_DIR/../lib/utils.sh"
|
|
76
|
+
|
|
77
|
+
dot_ui_command_banner "<Title>" "${1:-}"
|
|
78
|
+
|
|
79
|
+
cmd_<name>() {
|
|
80
|
+
# ...
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
cmd_<name>_help() {
|
|
84
|
+
cat <<-EOF
|
|
85
|
+
Usage: dot <name> [args]
|
|
86
|
+
# ...
|
|
87
|
+
EOF
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
2. Add a dispatch arm in `bin/dot`:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
<name>) load_commands "<name>"; cmd_<name> "$@" ;;
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
3. Document it in `docs/manual/03-reference/01-dot-cli.md` and add
|
|
98
|
+
to `docs/manual/command-index.md`.
|
|
99
|
+
|
|
100
|
+
4. Add a help-table entry in `bin/dot`'s
|
|
101
|
+
help renderer.
|
|
102
|
+
|
|
103
|
+
5. Add a unit test under `tests/unit/<domain>/test_<name>.sh`
|
|
104
|
+
(run with `./tests/framework/test_runner.sh`).
|
|
105
|
+
|
|
106
|
+
## Conventions
|
|
107
|
+
|
|
108
|
+
- **Shell style**: 2-space indent, `set -euo pipefail`, shellcheck-clean
|
|
109
|
+
with the project's flags (`--severity=error -e SC1091 -e SC2030 -e SC2031`).
|
|
110
|
+
- **Formatting**: `shfmt -i 2 -ci`.
|
|
111
|
+
- **Output**: NEVER `printf` raw ANSI. Source `scripts/dot/lib/ui.sh`
|
|
112
|
+
and use `ui_ok`, `ui_table_*`, etc.
|
|
113
|
+
- **Exit codes**: 1 = bad usage, 2 = no provider / dependency missing,
|
|
114
|
+
3 = empty result / not found, ≥4 = provider-specific. Document
|
|
115
|
+
per-command in the help text.
|
|
116
|
+
- **Validation**: Always `validate_name "$arg" "tool name"` before
|
|
117
|
+
passing user input to `mise`, `gh`, `ssh`, etc.
|
|
118
|
+
|
|
119
|
+
## See also
|
|
120
|
+
|
|
121
|
+
- `../docs/STRUCTURE.md` — full repository map.
|
|
122
|
+
- `docs/manual/03-reference/01-dot-cli.md` — every `dot <cmd>` documented.
|
|
123
|
+
- `scripts/dot/lib/ui.sh` — the UI primitive library (always source this for output).
|
|
@@ -1,96 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
# are deliberately narrow to avoid false positives on C-style `(c)` comments
|
|
7
|
-
# or the word "token" appearing in running text.
|
|
8
|
-
#
|
|
9
|
-
# Usage:
|
|
10
|
-
# check-copyright-headers.sh [--extensions=sh,lua,nix,...] [--excludes=REGEX]
|
|
11
|
-
#
|
|
12
|
-
# Exit codes:
|
|
13
|
-
# 0 all files have a valid header
|
|
14
|
-
# 1 one or more files are missing a header
|
|
15
|
-
# 2 invalid invocation
|
|
16
|
-
|
|
3
|
+
# Compat shim: the canonical script moved to tools/ci/ in v0.2.503.
|
|
4
|
+
# Pinned reusable workflows on master still reference the old path;
|
|
5
|
+
# this delegates so they keep working until the next pin bump.
|
|
17
6
|
set -euo pipefail
|
|
18
|
-
|
|
19
|
-
EXTENSIONS_DEFAULT="sh,lua,nix,py,js,ts,go,rs,java,cpp,c,h,hpp"
|
|
20
|
-
EXCLUDES_DEFAULT='(^|/)(node_modules|\.git|vendor|target|build)/|\.tmpl$|(^|/)\.chezmoitemplates/'
|
|
21
|
-
|
|
22
|
-
EXTENSIONS="$EXTENSIONS_DEFAULT"
|
|
23
|
-
EXCLUDES="$EXCLUDES_DEFAULT"
|
|
24
|
-
|
|
25
|
-
for arg in "$@"; do
|
|
26
|
-
case "$arg" in
|
|
27
|
-
--extensions=*) EXTENSIONS="${arg#*=}" ;;
|
|
28
|
-
--excludes=*) EXCLUDES="${arg#*=}" ;;
|
|
29
|
-
-h | --help)
|
|
30
|
-
sed -n '2,14p' "$0" | sed 's/^# \{0,1\}//'
|
|
31
|
-
exit 0
|
|
32
|
-
;;
|
|
33
|
-
*)
|
|
34
|
-
echo "Unknown argument: $arg" >&2
|
|
35
|
-
exit 2
|
|
36
|
-
;;
|
|
37
|
-
esac
|
|
38
|
-
done
|
|
39
|
-
|
|
40
|
-
# Narrow patterns — each must be specific enough that running prose cannot match.
|
|
41
|
-
# Deliberately DROPPED: bare "(c) " (false-positives in C comments),
|
|
42
|
-
# bare "All rights reserved" (often appears in vendored prose).
|
|
43
|
-
# Matched by `grep -F`, so these are literal strings.
|
|
44
|
-
PATTERNS=(
|
|
45
|
-
"Copyright (c)"
|
|
46
|
-
"Copyright ©"
|
|
47
|
-
"SPDX-License-Identifier:"
|
|
48
|
-
"© "
|
|
49
|
-
)
|
|
50
|
-
|
|
51
|
-
# Build a ripgrep glob like `{*.sh,*.lua,*.nix}` from the comma list.
|
|
52
|
-
IFS=',' read -r -a exts <<<"$EXTENSIONS"
|
|
53
|
-
glob="{"
|
|
54
|
-
for i in "${!exts[@]}"; do
|
|
55
|
-
[[ $i -gt 0 ]] && glob+=","
|
|
56
|
-
glob+="*.${exts[$i]}"
|
|
57
|
-
done
|
|
58
|
-
glob+="}"
|
|
59
|
-
|
|
60
|
-
mapfile -t all_files < <(rg --files -g "$glob" 2>/dev/null || true)
|
|
61
|
-
|
|
62
|
-
if [[ "${#all_files[@]}" -eq 0 ]]; then
|
|
63
|
-
echo "::notice::No files matched extensions: $EXTENSIONS"
|
|
64
|
-
exit 0
|
|
65
|
-
fi
|
|
66
|
-
|
|
67
|
-
missing=()
|
|
68
|
-
for file in "${all_files[@]}"; do
|
|
69
|
-
if [[ "$file" =~ $EXCLUDES ]]; then
|
|
70
|
-
continue
|
|
71
|
-
fi
|
|
72
|
-
|
|
73
|
-
found=false
|
|
74
|
-
# Read the first 10 lines once; search each pattern against that buffer.
|
|
75
|
-
head_buf="$(head -n 10 "$file" 2>/dev/null || true)"
|
|
76
|
-
for pattern in "${PATTERNS[@]}"; do
|
|
77
|
-
if grep -qF -- "$pattern" <<<"$head_buf"; then
|
|
78
|
-
found=true
|
|
79
|
-
break
|
|
80
|
-
fi
|
|
81
|
-
done
|
|
82
|
-
|
|
83
|
-
$found || missing+=("$file")
|
|
84
|
-
done
|
|
85
|
-
|
|
86
|
-
if [[ "${#missing[@]}" -gt 0 ]]; then
|
|
87
|
-
echo "::error::Copyright header validation failed — ${#missing[@]} file(s) missing header"
|
|
88
|
-
echo "Files missing a recognised copyright header:"
|
|
89
|
-
printf ' - %s\n' "${missing[@]}"
|
|
90
|
-
echo
|
|
91
|
-
echo "Add ONE of the following to the first 10 lines:"
|
|
92
|
-
printf ' - %s\n' "${PATTERNS[@]}"
|
|
93
|
-
exit 1
|
|
94
|
-
fi
|
|
95
|
-
|
|
96
|
-
echo "::notice::All ${#all_files[@]} file(s) have a valid copyright header"
|
|
7
|
+
exec bash "$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)/tools/ci/check-copyright-headers.sh" "$@"
|
|
@@ -1,106 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
7
|
-
# Skip-rules:
|
|
8
|
-
# * Sourced libraries that declare themselves as such via a "Sourced by ..."
|
|
9
|
-
# header comment in the first 15 lines.
|
|
10
|
-
# * Explicit opt-out via `# preamble:skip` marker in the first 15 lines
|
|
11
|
-
# (used by completion files, init fragments, and other library code that
|
|
12
|
-
# is loaded into the caller's shell context).
|
|
13
|
-
# * Files under tests/ (the test runner sets shell options for its children).
|
|
14
|
-
#
|
|
15
|
-
# Invocation:
|
|
16
|
-
# * pre-commit local hook (files passed as args)
|
|
17
|
-
# * standalone: ./scripts/ci/check-shell-preamble.sh # full repo
|
|
18
|
-
# ./scripts/ci/check-shell-preamble.sh file.sh # explicit
|
|
19
|
-
# =============================================================================
|
|
20
|
-
|
|
3
|
+
# Compat shim: the canonical script moved to tools/ci/ in v0.2.503.
|
|
4
|
+
# Pinned reusable workflows on master still reference the old path;
|
|
5
|
+
# this delegates so they keep working until the next pin bump.
|
|
21
6
|
set -euo pipefail
|
|
22
|
-
|
|
23
|
-
check_one() {
|
|
24
|
-
local f="$1"
|
|
25
|
-
|
|
26
|
-
[[ -f "$f" ]] || return 0
|
|
27
|
-
|
|
28
|
-
local shebang
|
|
29
|
-
shebang="$(head -1 "$f" 2>/dev/null || true)"
|
|
30
|
-
|
|
31
|
-
# Only check files with a bash or sh shebang.
|
|
32
|
-
case "$shebang" in
|
|
33
|
-
*bash*) ;;
|
|
34
|
-
*sh) ;;
|
|
35
|
-
*) return 0 ;;
|
|
36
|
-
esac
|
|
37
|
-
|
|
38
|
-
# Skip files declaring themselves as sourced libraries or opting out.
|
|
39
|
-
if head -15 "$f" | grep -Eq '^# *(Sourced by |preamble:skip|shellcheck source-only)'; then
|
|
40
|
-
return 0
|
|
41
|
-
fi
|
|
42
|
-
|
|
43
|
-
# Skip the test suite — tests are sourced by tests/framework/test_runner.sh
|
|
44
|
-
# which manages shell options for its children.
|
|
45
|
-
case "$f" in
|
|
46
|
-
tests/*) return 0 ;;
|
|
47
|
-
# Bulk-sourced fragments. These directories contain hundreds of
|
|
48
|
-
# alias / function / PATH snippets that are sourced into the
|
|
49
|
-
# caller's shell context — adding `set -e` locally would corrupt
|
|
50
|
-
# the caller. Path-skipped en masse rather than annotated per-file
|
|
51
|
-
# (would be 300+ marker comments).
|
|
52
|
-
.chezmoitemplates/aliases/*) return 0 ;;
|
|
53
|
-
.chezmoitemplates/functions/*) return 0 ;;
|
|
54
|
-
.chezmoitemplates/paths/*) return 0 ;;
|
|
55
|
-
# dot_config/shell/* and scripts/dot/lib/* are also sourced but
|
|
56
|
-
# have explicit `# Sourced by` headers as of #854 (defense in
|
|
57
|
-
# depth — the lint also accepts them on header alone).
|
|
58
|
-
dot_local/bin/executable_dot_completion) return 0 ;; # zsh completion, sourced into shell
|
|
59
|
-
esac
|
|
60
|
-
|
|
61
|
-
# Required preamble lives within the first 50 lines (after optional docstring).
|
|
62
|
-
local preamble_re
|
|
63
|
-
case "$shebang" in
|
|
64
|
-
*bash*)
|
|
65
|
-
preamble_re='^[[:space:]]*set[[:space:]]+-([eu]+o[[:space:]]+pipefail|euo[[:space:]]+pipefail|eu[[:space:]]*$)'
|
|
66
|
-
;;
|
|
67
|
-
*sh)
|
|
68
|
-
preamble_re='^[[:space:]]*set[[:space:]]+-eu[o]?'
|
|
69
|
-
;;
|
|
70
|
-
esac
|
|
71
|
-
|
|
72
|
-
if ! head -50 "$f" | grep -Eq "$preamble_re"; then
|
|
73
|
-
echo "MISSING preamble: $f"
|
|
74
|
-
return 1
|
|
75
|
-
fi
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
fail=0
|
|
79
|
-
if [[ $# -gt 0 ]]; then
|
|
80
|
-
for f in "$@"; do
|
|
81
|
-
check_one "$f" || fail=1
|
|
82
|
-
done
|
|
83
|
-
else
|
|
84
|
-
# Full-repo scan
|
|
85
|
-
while IFS= read -r f; do
|
|
86
|
-
check_one "$f" || fail=1
|
|
87
|
-
done < <(git ls-files | grep -E '\.sh$|^dot_local/bin/executable_|^scripts/.+\.sh$')
|
|
88
|
-
fi
|
|
89
|
-
|
|
90
|
-
if [[ $fail -ne 0 ]]; then
|
|
91
|
-
cat >&2 <<'MSG'
|
|
92
|
-
|
|
93
|
-
Some shell scripts are missing the safety preamble.
|
|
94
|
-
* bash → `set -euo pipefail`
|
|
95
|
-
* sh → `set -eu`
|
|
96
|
-
|
|
97
|
-
If the file is a sourced library, add this header to its first 15 lines:
|
|
98
|
-
# Sourced by <parent>.sh; inherits set -euo pipefail
|
|
99
|
-
|
|
100
|
-
If the file is a shell init fragment / completion that must NOT enforce its own
|
|
101
|
-
options on the caller, add this marker instead:
|
|
102
|
-
# preamble:skip
|
|
103
|
-
|
|
104
|
-
MSG
|
|
105
|
-
exit 1
|
|
106
|
-
fi
|
|
7
|
+
exec bash "$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)/tools/ci/check-shell-preamble.sh" "$@"
|
|
@@ -1,57 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
|
|
3
|
+
# Compat shim: the canonical script moved to tools/ci/ in v0.2.503.
|
|
4
|
+
# Pinned reusable workflows on master still reference the old path;
|
|
5
|
+
# this delegates so they keep working until the next pin bump.
|
|
6
6
|
set -euo pipefail
|
|
7
|
-
|
|
8
|
-
check_workflow() {
|
|
9
|
-
local workflow="$1"
|
|
10
|
-
local failed=0
|
|
11
|
-
local line_no
|
|
12
|
-
|
|
13
|
-
while IFS=: read -r line_no _; do
|
|
14
|
-
local start end context
|
|
15
|
-
start=$((line_no - 16))
|
|
16
|
-
end=$((line_no + 2))
|
|
17
|
-
if [[ "$start" -lt 1 ]]; then
|
|
18
|
-
start=1
|
|
19
|
-
fi
|
|
20
|
-
|
|
21
|
-
context="$(sed -n "${start},${end}p" "$workflow")"
|
|
22
|
-
|
|
23
|
-
if [[ "$context" != *"actions/checkout"* ]]; then
|
|
24
|
-
echo "ERROR: $workflow:$line_no missing nearby checkout for gitleaks step."
|
|
25
|
-
failed=1
|
|
26
|
-
continue
|
|
27
|
-
fi
|
|
28
|
-
|
|
29
|
-
if [[ "$context" != *"fetch-depth: 1"* ]]; then
|
|
30
|
-
echo "ERROR: $workflow:$line_no gitleaks step must use checkout fetch-depth: 1."
|
|
31
|
-
failed=1
|
|
32
|
-
fi
|
|
33
|
-
|
|
34
|
-
if [[ "$context" == *"fetch-depth: 0"* ]]; then
|
|
35
|
-
echo "ERROR: $workflow:$line_no gitleaks step contains forbidden fetch-depth: 0."
|
|
36
|
-
failed=1
|
|
37
|
-
fi
|
|
38
|
-
done < <(grep -n "gitleaks/gitleaks-action" "$workflow" || true)
|
|
39
|
-
|
|
40
|
-
return "$failed"
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
main() {
|
|
44
|
-
local failed=0
|
|
45
|
-
|
|
46
|
-
check_workflow ".github/workflows/ci.yml" || failed=1
|
|
47
|
-
check_workflow ".github/workflows/security-enhanced.yml" || failed=1
|
|
48
|
-
|
|
49
|
-
if [[ "$failed" -ne 0 ]]; then
|
|
50
|
-
echo "Gitleaks checkout guard failed."
|
|
51
|
-
exit 1
|
|
52
|
-
fi
|
|
53
|
-
|
|
54
|
-
echo "Gitleaks checkout guard passed."
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
main "$@"
|
|
7
|
+
exec bash "$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)/tools/ci/guard-gitleaks-checkout.sh" "$@"
|
|
@@ -7,8 +7,8 @@ set -euo pipefail
|
|
|
7
7
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
8
8
|
REPO_ROOT="${REPO_ROOT:-$(cd "$SCRIPT_DIR/../.." && pwd)}"
|
|
9
9
|
|
|
10
|
-
# shellcheck source
|
|
11
|
-
source "$SCRIPT_DIR
|
|
10
|
+
# shellcheck source=../../lib/dot/ui.sh
|
|
11
|
+
source "$SCRIPT_DIR/../../lib/dot/ui.sh"
|
|
12
12
|
|
|
13
13
|
JSON_MODE=0
|
|
14
14
|
STRICT_MODE=0
|
|
@@ -35,8 +35,8 @@ command -v jq >/dev/null 2>&1 || {
|
|
|
35
35
|
|
|
36
36
|
a2a_card="$REPO_ROOT/.well-known/agent-card.json"
|
|
37
37
|
legacy_doc="$REPO_ROOT/.well-known/agent.json"
|
|
38
|
-
internal_card="$REPO_ROOT/dot_config/dotfiles/agent-card.json"
|
|
39
|
-
agent_profiles="$REPO_ROOT/dot_config/dotfiles/agent-profiles.json"
|
|
38
|
+
internal_card="$REPO_ROOT/defaults/dot_config/dotfiles/agent-card.json"
|
|
39
|
+
agent_profiles="$REPO_ROOT/defaults/dot_config/dotfiles/agent-profiles.json"
|
|
40
40
|
status="healthy"
|
|
41
41
|
issues=()
|
|
42
42
|
|
|
@@ -110,7 +110,7 @@ if [[ -f "$deprecations_file" ]]; then
|
|
|
110
110
|
alias_found=1
|
|
111
111
|
fi
|
|
112
112
|
function_found=0
|
|
113
|
-
if rg -q --glob '*.sh' --glob '*.aliases.sh' --glob '*.tmpl' "^[[:space:]]*(function[[:space:]]+)?${alias_name}[[:space:]]*\\(\\)" "$SCRIPT_DIR
|
|
113
|
+
if rg -q --glob '*.sh' --glob '*.aliases.sh' --glob '*.tmpl' "^[[:space:]]*(function[[:space:]]+)?${alias_name}[[:space:]]*\\(\\)" "$SCRIPT_DIR/../../defaults/.chezmoitemplates/aliases" "$SCRIPT_DIR/../../scripts/dot"; then
|
|
114
114
|
function_found=1
|
|
115
115
|
fi
|
|
116
116
|
if [[ $alias_found -eq 1 || $function_found -eq 1 ]]; then
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
set -euo pipefail
|
|
4
4
|
|
|
5
5
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
6
|
-
# shellcheck source
|
|
6
|
+
# shellcheck source=../../lib/dot/utils.sh
|
|
7
7
|
# shellcheck disable=SC1091
|
|
8
|
-
source "$SCRIPT_DIR
|
|
8
|
+
source "$SCRIPT_DIR/../../lib/dot/utils.sh"
|
|
9
9
|
|
|
10
10
|
src_dir="$(require_source_dir)"
|
|
11
11
|
manifest="$src_dir/scripts/diagnostics/aliases-manifest.sh"
|
|
@@ -44,12 +44,12 @@ _cleanup_files=()
|
|
|
44
44
|
trap 'rm -f "${_cleanup_files[@]}"' EXIT
|
|
45
45
|
|
|
46
46
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
47
|
-
# shellcheck source
|
|
47
|
+
# shellcheck source=../../lib/dot/ui.sh
|
|
48
48
|
# shellcheck disable=SC1091
|
|
49
|
-
source "$SCRIPT_DIR
|
|
50
|
-
# shellcheck source
|
|
49
|
+
source "$SCRIPT_DIR/../../lib/dot/ui.sh"
|
|
50
|
+
# shellcheck source=../../lib/dot/log.sh
|
|
51
51
|
# shellcheck disable=SC1091
|
|
52
|
-
source "$SCRIPT_DIR
|
|
52
|
+
source "$SCRIPT_DIR/../../lib/dot/log.sh"
|
|
53
53
|
export DOT_COMMAND="benchmark"
|
|
54
54
|
|
|
55
55
|
BENCHMARK_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/dotfiles/benchmarks"
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
set -euo pipefail
|
|
7
7
|
|
|
8
8
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
9
|
-
# shellcheck source
|
|
9
|
+
# shellcheck source=../../lib/dot/ui.sh
|
|
10
10
|
# shellcheck disable=SC1091
|
|
11
|
-
source "$SCRIPT_DIR
|
|
11
|
+
source "$SCRIPT_DIR/../../lib/dot/ui.sh"
|
|
12
12
|
|
|
13
13
|
ui_init
|
|
14
14
|
|
|
@@ -8,9 +8,9 @@ trap 'rm -f "${_cleanup_files[@]}"' EXIT
|
|
|
8
8
|
|
|
9
9
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
10
10
|
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
11
|
-
# shellcheck source
|
|
11
|
+
# shellcheck source=../../lib/dot/ui.sh
|
|
12
12
|
# shellcheck disable=SC1091
|
|
13
|
-
source "$SCRIPT_DIR
|
|
13
|
+
source "$SCRIPT_DIR/../../lib/dot/ui.sh"
|
|
14
14
|
ui_init
|
|
15
15
|
|
|
16
16
|
passthrough=()
|
|
@@ -19,15 +19,15 @@
|
|
|
19
19
|
set -euo pipefail
|
|
20
20
|
|
|
21
21
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
22
|
-
# shellcheck source
|
|
22
|
+
# shellcheck source=../../lib/dot/ui.sh
|
|
23
23
|
# shellcheck disable=SC1091
|
|
24
|
-
source "$SCRIPT_DIR
|
|
25
|
-
# shellcheck source
|
|
24
|
+
source "$SCRIPT_DIR/../../lib/dot/ui.sh"
|
|
25
|
+
# shellcheck source=../../lib/dot/platform.sh
|
|
26
26
|
# shellcheck disable=SC1091
|
|
27
|
-
source "$SCRIPT_DIR
|
|
28
|
-
# shellcheck source
|
|
27
|
+
source "$SCRIPT_DIR/../../lib/dot/platform.sh"
|
|
28
|
+
# shellcheck source=../../lib/dot/log.sh
|
|
29
29
|
# shellcheck disable=SC1091
|
|
30
|
-
source "$SCRIPT_DIR
|
|
30
|
+
source "$SCRIPT_DIR/../../lib/dot/log.sh"
|
|
31
31
|
export DOT_COMMAND="doctor"
|
|
32
32
|
|
|
33
33
|
ui_init
|
|
@@ -548,9 +548,30 @@ fi
|
|
|
548
548
|
# 2. Slow-init tools that are present but NOT wrapped in _cached_eval.
|
|
549
549
|
# Each of these runs uncached on every shell start; common offenders eat
|
|
550
550
|
# 100-500ms apiece on a populated dev machine.
|
|
551
|
+
#
|
|
552
|
+
# Only flag tools that actually emit shell init via `<tool> init <shell>`
|
|
553
|
+
# (or equivalent) and would benefit from caching that output. Plain CLIs
|
|
554
|
+
# like gh/cargo/pnpm/yarn don't have init eval; their completions are
|
|
555
|
+
# cached separately under $ZSH_COMPLETIONS_DIR.
|
|
551
556
|
unwrapped=""
|
|
552
|
-
for tool in nvm fnm pyenv rbenv jenv asdf sdkman conda kubectl helm
|
|
557
|
+
for tool in nvm fnm pyenv rbenv jenv asdf sdkman conda kubectl helm thefuck broot mcfly direnv; do
|
|
553
558
|
command -v "$tool" >/dev/null 2>&1 || continue
|
|
559
|
+
# If the tool is installed but no shell config sources or evals its
|
|
560
|
+
# init (no `$tool env`, `$tool init`, `$tool.sh`, lazy-load stub), it
|
|
561
|
+
# isn't adding startup cost — skip the warning.
|
|
562
|
+
init_referenced=0
|
|
563
|
+
if grep -rIlqE "\\b${tool}([[:space:]]+(env|init|hook)|\\.sh|_lazy_load_${tool}|_dot_lazy[[:space:]]+${tool})" \
|
|
564
|
+
"$HOME/.config/zsh" "$HOME/.config/fish" "$HOME/.config/shell" 2>/dev/null; then
|
|
565
|
+
init_referenced=1
|
|
566
|
+
fi
|
|
567
|
+
((init_referenced == 0)) && continue
|
|
568
|
+
# Tools we lazy-load via shell stubs don't need init-eval cache files.
|
|
569
|
+
case "$tool" in
|
|
570
|
+
fnm | nvm | sdkman)
|
|
571
|
+
grep -rIlqE "_lazy_load_${tool}|_dot_lazy[[:space:]]+${tool}" \
|
|
572
|
+
"$HOME/.config/zsh" "$HOME/.config/fish" 2>/dev/null && continue
|
|
573
|
+
;;
|
|
574
|
+
esac
|
|
554
575
|
found=0
|
|
555
576
|
for shell_dir in zsh bash fish; do
|
|
556
577
|
case "$shell_dir" in
|
|
@@ -585,27 +606,36 @@ if command -v zsh >/dev/null 2>&1; then
|
|
|
585
606
|
fi
|
|
586
607
|
fi
|
|
587
608
|
|
|
588
|
-
# 4. PATH length. Each entry is searched on every command resolution
|
|
589
|
-
#
|
|
609
|
+
# 4. PATH length. Each entry is searched on every command resolution.
|
|
610
|
+
# A mise-managed 2026 dev machine routinely adds 60-90 entries (one per
|
|
611
|
+
# installed tool version + per-shim path), so the warn/fail thresholds
|
|
612
|
+
# reflect that baseline rather than a lean default (~40).
|
|
590
613
|
path_count=$(printf '%s' "${PATH:-}" | tr ':' '\n' | grep -c . || true)
|
|
591
|
-
if [[ "$path_count" -le
|
|
614
|
+
if [[ "$path_count" -le 75 ]]; then
|
|
592
615
|
_ok "PATH length" "$path_count entries"
|
|
593
|
-
elif [[ "$path_count" -le
|
|
616
|
+
elif [[ "$path_count" -le 120 ]]; then
|
|
594
617
|
_warn "PATH length" "$path_count entries — consider pruning"
|
|
595
618
|
else
|
|
596
619
|
_fail "PATH length" "$path_count entries — likely slowing every command"
|
|
597
620
|
fi
|
|
598
621
|
|
|
599
622
|
# 5. Shell coverage. Surface installed shells that the project's caching
|
|
600
|
-
# infrastructure
|
|
623
|
+
# infrastructure doesn't currently maintain caches for. zsh/bash/fish/nu
|
|
624
|
+
# all have a `_cached_eval` analogue; pwsh does not.
|
|
601
625
|
shells_unmanaged=""
|
|
602
626
|
for sh in nu pwsh; do
|
|
603
|
-
command -v "$sh" >/dev/null 2>&1
|
|
627
|
+
command -v "$sh" >/dev/null 2>&1 || continue
|
|
628
|
+
case "$sh" in
|
|
629
|
+
nu)
|
|
630
|
+
[[ -f "$HOME/.config/nushell/cached_eval.nu" ]] && continue
|
|
631
|
+
;;
|
|
632
|
+
esac
|
|
633
|
+
shells_unmanaged="${shells_unmanaged:+$shells_unmanaged, }$sh"
|
|
604
634
|
done
|
|
605
635
|
if [[ -z "$shells_unmanaged" ]]; then
|
|
606
|
-
_ok "shell coverage" "all installed shells
|
|
636
|
+
_ok "shell coverage" "all installed shells have _cached_eval support"
|
|
607
637
|
else
|
|
608
|
-
_warn "shell coverage" "$shells_unmanaged installed —
|
|
638
|
+
_warn "shell coverage" "$shells_unmanaged installed — no _cached_eval helper"
|
|
609
639
|
fi
|
|
610
640
|
|
|
611
641
|
# 6. Zsh hook count. Heavy precmd/preexec functions compound per-prompt.
|
|
@@ -30,9 +30,9 @@
|
|
|
30
30
|
set -euo pipefail
|
|
31
31
|
|
|
32
32
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
33
|
-
# shellcheck source
|
|
33
|
+
# shellcheck source=../../lib/dot/ui.sh
|
|
34
34
|
# shellcheck disable=SC1091
|
|
35
|
-
source "$SCRIPT_DIR
|
|
35
|
+
source "$SCRIPT_DIR/../../lib/dot/ui.sh"
|
|
36
36
|
|
|
37
37
|
JSON_MODE=0
|
|
38
38
|
SHOW_DIFF="${DOTFILES_DRIFT_SHOW_DIFF:-0}"
|
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
set -euo pipefail
|
|
7
7
|
|
|
8
8
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
9
|
-
# shellcheck source
|
|
9
|
+
# shellcheck source=../../lib/dot/ui.sh
|
|
10
10
|
# shellcheck disable=SC1091
|
|
11
|
-
source "$SCRIPT_DIR
|
|
12
|
-
# shellcheck source
|
|
11
|
+
source "$SCRIPT_DIR/../../lib/dot/ui.sh"
|
|
12
|
+
# shellcheck source=../../lib/dot/log.sh
|
|
13
13
|
# shellcheck disable=SC1091
|
|
14
|
-
source "$SCRIPT_DIR
|
|
14
|
+
source "$SCRIPT_DIR/../../lib/dot/log.sh"
|
|
15
15
|
|
|
16
16
|
# Portable has_command (self-contained; no dependency on utils.sh)
|
|
17
17
|
has_command() { command -v "$1" >/dev/null 2>&1; }
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
set -euo pipefail
|
|
4
4
|
|
|
5
5
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
6
|
-
# shellcheck source
|
|
6
|
+
# shellcheck source=../../lib/dot/ui.sh
|
|
7
7
|
# shellcheck disable=SC1091
|
|
8
|
-
source "$SCRIPT_DIR
|
|
8
|
+
source "$SCRIPT_DIR/../../lib/dot/ui.sh"
|
|
9
9
|
|
|
10
10
|
histfile="${HISTFILE:-$HOME/.zsh_history}"
|
|
11
11
|
db="${DOTFILES_HISTORY_DB:-$HOME/.local/share/dotfiles/history.sqlite}"
|