@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,199 @@
|
|
|
1
|
+
# Dot — native PowerShell module for the dotfiles framework.
|
|
2
|
+
#
|
|
3
|
+
# This module provides native PowerShell cmdlets for the subset of
|
|
4
|
+
# `dot` subcommands that don't require bash. Closes Stub rows in
|
|
5
|
+
# docs/reference/POWERSHELL_PARITY.md.
|
|
6
|
+
#
|
|
7
|
+
# Loaded by bin/dot.ps1 dispatcher; cmdlets are also callable
|
|
8
|
+
# directly:
|
|
9
|
+
# Import-Module ./scripts/dot/powershell/Dot.psm1
|
|
10
|
+
# Get-DotVersion
|
|
11
|
+
# Invoke-DotHelp
|
|
12
|
+
# Test-DotAgentsSync -Verbose
|
|
13
|
+
#
|
|
14
|
+
# Tested via scripts/ci/windows-smoke-test.ps1.
|
|
15
|
+
|
|
16
|
+
#requires -Version 7.0
|
|
17
|
+
|
|
18
|
+
Set-StrictMode -Version Latest
|
|
19
|
+
$ErrorActionPreference = 'Stop'
|
|
20
|
+
|
|
21
|
+
# Module-level constants -------------------------------------------------------
|
|
22
|
+
|
|
23
|
+
$script:RepoRoot = if ($env:DOT_REPO_ROOT) {
|
|
24
|
+
$env:DOT_REPO_ROOT
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
# When called from bin/dot.ps1 the dispatcher sets DOT_REPO_ROOT.
|
|
28
|
+
# When imported directly, infer it from this file's path:
|
|
29
|
+
# scripts/dot/powershell/Dot.psm1 → ../../..
|
|
30
|
+
(Resolve-Path (Join-Path $PSScriptRoot '..\..\..')).Path
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
# Post-Phase-4b (v0.2.503) .chezmoidata.toml ships under defaults/.
|
|
34
|
+
# Probe defaults/ first; fall back to legacy root location for older
|
|
35
|
+
# deployments that pre-date the .chezmoiroot activation.
|
|
36
|
+
$script:DataFile = Join-Path $script:RepoRoot 'defaults/.chezmoidata.toml'
|
|
37
|
+
if (-not (Test-Path $script:DataFile)) {
|
|
38
|
+
$script:DataFile = Join-Path $script:RepoRoot '.chezmoidata.toml'
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
# Helpers ---------------------------------------------------------------------
|
|
42
|
+
|
|
43
|
+
function script:Get-DotfilesVersionFromData {
|
|
44
|
+
if (-not (Test-Path $script:DataFile)) {
|
|
45
|
+
throw "Cannot read $script:DataFile (set DOT_REPO_ROOT to override)"
|
|
46
|
+
}
|
|
47
|
+
$line = Get-Content $script:DataFile |
|
|
48
|
+
Where-Object { $_ -match '^dotfiles_version\s*=\s*"([^"]+)"' } |
|
|
49
|
+
Select-Object -First 1
|
|
50
|
+
if (-not $line) {
|
|
51
|
+
throw "dotfiles_version not found in $script:DataFile"
|
|
52
|
+
}
|
|
53
|
+
if ($line -notmatch '"([^"]+)"') {
|
|
54
|
+
throw "Could not parse dotfiles_version from line: $line"
|
|
55
|
+
}
|
|
56
|
+
return $Matches[1]
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function script:Write-DotBanner {
|
|
60
|
+
param([string]$Section)
|
|
61
|
+
if ($env:NO_COLOR) {
|
|
62
|
+
Write-Host "Dot · $Section"
|
|
63
|
+
return
|
|
64
|
+
}
|
|
65
|
+
$esc = [char]27
|
|
66
|
+
Write-Host "$esc[1;38;5;212mDot · $Section$esc[0m"
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
# Public cmdlets --------------------------------------------------------------
|
|
70
|
+
|
|
71
|
+
<#
|
|
72
|
+
.SYNOPSIS
|
|
73
|
+
Print the dotfiles framework version.
|
|
74
|
+
|
|
75
|
+
.DESCRIPTION
|
|
76
|
+
Native PowerShell implementation of `dot version`. Reads the
|
|
77
|
+
canonical version from .chezmoidata.toml (the single source of
|
|
78
|
+
truth) — does NOT shell out to bash.
|
|
79
|
+
|
|
80
|
+
.EXAMPLE
|
|
81
|
+
Get-DotVersion
|
|
82
|
+
0.2.503
|
|
83
|
+
|
|
84
|
+
.EXAMPLE
|
|
85
|
+
Get-DotVersion -AsObject | ConvertTo-Json
|
|
86
|
+
{
|
|
87
|
+
"Version": "0.2.503",
|
|
88
|
+
"Source": "...\\.chezmoidata.toml",
|
|
89
|
+
"Native": true
|
|
90
|
+
}
|
|
91
|
+
#>
|
|
92
|
+
function Get-DotVersion {
|
|
93
|
+
[CmdletBinding()]
|
|
94
|
+
param(
|
|
95
|
+
[switch]$AsObject
|
|
96
|
+
)
|
|
97
|
+
$version = Get-DotfilesVersionFromData
|
|
98
|
+
if ($AsObject) {
|
|
99
|
+
return [pscustomobject]@{
|
|
100
|
+
Version = $version
|
|
101
|
+
Source = $script:DataFile
|
|
102
|
+
Native = $true
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return $version
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
<#
|
|
109
|
+
.SYNOPSIS
|
|
110
|
+
Print the dot CLI help overview.
|
|
111
|
+
|
|
112
|
+
.DESCRIPTION
|
|
113
|
+
Native PowerShell implementation of `dot help`. Reads command
|
|
114
|
+
metadata from CLAUDE.md / the dispatcher's help table; does
|
|
115
|
+
NOT shell out to bash.
|
|
116
|
+
|
|
117
|
+
The full Linux-style help (every subcommand grouped by category)
|
|
118
|
+
requires the bash dispatcher; this cmdlet shows the Windows-
|
|
119
|
+
native subset.
|
|
120
|
+
#>
|
|
121
|
+
function Invoke-DotHelp {
|
|
122
|
+
[CmdletBinding()]
|
|
123
|
+
param()
|
|
124
|
+
$version = Get-DotfilesVersionFromData
|
|
125
|
+
Write-DotBanner -Section 'Help'
|
|
126
|
+
Write-Host ''
|
|
127
|
+
Write-Host " Version v$version"
|
|
128
|
+
Write-Host " Repo https://github.com/sebastienrousseau/dotfiles"
|
|
129
|
+
Write-Host " Docs https://github.com/sebastienrousseau/dotfiles/blob/master/docs/manual/"
|
|
130
|
+
Write-Host ''
|
|
131
|
+
Write-Host 'Native PowerShell commands (no bash required):'
|
|
132
|
+
Write-Host ''
|
|
133
|
+
Write-Host ' Get-DotVersion Print framework version'
|
|
134
|
+
Write-Host ' Invoke-DotHelp This screen'
|
|
135
|
+
Write-Host ' Test-DotAgentsSync Check AGENTS.md ↔ CLAUDE.md sync'
|
|
136
|
+
Write-Host ''
|
|
137
|
+
Write-Host 'Bash-bridged subcommands (require bash on PATH):'
|
|
138
|
+
Write-Host ''
|
|
139
|
+
Write-Host ' dot doctor Deep environment audit'
|
|
140
|
+
Write-Host ' dot env list List installed mise tools'
|
|
141
|
+
Write-Host ' dot env emit Emit v1 environment manifest'
|
|
142
|
+
Write-Host ' dot agents render Re-render every AGENTS.md harness'
|
|
143
|
+
Write-Host ' dot fleet status Single-node fleet status (Full on PowerShell)'
|
|
144
|
+
Write-Host ''
|
|
145
|
+
Write-Host 'See: dot help all (via bash) — full command index'
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
<#
|
|
149
|
+
.SYNOPSIS
|
|
150
|
+
Verify that AGENTS.md is in sync with CLAUDE.md.
|
|
151
|
+
|
|
152
|
+
.DESCRIPTION
|
|
153
|
+
Native PowerShell implementation of `dot agents check`. Both
|
|
154
|
+
files share a "Project Overview" paragraph that is the canonical
|
|
155
|
+
sync surface. If they diverge, AGENTS.md needs re-rendering
|
|
156
|
+
(run `dot agents render` via bash; native PowerShell render is
|
|
157
|
+
a separate ticket).
|
|
158
|
+
|
|
159
|
+
.OUTPUTS
|
|
160
|
+
[bool] — $true when in sync, $false otherwise.
|
|
161
|
+
|
|
162
|
+
.EXAMPLE
|
|
163
|
+
if (-not (Test-DotAgentsSync)) {
|
|
164
|
+
Write-Warning 'AGENTS.md is stale; run: bash dot_local/bin/executable_dot agents render'
|
|
165
|
+
}
|
|
166
|
+
#>
|
|
167
|
+
function Test-DotAgentsSync {
|
|
168
|
+
[CmdletBinding()]
|
|
169
|
+
[OutputType([bool])]
|
|
170
|
+
param()
|
|
171
|
+
$claude = Join-Path $script:RepoRoot 'CLAUDE.md'
|
|
172
|
+
$agents = Join-Path $script:RepoRoot 'AGENTS.md'
|
|
173
|
+
foreach ($f in @($claude, $agents)) {
|
|
174
|
+
if (-not (Test-Path $f)) {
|
|
175
|
+
Write-Error "missing: $f"
|
|
176
|
+
return $false
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
# Both files declare: "Chezmoi-managed dotfiles for macOS, Linux,
|
|
180
|
+
# WSL, and PowerShell 7.5+. Version `0.2.503`."
|
|
181
|
+
# That single line is the canonical sync surface — its content
|
|
182
|
+
# is generated from the same template by `dot agents render`.
|
|
183
|
+
$claudeLine = (Select-String -Path $claude -Pattern '^Chezmoi-managed dotfiles' -SimpleMatch:$false |
|
|
184
|
+
Select-Object -First 1).Line
|
|
185
|
+
$agentsLine = (Select-String -Path $agents -Pattern '^Chezmoi-managed dotfiles' -SimpleMatch:$false |
|
|
186
|
+
Select-Object -First 1).Line
|
|
187
|
+
if (-not $claudeLine -or -not $agentsLine) {
|
|
188
|
+
Write-Verbose "sync surface line not found — claude:[$claudeLine] agents:[$agentsLine]"
|
|
189
|
+
return $false
|
|
190
|
+
}
|
|
191
|
+
if ($claudeLine -ne $agentsLine) {
|
|
192
|
+
Write-Verbose "drift detected:`n CLAUDE.md: $claudeLine`n AGENTS.md: $agentsLine"
|
|
193
|
+
return $false
|
|
194
|
+
}
|
|
195
|
+
Write-Verbose 'AGENTS.md sync surface matches CLAUDE.md'
|
|
196
|
+
return $true
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
Export-ModuleMember -Function Get-DotVersion, Invoke-DotHelp, Test-DotAgentsSync
|
|
@@ -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
|
ui_init
|
|
11
11
|
ui_header "Nerd Fonts"
|
|
@@ -6,7 +6,7 @@
|
|
|
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
|
# ANSI Colors
|
|
12
12
|
RED='\033[0;31m'
|
|
@@ -33,7 +33,7 @@ echo -n " 🔍 Scanning for secrets... "
|
|
|
33
33
|
# Exclude assignments to values containing common placeholder strings or within template expressions
|
|
34
34
|
SENSITIVE_PATTERNS="(GITHUB_TOKEN|API_KEY|SECRET|password|private_key|AKIA[0-9A-Z]{16})[[:space:]]*[:=]"
|
|
35
35
|
# Exclusions list for legitimate variable checks or documentation
|
|
36
|
-
SECRET_EXCLUDES="test_|assertions.sh|.pre-commit|README|CHANGELOG|FEATURES.md|
|
|
36
|
+
SECRET_EXCLUDES="test_|assertions.sh|.pre-commit|README|CHANGELOG|FEATURES.md|docs/|install/lib/|.chezmoitemplates/|mcp-doctor.sh|\.github/workflows/"
|
|
37
37
|
# Also exclude .tmpl files from secret scanning as they contain many false positive markers
|
|
38
38
|
if echo "$STAGED_FILES" | grep -v "\.tmpl" | xargs grep -EiE "$SENSITIVE_PATTERNS" /dev/null | grep -vE "$SECRET_EXCLUDES" | grep -viE "dummy|placeholder|example|test|sk-placeholder|\\{\\{" >/dev/null 2>&1; then
|
|
39
39
|
printf '%b\\n' "${RED}FAILED${NC}"
|
|
@@ -140,6 +140,6 @@ if [[ $FAILED -eq 1 ]]; then
|
|
|
140
140
|
printf '%b\\n' " (Use --no-verify to bypass if absolutely necessary)"
|
|
141
141
|
exit 1
|
|
142
142
|
else
|
|
143
|
-
printf '%b\n' "${GREEN}${BOLD}✅ Audit passed.${NC} v0.2.
|
|
143
|
+
printf '%b\n' "${GREEN}${BOLD}✅ Audit passed.${NC} v0.2.504 standards maintained."
|
|
144
144
|
exit 0
|
|
145
145
|
fi
|
|
@@ -90,3 +90,16 @@ if [ "${DOTFILES_ALLOW_UNSKIPPED_PUSH:-}" = "1" ]; then
|
|
|
90
90
|
fi
|
|
91
91
|
|
|
92
92
|
bash "$repo_root/scripts/qa/reliability-audit.sh" --quick
|
|
93
|
+
|
|
94
|
+
# Step 4 — version-string consistency. Catches the case where the
|
|
95
|
+
# canonical version in .chezmoidata.toml advanced but a human-visible
|
|
96
|
+
# surface (CLI banner, man page, README badge) wasn't bumped. The
|
|
97
|
+
# script is cheap (~8 grep calls); failure tells the user exactly
|
|
98
|
+
# which file drifted and offers --fix.
|
|
99
|
+
bash "$repo_root/scripts/qa/check-version-consistency.sh" --quiet || {
|
|
100
|
+
echo "" >&2
|
|
101
|
+
echo "Pre-push blocked: version-string drift detected." >&2
|
|
102
|
+
echo "Run: scripts/qa/check-version-consistency.sh" >&2
|
|
103
|
+
echo "Then: scripts/qa/check-version-consistency.sh --fix (optional auto-fix)" >&2
|
|
104
|
+
exit 1
|
|
105
|
+
}
|
package/scripts/ops/ai-setup.sh
CHANGED
package/scripts/ops/bundle.sh
CHANGED
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
set -euo pipefail
|
|
6
6
|
|
|
7
7
|
_cleanup_files=()
|
|
8
|
-
trap 'rm -f "${_cleanup_files[@]}"' EXIT
|
|
8
|
+
trap 'set +u; rm -f "${_cleanup_files[@]}" 2>/dev/null; set -u' EXIT
|
|
9
9
|
|
|
10
10
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
11
11
|
# shellcheck disable=SC1091
|
|
12
|
-
source "$SCRIPT_DIR/dot/
|
|
12
|
+
source "$SCRIPT_DIR/../lib/dot/ui.sh"
|
|
13
13
|
# shellcheck disable=SC1091
|
|
14
|
-
source "$SCRIPT_DIR/dot/
|
|
14
|
+
source "$SCRIPT_DIR/../lib/dot/log.sh"
|
|
15
15
|
export DOT_COMMAND="bundle"
|
|
16
16
|
|
|
17
17
|
# Concurrency guard
|
package/scripts/ops/chaos.sh
CHANGED
|
@@ -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
|
ui_init
|
|
13
13
|
|
|
14
14
|
if [[ "${1:-}" != "--force" ]]; then
|
|
@@ -3,17 +3,23 @@
|
|
|
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
|
|
9
|
-
# shellcheck source
|
|
8
|
+
source "$SCRIPT_DIR/../../lib/dot/ui.sh"
|
|
9
|
+
# shellcheck source=../../lib/dot/log.sh
|
|
10
10
|
# shellcheck disable=SC1091
|
|
11
|
-
source "$SCRIPT_DIR
|
|
11
|
+
source "$SCRIPT_DIR/../../lib/dot/log.sh"
|
|
12
12
|
export DOT_COMMAND="apply"
|
|
13
13
|
|
|
14
|
-
# Temp file cleanup
|
|
14
|
+
# Temp file cleanup. `set +u` guards the array expansion: on bash 3.2
|
|
15
|
+
# (macOS) expanding an empty array under `set -u` is an "unbound
|
|
16
|
+
# variable" error, which would fire on every clean `dot sync`.
|
|
15
17
|
_TMPFILES=()
|
|
16
|
-
cleanup() {
|
|
18
|
+
cleanup() {
|
|
19
|
+
set +u
|
|
20
|
+
rm -f "${_TMPFILES[@]}" 2>/dev/null
|
|
21
|
+
set -u
|
|
22
|
+
}
|
|
17
23
|
trap cleanup EXIT
|
|
18
24
|
|
|
19
25
|
# Help flag
|
package/scripts/ops/heal.sh
CHANGED
|
@@ -21,12 +21,12 @@ trap cleanup EXIT
|
|
|
21
21
|
|
|
22
22
|
# Configuration
|
|
23
23
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
24
|
-
# shellcheck source
|
|
24
|
+
# shellcheck source=../../lib/dot/ui.sh
|
|
25
25
|
# shellcheck disable=SC1091
|
|
26
|
-
source "$SCRIPT_DIR
|
|
27
|
-
# shellcheck source
|
|
26
|
+
source "$SCRIPT_DIR/../../lib/dot/ui.sh"
|
|
27
|
+
# shellcheck source=../../lib/dot/log.sh
|
|
28
28
|
# shellcheck disable=SC1091
|
|
29
|
-
source "$SCRIPT_DIR
|
|
29
|
+
source "$SCRIPT_DIR/../../lib/dot/log.sh"
|
|
30
30
|
DOT_COMMAND="heal"
|
|
31
31
|
REPO_ROOT="$(dirname "$(dirname "$SCRIPT_DIR")")"
|
|
32
32
|
DOTFILES_SOURCE="$REPO_ROOT"
|
|
@@ -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
|
ZWC_CACHE_DIRS_DEFAULT=("$HOME/.config/shell" "$HOME/.config/zsh")
|
|
11
11
|
|
package/scripts/ops/prewarm.sh
CHANGED
|
@@ -6,9 +6,9 @@ set -euo pipefail
|
|
|
6
6
|
|
|
7
7
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
8
8
|
# shellcheck disable=SC1091
|
|
9
|
-
source "$SCRIPT_DIR/dot/
|
|
9
|
+
source "$SCRIPT_DIR/../lib/dot/ui.sh"
|
|
10
10
|
# shellcheck disable=SC1091
|
|
11
|
-
source "$SCRIPT_DIR/dot/
|
|
11
|
+
source "$SCRIPT_DIR/../lib/dot/log.sh"
|
|
12
12
|
export DOT_COMMAND="prewarm"
|
|
13
13
|
|
|
14
14
|
# Prevent concurrent execution
|
package/scripts/ops/release.sh
CHANGED
|
@@ -10,12 +10,12 @@ set -euo pipefail
|
|
|
10
10
|
|
|
11
11
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
12
12
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
13
|
-
# shellcheck source
|
|
13
|
+
# shellcheck source=../../lib/dot/ui.sh
|
|
14
14
|
# shellcheck disable=SC1091
|
|
15
|
-
source "$SCRIPT_DIR
|
|
16
|
-
# shellcheck source
|
|
15
|
+
source "$SCRIPT_DIR/../../lib/dot/ui.sh"
|
|
16
|
+
# shellcheck source=../../lib/dot/log.sh
|
|
17
17
|
# shellcheck disable=SC1091
|
|
18
|
-
source "$SCRIPT_DIR
|
|
18
|
+
source "$SCRIPT_DIR/../../lib/dot/log.sh"
|
|
19
19
|
export DOT_COMMAND="release"
|
|
20
20
|
ui_init
|
|
21
21
|
|
package/scripts/ops/rollback.sh
CHANGED
|
@@ -14,12 +14,12 @@ trap 'set +u; rm -f "${_cleanup_files[@]}" 2>/dev/null; set -u' EXIT
|
|
|
14
14
|
|
|
15
15
|
# Configuration
|
|
16
16
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
17
|
-
# shellcheck source
|
|
17
|
+
# shellcheck source=../../lib/dot/ui.sh
|
|
18
18
|
# shellcheck disable=SC1091
|
|
19
|
-
source "$SCRIPT_DIR
|
|
20
|
-
# shellcheck source
|
|
19
|
+
source "$SCRIPT_DIR/../../lib/dot/ui.sh"
|
|
20
|
+
# shellcheck source=../../lib/dot/log.sh
|
|
21
21
|
# shellcheck disable=SC1091
|
|
22
|
-
source "$SCRIPT_DIR
|
|
22
|
+
source "$SCRIPT_DIR/../../lib/dot/log.sh"
|
|
23
23
|
export DOT_COMMAND="rollback"
|
|
24
24
|
REPO_ROOT="$(dirname "$(dirname "$SCRIPT_DIR")")"
|
|
25
25
|
# Resolve symlinks for consistent path handling
|
package/scripts/ops/setup.sh
CHANGED
|
@@ -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
|
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
3
|
+
#
|
|
4
|
+
# Verify that every "live" version reference matches the canonical
|
|
5
|
+
# version in .chezmoidata.toml. The intent is to catch drift between
|
|
6
|
+
# the source-of-truth and the human-visible surfaces (CLI banner, man
|
|
7
|
+
# page, badge URL, etc.) BEFORE it ships.
|
|
8
|
+
#
|
|
9
|
+
# Historical references (CHANGELOG entries, audit-doc closed-cycle
|
|
10
|
+
# tables, roadmap docs that mention previous versions) are NOT
|
|
11
|
+
# checked — they are intentionally pinned to the version they
|
|
12
|
+
# describe.
|
|
13
|
+
#
|
|
14
|
+
# Usage:
|
|
15
|
+
# scripts/qa/check-version-consistency.sh # verify
|
|
16
|
+
# scripts/qa/check-version-consistency.sh --fix # auto-fix
|
|
17
|
+
# scripts/qa/check-version-consistency.sh --quiet # rc-only
|
|
18
|
+
#
|
|
19
|
+
# Exit codes:
|
|
20
|
+
# 0 every live reference matches
|
|
21
|
+
# 1 drift detected (with diff printed unless --quiet)
|
|
22
|
+
# 2 bad usage / missing canonical version
|
|
23
|
+
|
|
24
|
+
set -euo pipefail
|
|
25
|
+
|
|
26
|
+
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
27
|
+
cd "$REPO_ROOT"
|
|
28
|
+
|
|
29
|
+
# ── Parse flags ─────────────────────────────────────────────────────────
|
|
30
|
+
fix=0
|
|
31
|
+
quiet=0
|
|
32
|
+
for arg in "$@"; do
|
|
33
|
+
case "$arg" in
|
|
34
|
+
--fix) fix=1 ;;
|
|
35
|
+
--quiet | -q) quiet=1 ;;
|
|
36
|
+
-h | --help)
|
|
37
|
+
sed -n '2,21p' "$0"
|
|
38
|
+
exit 0
|
|
39
|
+
;;
|
|
40
|
+
*)
|
|
41
|
+
echo "unknown flag: $arg" >&2
|
|
42
|
+
exit 2
|
|
43
|
+
;;
|
|
44
|
+
esac
|
|
45
|
+
done
|
|
46
|
+
|
|
47
|
+
_log() { ((quiet)) || printf '%s\n' "$*"; }
|
|
48
|
+
_err() { printf 'check-version-consistency: %s\n' "$*" >&2; }
|
|
49
|
+
|
|
50
|
+
# ── Canonical version ──────────────────────────────────────────────────
|
|
51
|
+
canonical="$(grep -E '^dotfiles_version[[:space:]]*=' defaults/.chezmoidata.toml |
|
|
52
|
+
head -1 | sed -E 's/.*"([^"]+)".*/\1/')"
|
|
53
|
+
|
|
54
|
+
if [[ -z "$canonical" ]]; then
|
|
55
|
+
_err 'failed to read dotfiles_version from defaults/.chezmoidata.toml'
|
|
56
|
+
exit 2
|
|
57
|
+
fi
|
|
58
|
+
_log "canonical: $canonical (defaults/.chezmoidata.toml)"
|
|
59
|
+
|
|
60
|
+
# ── Per-file expected-substring map ────────────────────────────────────
|
|
61
|
+
# Each entry: PATH|MATCH_PATTERN|EXPECTED_STRING
|
|
62
|
+
# MATCH_PATTERN is a fixed substring to grep for on the file to
|
|
63
|
+
# locate the version-bearing line; we then verify it contains the
|
|
64
|
+
# expected substring rendered with $canonical. version-sync.sh
|
|
65
|
+
# already handles many files (it reads package.json as source);
|
|
66
|
+
# this list captures the surfaces version-sync.sh historically
|
|
67
|
+
# missed — bento.sh banner, man-page header, dispatcher header.
|
|
68
|
+
specs=(
|
|
69
|
+
"package.json|\"version\"|\"version\": \"${canonical}\""
|
|
70
|
+
"bin/dot|^VERSION=|VERSION=\"${canonical}\""
|
|
71
|
+
"bin/dot|^# Dotfiles CLI Entry Point - v|# Dotfiles CLI Entry Point - v${canonical}"
|
|
72
|
+
"share/man/man1/dot.1|^.TH DOT 1|dotfiles v${canonical}"
|
|
73
|
+
"lib/dot/bento.sh|D O T F I L E S|[v${canonical}]"
|
|
74
|
+
"README.md|img.shields.io/badge/Version|Version-v${canonical}-blue"
|
|
75
|
+
"CLAUDE.md|^Chezmoi-managed dotfiles|Version \`${canonical}\`"
|
|
76
|
+
"AGENTS.md|^Chezmoi-managed dotfiles|Version \`${canonical}\`"
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
drift=0
|
|
80
|
+
for spec in "${specs[@]}"; do
|
|
81
|
+
IFS='|' read -r path pattern expected <<<"$spec"
|
|
82
|
+
if [[ ! -f "$path" ]]; then
|
|
83
|
+
_err "MISSING: $path (declared in spec list)"
|
|
84
|
+
drift=$((drift + 1))
|
|
85
|
+
continue
|
|
86
|
+
fi
|
|
87
|
+
line="$(grep -E "$pattern" "$path" | head -1 || true)"
|
|
88
|
+
if [[ -z "$line" ]]; then
|
|
89
|
+
_err "PATTERN NOT FOUND: '$pattern' in $path"
|
|
90
|
+
drift=$((drift + 1))
|
|
91
|
+
continue
|
|
92
|
+
fi
|
|
93
|
+
if [[ "$line" != *"$expected"* ]]; then
|
|
94
|
+
_err "DRIFT in $path"
|
|
95
|
+
_err " found: $line"
|
|
96
|
+
_err " expected: contains '$expected'"
|
|
97
|
+
drift=$((drift + 1))
|
|
98
|
+
if ((fix)); then
|
|
99
|
+
# Auto-fix: only safe when the file contains a previous v0.X.YYY
|
|
100
|
+
# we can sed-replace. Skip otherwise.
|
|
101
|
+
old="$(printf '%s' "$line" | grep -oE 'v[0-9]+\.[0-9]+\.[0-9]+' | head -1)"
|
|
102
|
+
if [[ -n "$old" ]] && [[ "$old" != "v${canonical}" ]]; then
|
|
103
|
+
sed -i.bak "s|${old}|v${canonical}|g" "$path" && rm -f "$path.bak"
|
|
104
|
+
_log " fixed: $path ($old → v${canonical})"
|
|
105
|
+
fi
|
|
106
|
+
fi
|
|
107
|
+
fi
|
|
108
|
+
done
|
|
109
|
+
|
|
110
|
+
if ((drift > 0)); then
|
|
111
|
+
if ((fix)); then
|
|
112
|
+
_log ""
|
|
113
|
+
_log "Auto-fixed where safe. Re-run without --fix to verify."
|
|
114
|
+
else
|
|
115
|
+
_log ""
|
|
116
|
+
_log "Tip: rerun with --fix to auto-correct (only safe substitutions)."
|
|
117
|
+
_log " For non-trivial drift, edit the file manually then re-run."
|
|
118
|
+
fi
|
|
119
|
+
exit 1
|
|
120
|
+
fi
|
|
121
|
+
|
|
122
|
+
_log "all $((${#specs[@]})) live version surfaces match $canonical"
|
|
123
|
+
exit 0
|
|
@@ -43,7 +43,7 @@ integration_tests="$(find "$REPO_ROOT/tests/integration" -name 'test_*.sh' | wc
|
|
|
43
43
|
total_tests="$(find "$REPO_ROOT/tests" -path '*/framework/*' -prune -o -name 'test_*.sh' -print | wc -l | tr -d ' ')"
|
|
44
44
|
named_tests="$(rg -o '\btest_start\b' "$REPO_ROOT/tests/unit" "$REPO_ROOT/tests/integration" -g 'test_*.sh' | wc -l | tr -d ' ')"
|
|
45
45
|
docs_files="$(find "$REPO_ROOT/docs" -type f \( -name '*.md' -o -name '*.md.tmpl' \) | wc -l | tr -d ' ')"
|
|
46
|
-
shell_surfaces="$(find "$REPO_ROOT/scripts" "$REPO_ROOT/dot_local/bin" "$REPO_ROOT/.chezmoitemplates/functions" -type f \( -name '*.sh' -o -name 'executable_*' \) | wc -l | tr -d ' ')"
|
|
46
|
+
shell_surfaces="$(find "$REPO_ROOT/scripts" "$REPO_ROOT/defaults/dot_local/bin" "$REPO_ROOT/defaults/.chezmoitemplates/functions" -type f \( -name '*.sh' -o -name 'executable_*' \) | wc -l | tr -d ' ')"
|
|
47
47
|
|
|
48
48
|
printf 'Coverage Baseline\n'
|
|
49
49
|
printf 'Repository: %s\n' "$REPO_ROOT"
|
|
@@ -5,12 +5,12 @@ set -euo pipefail
|
|
|
5
5
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
6
6
|
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
7
7
|
|
|
8
|
-
DOT_CLI="$REPO_ROOT/
|
|
8
|
+
DOT_CLI="$REPO_ROOT/bin/dot"
|
|
9
9
|
UTILS_DOC="$REPO_ROOT/docs/reference/UTILS.md"
|
|
10
10
|
AI_DOC="$REPO_ROOT/docs/AI.md"
|
|
11
11
|
SCRIPTS_DOC="$REPO_ROOT/docs/reference/SCRIPTS.md"
|
|
12
12
|
ARCH_DOC="$REPO_ROOT/docs/architecture/ARCHITECTURE.md"
|
|
13
|
-
FUNCTION_GROUPS_JSON="$REPO_ROOT/.chezmoitemplates/functions/groups.json"
|
|
13
|
+
FUNCTION_GROUPS_JSON="$REPO_ROOT/defaults/.chezmoitemplates/functions/groups.json"
|
|
14
14
|
MIN_DOCS_COVERAGE="${MIN_DOCS_COVERAGE:-100}"
|
|
15
15
|
|
|
16
16
|
TOTAL_CHECKS=0
|
|
@@ -16,7 +16,7 @@ $ErrorActionPreference = 'Stop'
|
|
|
16
16
|
$Failures = New-Object System.Collections.Generic.List[string]
|
|
17
17
|
|
|
18
18
|
$RepoRoot = if ($env:GITHUB_WORKSPACE) { $env:GITHUB_WORKSPACE } else { (Get-Location).Path }
|
|
19
|
-
$ProfileSrc = Join-Path $RepoRoot 'dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl'
|
|
19
|
+
$ProfileSrc = Join-Path $RepoRoot 'defaults/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl'
|
|
20
20
|
|
|
21
21
|
if (-not (Test-Path $ProfileSrc)) {
|
|
22
22
|
Write-Output "FAIL: profile source not found at $ProfileSrc"
|