@sebastienrousseau/dotfiles 0.2.502 → 0.2.504
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 +109 -9
- package/LICENSE +21 -1283
- package/README.md +6 -4
- 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/02-config-files.md +2 -2
- package/docs/manual/_toc.yml +1 -1
- package/docs/manual/command-index.md +72 -59
- package/docs/operations/CI_COMPOSITES.md +2 -2
- package/docs/operations/COMPLETIONS.md +2 -2
- package/docs/operations/COVERAGE.md +5 -5
- package/docs/operations/HARD_AUDIT_2026.md +11 -11
- package/docs/operations/MAINTENANCE.md +3 -3
- package/docs/operations/MANIFEST.md +127 -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 +6 -6
- package/docs/operations/ROADMAP_V0_2_503.md +134 -0
- package/docs/operations/TESTING.md +17 -0
- package/docs/operations/TRACEABILITY.md +6 -3
- package/docs/operations/VERSION_SYNC.md +4 -4
- package/docs/reference/POWERSHELL_PARITY.md +8 -7
- package/docs/schema/dot-env-v1.json +110 -0
- package/docs/security/CI_EGRESS_ALLOWLIST.md +1 -1
- package/docs/security/CI_PINNING.md +17 -9
- package/docs/security/DEPS_DEV_EXCEPTIONS.md +2 -2
- package/docs/security/FUZZING.md +114 -0
- package/docs/security/INSTALL_VERIFICATION.md +2 -2
- package/docs/security/POLICY_RELEASES.md +2 -2
- package/docs/security/SCORECARD.md +58 -3
- package/docs/security/SHELL_EXEMPTIONS.md +4 -4
- package/docs/security/VERIFY_RELEASE.md +201 -0
- package/install.sh +118 -5
- 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 +5 -5
- package/scripts/diagnostics/conflicts.sh +2 -2
- package/scripts/diagnostics/doctor-unified.sh +3 -3
- package/scripts/diagnostics/doctor.sh +10 -10
- 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 +5 -5
- package/scripts/diagnostics/scorecard.sh +4 -4
- package/scripts/diagnostics/security-score.sh +25 -6
- 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 +13 -3
- package/scripts/diagnostics/workstation-attestation.sh +14 -14
- package/scripts/dot/commands/agent.sh +8 -0
- package/scripts/dot/commands/agents.sh +14 -4
- package/scripts/dot/commands/ai.sh +156 -37
- package/scripts/dot/commands/appearance.sh +2 -2
- package/scripts/dot/commands/core.sh +2 -2
- package/scripts/dot/commands/diagnostics.sh +5 -5
- package/scripts/dot/commands/env-emit.sh +202 -0
- package/scripts/dot/commands/fleet.sh +22 -16
- package/scripts/dot/commands/init.sh +4 -4
- package/scripts/dot/commands/lint.sh +9 -4
- package/scripts/dot/commands/manual.sh +3 -3
- package/scripts/dot/commands/meta.sh +12 -6
- package/scripts/dot/commands/patterns.sh +2 -2
- package/scripts/dot/commands/registry.sh +4 -4
- 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 +13 -3
- 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 +3 -3
- package/scripts/git-hooks/pre-push +13 -0
- package/scripts/ops/ai-setup.sh +1 -1
- package/scripts/ops/bundle.sh +3 -3
- package/scripts/ops/chaos.sh +2 -2
- package/scripts/ops/chezmoi-apply.sh +12 -6
- 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 +4 -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/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-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 +31 -2
- 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 +74 -10
- 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/direnv.fish +0 -4
- 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/conf.d/mise-activate.fish +0 -5
- 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 -141
- 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 -688
- 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 -636
- package/dot_local/bin/executable_dot-ai +0 -36
- package/dot_local/bin/executable_dot-bootstrap +0 -76
- 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 -287
- 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/dot-cli-startup-bench.sh +0 -126
- package/scripts/ci/install-chezmoi-verified.sh +0 -67
- package/scripts/ci/lint-reusable-pins.sh +0 -78
- package/scripts/ci/run-coverage.sh +0 -451
- package/scripts/ci/validate-chezmoidata.sh +0 -25
- package/scripts/ci/validate-ci-config.sh +0 -224
- package/scripts/ci/windows-smoke-test.ps1 +0 -136
- 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 -112
- package/scripts/dot/lib/ui.sh +0 -650
- 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 repository 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 the Phase 1 reorg). | 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 the Phase 1 reorg 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/ during the repo reorg.
|
|
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/ during the repo reorg.
|
|
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/ during the repo reorg.
|
|
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"
|
|
@@ -41,15 +41,15 @@
|
|
|
41
41
|
set -euo pipefail
|
|
42
42
|
|
|
43
43
|
_cleanup_files=()
|
|
44
|
-
trap 'rm -f "${_cleanup_files[@]}"' EXIT
|
|
44
|
+
trap 'set +u; rm -f "${_cleanup_files[@]}" 2>/dev/null; set -u' 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
|
|
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
set -euo pipefail
|
|
5
5
|
|
|
6
6
|
_cleanup_files=()
|
|
7
|
-
trap 'rm -f "${_cleanup_files[@]}"' EXIT
|
|
7
|
+
trap 'set +u; rm -f "${_cleanup_files[@]}" 2>/dev/null; set -u' 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
|
|
@@ -607,11 +607,11 @@ if command -v zsh >/dev/null 2>&1; then
|
|
|
607
607
|
fi
|
|
608
608
|
|
|
609
609
|
# 4. PATH length. Each entry is searched on every command resolution.
|
|
610
|
-
# A mise-managed dev machine routinely adds
|
|
611
|
-
#
|
|
612
|
-
#
|
|
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).
|
|
613
613
|
path_count=$(printf '%s' "${PATH:-}" | tr ':' '\n' | grep -c . || true)
|
|
614
|
-
if [[ "$path_count" -le
|
|
614
|
+
if [[ "$path_count" -le 75 ]]; then
|
|
615
615
|
_ok "PATH length" "$path_count entries"
|
|
616
616
|
elif [[ "$path_count" -le 120 ]]; then
|
|
617
617
|
_warn "PATH length" "$path_count entries — consider pruning"
|
|
@@ -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}"
|
|
@@ -31,9 +31,9 @@
|
|
|
31
31
|
set -euo pipefail
|
|
32
32
|
|
|
33
33
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
34
|
-
# shellcheck source
|
|
34
|
+
# shellcheck source=../../lib/dot/ui.sh
|
|
35
35
|
# shellcheck disable=SC1091
|
|
36
|
-
source "$SCRIPT_DIR
|
|
36
|
+
source "$SCRIPT_DIR/../../lib/dot/ui.sh"
|
|
37
37
|
|
|
38
38
|
# Parse arguments
|
|
39
39
|
STRICT_MODE=0
|
|
@@ -93,14 +93,17 @@ log_warn() {
|
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
MCP_CONFIG="${MCP_CONFIG:-$HOME/.config/claude/mcp_servers.json}"
|
|
96
|
-
if [[ ! -f "$MCP_CONFIG"
|
|
97
|
-
|
|
96
|
+
if [[ ! -f "$MCP_CONFIG" ]]; then
|
|
97
|
+
for cand in "$HOME/.dotfiles/defaults/dot_config/claude/mcp_servers.json" \
|
|
98
|
+
"$HOME/.dotfiles/dot_config/claude/mcp_servers.json"; do
|
|
99
|
+
[[ -f "$cand" ]] && MCP_CONFIG="$cand" && break
|
|
100
|
+
done
|
|
98
101
|
fi
|
|
99
102
|
|
|
100
103
|
REPO_ROOT="${REPO_ROOT:-$(cd "$SCRIPT_DIR/../.." && pwd)}"
|
|
101
|
-
MCP_POLICY_CONFIG="${MCP_POLICY_CONFIG:-$REPO_ROOT/dot_config/dotfiles/mcp-policy.json}"
|
|
102
|
-
MCP_LOCK_CONFIG="${MCP_LOCK_CONFIG:-$REPO_ROOT/dot_config/dotfiles/mcp-lock.json}"
|
|
103
|
-
MCP_REGISTRY_CONFIG="${MCP_REGISTRY_CONFIG:-$REPO_ROOT/dot_config/dotfiles/mcp-registry.json}"
|
|
104
|
+
MCP_POLICY_CONFIG="${MCP_POLICY_CONFIG:-$REPO_ROOT/defaults/dot_config/dotfiles/mcp-policy.json}"
|
|
105
|
+
MCP_LOCK_CONFIG="${MCP_LOCK_CONFIG:-$REPO_ROOT/defaults/dot_config/dotfiles/mcp-lock.json}"
|
|
106
|
+
MCP_REGISTRY_CONFIG="${MCP_REGISTRY_CONFIG:-$REPO_ROOT/defaults/dot_config/dotfiles/mcp-registry.json}"
|
|
104
107
|
|
|
105
108
|
if [[ "$JSON_MODE" -ne 1 ]]; then
|
|
106
109
|
ui_init
|
|
@@ -6,15 +6,15 @@
|
|
|
6
6
|
set -euo pipefail
|
|
7
7
|
|
|
8
8
|
_cleanup_files=()
|
|
9
|
-
trap 'rm -f "${_cleanup_files[@]}"' EXIT
|
|
9
|
+
trap 'set +u; rm -f "${_cleanup_files[@]}" 2>/dev/null; set -u' EXIT
|
|
10
10
|
|
|
11
11
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
12
|
-
# shellcheck source
|
|
12
|
+
# shellcheck source=../../lib/dot/ui.sh
|
|
13
13
|
# shellcheck disable=SC1091
|
|
14
|
-
source "$SCRIPT_DIR
|
|
15
|
-
# shellcheck source
|
|
14
|
+
source "$SCRIPT_DIR/../../lib/dot/ui.sh"
|
|
15
|
+
# shellcheck source=../../lib/dot/log.sh
|
|
16
16
|
# shellcheck disable=SC1091
|
|
17
|
-
source "$SCRIPT_DIR
|
|
17
|
+
source "$SCRIPT_DIR/../../lib/dot/log.sh"
|
|
18
18
|
export DOT_COMMAND="perf"
|
|
19
19
|
|
|
20
20
|
ui_init
|
|
@@ -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
|
export DOT_COMMAND="scorecard"
|
|
16
16
|
|
|
17
17
|
ui_init
|