@sebastienrousseau/dotfiles 0.2.502 → 0.2.503
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +83 -9
- package/LICENSE +21 -1283
- package/README.md +5 -3
- 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 +27 -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 +4 -4
- package/scripts/diagnostics/conflicts.sh +2 -2
- package/scripts/diagnostics/doctor-unified.sh +2 -2
- 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 +4 -4
- package/scripts/diagnostics/scorecard.sh +4 -4
- package/scripts/diagnostics/security-score.sh +2 -2
- package/scripts/diagnostics/smoke-test.sh +2 -2
- package/scripts/diagnostics/snapshot.sh +2 -2
- package/scripts/diagnostics/verify.sh +4 -4
- package/scripts/diagnostics/version-locks.sh +2 -2
- package/scripts/diagnostics/workstation-attestation.sh +14 -14
- package/scripts/dot/commands/agent.sh +8 -0
- package/scripts/dot/commands/agents.sh +14 -4
- package/scripts/dot/commands/ai.sh +144 -25
- 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 +12 -11
- 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 +2 -2
- package/scripts/git-hooks/pre-push +13 -0
- package/scripts/ops/ai-setup.sh +1 -1
- package/scripts/ops/bundle.sh +2 -2
- package/scripts/ops/chaos.sh +2 -2
- package/scripts/ops/chezmoi-apply.sh +4 -4
- package/scripts/ops/heal.sh +4 -4
- package/scripts/ops/post-apply-repair.sh +2 -2
- package/scripts/ops/prewarm.sh +2 -2
- package/scripts/ops/release.sh +4 -4
- package/scripts/ops/rollback.sh +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 +8 -1
- package/scripts/theme/switch.sh +13 -6
- package/scripts/theme/wallpaper-sync.sh +297 -93
- package/scripts/tuning/linux.sh +2 -2
- package/scripts/tuning/macos.sh +2 -2
- package/scripts/version-sync.sh +55 -7
- package/dot_config/.module-manifest.json +0 -69
- package/dot_config/ai/identity.md +0 -23
- package/dot_config/ai/patterns/architect.md +0 -16
- package/dot_config/ai/patterns/hardener.md +0 -15
- package/dot_config/ai/patterns/refactor.md +0 -15
- package/dot_config/aider/aider.conf.yml +0 -32
- package/dot_config/alacritty/alacritty.toml.tmpl +0 -55
- package/dot_config/ansible/ansible.cfg +0 -11
- package/dot_config/atuin/config.toml.tmpl +0 -47
- package/dot_config/bat/config +0 -23
- package/dot_config/brave-flags.conf.tmpl +0 -7
- package/dot_config/btop/btop.conf +0 -16
- package/dot_config/btop/themes/tokyonight.theme +0 -34
- package/dot_config/bun/bunfig.toml.tmpl +0 -33
- package/dot_config/claude/mcp_servers.json +0 -20
- package/dot_config/containers/containers.conf +0 -14
- package/dot_config/curl/dot_curlrc +0 -18
- package/dot_config/dlv/config.yml +0 -39
- package/dot_config/docker/config.json +0 -15
- package/dot_config/dotfiles/agent-card.json +0 -29
- package/dot_config/dotfiles/agent-profiles.json +0 -92
- package/dot_config/dotfiles/boot/README.md +0 -13
- package/dot_config/dotfiles/grub/README.md +0 -13
- package/dot_config/dotfiles/lock/README.md +0 -13
- package/dot_config/dotfiles/mcp-lock.json +0 -33
- package/dot_config/dotfiles/mcp-policy.json +0 -52
- package/dot_config/dotfiles/mcp-registry.json +0 -47
- package/dot_config/dotfiles/model-registry.json +0 -20
- package/dot_config/dotfiles/policy-bundles.json +0 -38
- package/dot_config/dotfiles/prompt-registry.json +0 -16
- package/dot_config/dotfiles/versions.env +0 -18
- package/dot_config/duf/duf.conf +0 -6
- package/dot_config/duti/defaults.duti +0 -5
- package/dot_config/emoji/emoji.txt +0 -34
- package/dot_config/environment.d/50-ssh-agent.conf +0 -2
- package/dot_config/environment.d/90-wayland.conf +0 -19
- package/dot_config/fastfetch/config.jsonc +0 -28
- package/dot_config/firefox/user.js.tmpl +0 -58
- package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +0 -9
- package/dot_config/fish/completions/dot.fish.tmpl +0 -115
- package/dot_config/fish/conf.d/000-perf-cache.fish +0 -56
- package/dot_config/fish/conf.d/aliases.fish.tmpl +0 -77
- package/dot_config/fish/conf.d/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
package/scripts/dot/lib/utils.sh
DELETED
|
@@ -1,377 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
3
|
-
# Sourced by scripts/dot/commands/*.sh and dot_local/bin/executable_dot; inherits set -euo pipefail.
|
|
4
|
-
# Dotfiles CLI Utilities
|
|
5
|
-
# Shared functions for dot command modules
|
|
6
|
-
|
|
7
|
-
# Re-source guard: cheap short-circuit when sourced from multiple modules.
|
|
8
|
-
[[ "${_DOT_LIB_UTILS_LOADED:-0}" == "1" ]] && return 0
|
|
9
|
-
_DOT_LIB_UTILS_LOADED=1
|
|
10
|
-
|
|
11
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
12
|
-
# shellcheck source=ui.sh
|
|
13
|
-
source "$SCRIPT_DIR/ui.sh"
|
|
14
|
-
# shellcheck source=platform.sh
|
|
15
|
-
source "$SCRIPT_DIR/platform.sh"
|
|
16
|
-
|
|
17
|
-
_DOT_SOURCE_DIR_CACHE=""
|
|
18
|
-
|
|
19
|
-
## resolve_source_dir — Locate the dotfiles source tree.
|
|
20
|
-
## Checks (in order): relative to this script, $CHEZMOI_SOURCE_DIR,
|
|
21
|
-
## ~/.dotfiles, ~/.local/share/chezmoi. Caches the result for the process.
|
|
22
|
-
## Prints the absolute path (or empty string if not found). Exit: always 0.
|
|
23
|
-
resolve_source_dir() {
|
|
24
|
-
if [[ -n "${_DOT_SOURCE_DIR_CACHE:-}" ]] && [[ -d "$_DOT_SOURCE_DIR_CACHE" ]]; then
|
|
25
|
-
printf "%s\n" "$_DOT_SOURCE_DIR_CACHE"
|
|
26
|
-
return
|
|
27
|
-
fi
|
|
28
|
-
|
|
29
|
-
local dir=""
|
|
30
|
-
local repo_candidate=""
|
|
31
|
-
|
|
32
|
-
if repo_candidate="$(cd "$SCRIPT_DIR/../../.." && pwd 2>/dev/null)"; then
|
|
33
|
-
:
|
|
34
|
-
else
|
|
35
|
-
repo_candidate=""
|
|
36
|
-
fi
|
|
37
|
-
if [[ -n "$repo_candidate" && -f "$repo_candidate/scripts/dot/lib/ui.sh" ]]; then
|
|
38
|
-
dir="$repo_candidate"
|
|
39
|
-
elif [ -n "${CHEZMOI_SOURCE_DIR:-}" ] && [ -d "$CHEZMOI_SOURCE_DIR" ]; then
|
|
40
|
-
dir="$CHEZMOI_SOURCE_DIR"
|
|
41
|
-
elif [ -d "$HOME/.dotfiles" ]; then
|
|
42
|
-
dir="$HOME/.dotfiles"
|
|
43
|
-
elif [ -d "$HOME/.local/share/chezmoi" ]; then
|
|
44
|
-
dir="$HOME/.local/share/chezmoi"
|
|
45
|
-
fi
|
|
46
|
-
|
|
47
|
-
if [ -n "$dir" ]; then
|
|
48
|
-
# Resolve symlinks for consistent path handling
|
|
49
|
-
if command -v realpath >/dev/null 2>&1; then
|
|
50
|
-
dir="$(realpath "$dir")"
|
|
51
|
-
elif command -v readlink >/dev/null 2>&1; then
|
|
52
|
-
dir="$(readlink -f "$dir" 2>/dev/null || echo "$dir")"
|
|
53
|
-
fi
|
|
54
|
-
_DOT_SOURCE_DIR_CACHE="$dir"
|
|
55
|
-
printf "%s\n" "$dir"
|
|
56
|
-
else
|
|
57
|
-
printf "%s\n" ""
|
|
58
|
-
fi
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
## run_script — Resolve source dir, find a script, exec it (never returns).
|
|
62
|
-
## Usage: run_script <relative-script-path> <not-found-label> [args...]
|
|
63
|
-
## Exit: 1 if source dir or script not found; otherwise execs into the script.
|
|
64
|
-
run_script() {
|
|
65
|
-
local script_rel="$1"
|
|
66
|
-
local label="$2"
|
|
67
|
-
shift 2
|
|
68
|
-
local src_dir
|
|
69
|
-
src_dir="$(resolve_source_dir)"
|
|
70
|
-
if [ -z "$src_dir" ]; then
|
|
71
|
-
echo "Dotfiles source not found." >&2
|
|
72
|
-
exit 1
|
|
73
|
-
fi
|
|
74
|
-
if [ -f "$src_dir/$script_rel" ]; then
|
|
75
|
-
exec bash "$src_dir/$script_rel" "$@"
|
|
76
|
-
else
|
|
77
|
-
echo "$label not found." >&2
|
|
78
|
-
exit 1
|
|
79
|
-
fi
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
## require_source_dir — Print source dir path or exit 1 if not found.
|
|
83
|
-
require_source_dir() {
|
|
84
|
-
local src_dir
|
|
85
|
-
src_dir="$(resolve_source_dir)"
|
|
86
|
-
if [ -z "$src_dir" ]; then
|
|
87
|
-
echo "Dotfiles source not found." >&2
|
|
88
|
-
exit 1
|
|
89
|
-
fi
|
|
90
|
-
echo "$src_dir"
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
## has_command <name> — Return 0 if <name> is on PATH, 1 otherwise.
|
|
94
|
-
has_command() {
|
|
95
|
-
command -v "$1" >/dev/null 2>&1
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
## validate_name <name> [label] — Die if name contains unsafe characters.
|
|
99
|
-
## Allowed: [a-zA-Z0-9._-]. This prevents shell injection when names appear
|
|
100
|
-
## in paths or eval contexts. Exit: 0 if valid, calls die() if invalid.
|
|
101
|
-
validate_name() {
|
|
102
|
-
local name="$1" label="${2:-name}"
|
|
103
|
-
if [[ ! "$name" =~ ^[a-zA-Z0-9._-]+$ ]]; then
|
|
104
|
-
die "Invalid $label: $name (only alphanumeric, dash, underscore, dot allowed)"
|
|
105
|
-
fi
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
## validate_xdg_path <var_name> <path> — Warn and return 1 if path is not absolute.
|
|
109
|
-
validate_xdg_path() {
|
|
110
|
-
local var_name="$1" path="$2"
|
|
111
|
-
if [[ -n "$path" ]] && [[ "$path" != /* ]]; then
|
|
112
|
-
ui_warn "$var_name" "Not an absolute path: $path (ignoring, using default)"
|
|
113
|
-
return 1
|
|
114
|
-
fi
|
|
115
|
-
return 0
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
## die <message> [code] — Print error to stderr and exit (default code 1).
|
|
119
|
-
die() {
|
|
120
|
-
ui_err "$1" >&2
|
|
121
|
-
exit "${2:-1}"
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
# Print warning message
|
|
125
|
-
warn() {
|
|
126
|
-
ui_warn "$1" >&2
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
# Print info message
|
|
130
|
-
info() {
|
|
131
|
-
ui_info "$1"
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
# Print the dot logo once per process for interactive sessions.
|
|
135
|
-
ui_logo_once() {
|
|
136
|
-
local title="${1:-Dot}"
|
|
137
|
-
ui_init
|
|
138
|
-
if [[ "${DOTFILES_SHOW_LOGO:-1}" != "1" ]]; then
|
|
139
|
-
return
|
|
140
|
-
fi
|
|
141
|
-
if [[ ! -t 1 ]]; then
|
|
142
|
-
return
|
|
143
|
-
fi
|
|
144
|
-
if [[ "${DOTFILES_LOGO_PRINTED:-0}" = "1" ]]; then
|
|
145
|
-
return
|
|
146
|
-
fi
|
|
147
|
-
ui_product_banner "$title"
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
dotfiles_version() {
|
|
151
|
-
local src_dir version=""
|
|
152
|
-
src_dir="$(resolve_source_dir)"
|
|
153
|
-
|
|
154
|
-
if [[ -n "$src_dir" ]] && [[ -f "$src_dir/package.json" ]]; then
|
|
155
|
-
version="$(sed -n 's/^[[:space:]]*"version"[[:space:]]*:[[:space:]]*"\([0-9][0-9.]*\)".*/\1/p' "$src_dir/package.json" | head -1)"
|
|
156
|
-
fi
|
|
157
|
-
|
|
158
|
-
if [[ -z "$version" ]] && [[ -n "${DOTFILES_VERSION:-}" ]]; then
|
|
159
|
-
version="$DOTFILES_VERSION"
|
|
160
|
-
fi
|
|
161
|
-
|
|
162
|
-
if [[ -z "$version" ]]; then
|
|
163
|
-
version="unknown"
|
|
164
|
-
fi
|
|
165
|
-
|
|
166
|
-
printf "%s\n" "$version"
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
dot_command_summary() {
|
|
170
|
-
case "${1:-}" in
|
|
171
|
-
apply | sync)
|
|
172
|
-
echo "Apply dotfiles changes (sync is an alias for apply)."
|
|
173
|
-
;;
|
|
174
|
-
update)
|
|
175
|
-
echo "Pull latest changes from remote, then apply."
|
|
176
|
-
;;
|
|
177
|
-
add)
|
|
178
|
-
echo "Add a file into chezmoi source management."
|
|
179
|
-
;;
|
|
180
|
-
diff)
|
|
181
|
-
echo "Show pending managed-file differences."
|
|
182
|
-
;;
|
|
183
|
-
status)
|
|
184
|
-
echo "Show current configuration drift status."
|
|
185
|
-
;;
|
|
186
|
-
remove)
|
|
187
|
-
echo "Safely remove a managed file from source."
|
|
188
|
-
;;
|
|
189
|
-
cd)
|
|
190
|
-
echo "Print the dotfiles source directory path."
|
|
191
|
-
;;
|
|
192
|
-
edit)
|
|
193
|
-
echo "Open dotfiles source in your editor."
|
|
194
|
-
;;
|
|
195
|
-
doctor)
|
|
196
|
-
echo "Deep audit: tools, paths, portability, AI analysis."
|
|
197
|
-
;;
|
|
198
|
-
heal)
|
|
199
|
-
echo "Auto-repair broken symlinks, missing tools, and drift."
|
|
200
|
-
;;
|
|
201
|
-
health | health-check)
|
|
202
|
-
echo "Dashboard with health score, checks, and auto-fix (--fix)."
|
|
203
|
-
;;
|
|
204
|
-
security-score)
|
|
205
|
-
echo "Calculate and print security posture score."
|
|
206
|
-
;;
|
|
207
|
-
scorecard)
|
|
208
|
-
echo "Show unified health, security, and performance scorecard."
|
|
209
|
-
;;
|
|
210
|
-
perf)
|
|
211
|
-
echo "Profile shell startup performance (3-run average)."
|
|
212
|
-
;;
|
|
213
|
-
conflicts)
|
|
214
|
-
echo "Report alias and command conflicts."
|
|
215
|
-
;;
|
|
216
|
-
locks)
|
|
217
|
-
echo "Show version locks for key tools."
|
|
218
|
-
;;
|
|
219
|
-
snapshot)
|
|
220
|
-
echo "Capture a baseline system snapshot."
|
|
221
|
-
;;
|
|
222
|
-
rollback)
|
|
223
|
-
echo "Rollback dotfiles state to a prior point."
|
|
224
|
-
;;
|
|
225
|
-
restore)
|
|
226
|
-
echo "Restore files from backup or git reference."
|
|
227
|
-
;;
|
|
228
|
-
drift)
|
|
229
|
-
echo "Display detailed drift information."
|
|
230
|
-
;;
|
|
231
|
-
history)
|
|
232
|
-
echo "Analyze shell command history."
|
|
233
|
-
;;
|
|
234
|
-
benchmark)
|
|
235
|
-
echo "Measure shell startup performance."
|
|
236
|
-
;;
|
|
237
|
-
verify)
|
|
238
|
-
echo "Run post-merge verification checks."
|
|
239
|
-
;;
|
|
240
|
-
tools)
|
|
241
|
-
echo "Browse or install toolchain components."
|
|
242
|
-
;;
|
|
243
|
-
aliases)
|
|
244
|
-
echo "List, search, and explain configured aliases."
|
|
245
|
-
;;
|
|
246
|
-
new)
|
|
247
|
-
echo "Create a new project from templates."
|
|
248
|
-
;;
|
|
249
|
-
packages)
|
|
250
|
-
echo "List package managers and package stats."
|
|
251
|
-
;;
|
|
252
|
-
log-rotate)
|
|
253
|
-
echo "Rotate dotfiles local log files."
|
|
254
|
-
;;
|
|
255
|
-
setup)
|
|
256
|
-
echo "Interactive setup for profiles, features, and secrets."
|
|
257
|
-
;;
|
|
258
|
-
theme)
|
|
259
|
-
echo "Switch terminal appearance theme."
|
|
260
|
-
;;
|
|
261
|
-
wallpaper)
|
|
262
|
-
echo "Apply or sync wallpapers."
|
|
263
|
-
;;
|
|
264
|
-
fonts)
|
|
265
|
-
echo "Install Nerd Fonts for terminal tooling."
|
|
266
|
-
;;
|
|
267
|
-
tune)
|
|
268
|
-
echo "Apply OS-level tuning defaults."
|
|
269
|
-
;;
|
|
270
|
-
secrets-init)
|
|
271
|
-
echo "Initialize age key for encrypted secrets."
|
|
272
|
-
;;
|
|
273
|
-
secrets)
|
|
274
|
-
echo "Manage secrets (set/get/list/load/provider)."
|
|
275
|
-
;;
|
|
276
|
-
env)
|
|
277
|
-
echo "List mise-managed toolchain versions and sources."
|
|
278
|
-
;;
|
|
279
|
-
secrets-create)
|
|
280
|
-
echo "Create a new encrypted secrets file."
|
|
281
|
-
;;
|
|
282
|
-
ssh-key)
|
|
283
|
-
echo "Encrypt an SSH key using age."
|
|
284
|
-
;;
|
|
285
|
-
backup)
|
|
286
|
-
echo "Create a compressed backup."
|
|
287
|
-
;;
|
|
288
|
-
encrypt-check)
|
|
289
|
-
echo "Check disk encryption status."
|
|
290
|
-
;;
|
|
291
|
-
firewall)
|
|
292
|
-
echo "Apply firewall hardening settings."
|
|
293
|
-
;;
|
|
294
|
-
telemetry)
|
|
295
|
-
echo "Disable telemetry where supported."
|
|
296
|
-
;;
|
|
297
|
-
dns-doh)
|
|
298
|
-
echo "Enable DNS-over-HTTPS."
|
|
299
|
-
;;
|
|
300
|
-
lock-screen)
|
|
301
|
-
echo "Harden lock-screen idle policy."
|
|
302
|
-
;;
|
|
303
|
-
usb-safety)
|
|
304
|
-
echo "Disable risky removable-media automount."
|
|
305
|
-
;;
|
|
306
|
-
fleet)
|
|
307
|
-
echo "Show fleet node status, drift, and namespace."
|
|
308
|
-
;;
|
|
309
|
-
upgrade)
|
|
310
|
-
echo "Update system toolchains, plugins, and dotfiles."
|
|
311
|
-
;;
|
|
312
|
-
docs)
|
|
313
|
-
echo "Show dotfiles documentation."
|
|
314
|
-
;;
|
|
315
|
-
learn)
|
|
316
|
-
echo "Start the interactive onboarding tour."
|
|
317
|
-
;;
|
|
318
|
-
keys)
|
|
319
|
-
echo "Show keybindings catalog."
|
|
320
|
-
;;
|
|
321
|
-
sandbox)
|
|
322
|
-
echo "Start isolated sandbox environment."
|
|
323
|
-
;;
|
|
324
|
-
mcp)
|
|
325
|
-
echo "Run MCP configuration diagnostics."
|
|
326
|
-
;;
|
|
327
|
-
metrics)
|
|
328
|
-
echo "Show recent observability metrics from JSONL."
|
|
329
|
-
;;
|
|
330
|
-
cache-refresh | prewarm)
|
|
331
|
-
echo "Regenerate shell caches for ultra-fast startup."
|
|
332
|
-
;;
|
|
333
|
-
search)
|
|
334
|
-
echo "Find commands by keyword."
|
|
335
|
-
;;
|
|
336
|
-
help | --help | -h)
|
|
337
|
-
echo "Show command usage and reference."
|
|
338
|
-
;;
|
|
339
|
-
--version | -v | version)
|
|
340
|
-
echo "Show dotfiles and environment versions."
|
|
341
|
-
;;
|
|
342
|
-
*)
|
|
343
|
-
echo "Run a dotfiles command."
|
|
344
|
-
;;
|
|
345
|
-
esac
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
dot_ui_command_banner() {
|
|
349
|
-
local section="${1:-Dot}"
|
|
350
|
-
local cmd="${2:-}"
|
|
351
|
-
shift 2 || true
|
|
352
|
-
local version summary
|
|
353
|
-
|
|
354
|
-
for arg in "$@"; do
|
|
355
|
-
case "$arg" in
|
|
356
|
-
--json | -j)
|
|
357
|
-
return
|
|
358
|
-
;;
|
|
359
|
-
esac
|
|
360
|
-
done
|
|
361
|
-
|
|
362
|
-
ui_logo_once "Dot • $section"
|
|
363
|
-
|
|
364
|
-
if [[ "${DOTFILES_SHOW_LOGO:-1}" != "1" ]] || [[ ! -t 1 ]]; then
|
|
365
|
-
return
|
|
366
|
-
fi
|
|
367
|
-
|
|
368
|
-
version="$(dotfiles_version)"
|
|
369
|
-
summary="$(dot_command_summary "$cmd")"
|
|
370
|
-
|
|
371
|
-
ui_key_value "Version" "v${version}"
|
|
372
|
-
if [[ -n "$cmd" ]]; then
|
|
373
|
-
ui_key_value "Command" "dot ${cmd}"
|
|
374
|
-
fi
|
|
375
|
-
ui_key_value "Summary" "$summary"
|
|
376
|
-
printf "\n"
|
|
377
|
-
}
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
3
|
-
# Dependency update checker for nightly CI
|
|
4
|
-
# Reports available updates for all project dependencies
|
|
5
|
-
|
|
6
|
-
set -euo pipefail
|
|
7
|
-
|
|
8
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
9
|
-
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
10
|
-
REPORT_DIR="$REPO_ROOT/nightly-reports"
|
|
11
|
-
|
|
12
|
-
mkdir -p "$REPORT_DIR"
|
|
13
|
-
|
|
14
|
-
check_github_actions_updates() {
|
|
15
|
-
echo "=== GitHub Actions Updates ===" >>"$REPORT_DIR/updates.txt"
|
|
16
|
-
|
|
17
|
-
# Extract all GitHub Actions from workflow files
|
|
18
|
-
find "$REPO_ROOT/.github/workflows" -name "*.yml" -o -name "*.yaml" | while read -r workflow; do
|
|
19
|
-
echo "Checking $(basename "$workflow")..." >&2
|
|
20
|
-
grep -E "uses: [^@]+@v[0-9]+" "$workflow" | sed 's/.*uses: //' | sort -u >>"$REPORT_DIR/actions-current.txt" 2>/dev/null || true
|
|
21
|
-
done
|
|
22
|
-
|
|
23
|
-
if [[ -f "$REPORT_DIR/actions-current.txt" ]]; then
|
|
24
|
-
# For each action, check if newer version exists (simplified check)
|
|
25
|
-
while read -r action_version; do
|
|
26
|
-
if [[ -n "$action_version" ]]; then
|
|
27
|
-
action_name=$(echo "$action_version" | cut -d'@' -f1)
|
|
28
|
-
current_version=$(echo "$action_version" | cut -d'@' -f2)
|
|
29
|
-
echo " $action_name: $current_version (check manually)" >>"$REPORT_DIR/updates.txt"
|
|
30
|
-
fi
|
|
31
|
-
done <"$REPORT_DIR/actions-current.txt"
|
|
32
|
-
fi
|
|
33
|
-
|
|
34
|
-
echo "" >>"$REPORT_DIR/updates.txt"
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
check_precommit_updates() {
|
|
38
|
-
echo "=== Pre-commit Hook Updates ===" >>"$REPORT_DIR/updates.txt"
|
|
39
|
-
|
|
40
|
-
if command -v pre-commit &>/dev/null && [[ -f "$REPO_ROOT/.pre-commit-config.yaml" ]]; then
|
|
41
|
-
cd "$REPO_ROOT"
|
|
42
|
-
pre-commit autoupdate --dry-run >>"$REPORT_DIR/updates.txt" 2>&1 || true
|
|
43
|
-
else
|
|
44
|
-
echo "pre-commit not available or config missing" >>"$REPORT_DIR/updates.txt"
|
|
45
|
-
fi
|
|
46
|
-
|
|
47
|
-
echo "" >>"$REPORT_DIR/updates.txt"
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
check_chezmoi_updates() {
|
|
51
|
-
echo "=== Chezmoi Updates ===" >>"$REPORT_DIR/updates.txt"
|
|
52
|
-
|
|
53
|
-
if command -v curl &>/dev/null; then
|
|
54
|
-
LATEST_VERSION=$(curl -s "https://api.github.com/repos/twpayne/chezmoi/releases/latest" | grep '"tag_name"' | cut -d'"' -f4 | sed 's/^v//')
|
|
55
|
-
CURRENT_VERSION=$(grep "CHEZMOI_VERSION:" "$REPO_ROOT/.github/workflows/ci.yml" | cut -d'"' -f2 | head -1)
|
|
56
|
-
|
|
57
|
-
echo "Current Chezmoi: $CURRENT_VERSION" >>"$REPORT_DIR/updates.txt"
|
|
58
|
-
echo "Latest Chezmoi: $LATEST_VERSION" >>"$REPORT_DIR/updates.txt"
|
|
59
|
-
|
|
60
|
-
if [[ "$CURRENT_VERSION" != "$LATEST_VERSION" ]]; then
|
|
61
|
-
echo "⚠️ Chezmoi update available: $CURRENT_VERSION → $LATEST_VERSION" >>"$REPORT_DIR/updates.txt"
|
|
62
|
-
else
|
|
63
|
-
echo "✅ Chezmoi is up to date" >>"$REPORT_DIR/updates.txt"
|
|
64
|
-
fi
|
|
65
|
-
else
|
|
66
|
-
echo "curl not available - cannot check Chezmoi version" >>"$REPORT_DIR/updates.txt"
|
|
67
|
-
fi
|
|
68
|
-
|
|
69
|
-
echo "" >>"$REPORT_DIR/updates.txt"
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
check_security_tools_updates() {
|
|
73
|
-
echo "=== Security Tools Updates ===" >>"$REPORT_DIR/updates.txt"
|
|
74
|
-
|
|
75
|
-
# Check shellcheck version
|
|
76
|
-
if command -v shellcheck &>/dev/null; then
|
|
77
|
-
SHELLCHECK_VERSION=$(shellcheck --version | grep version: | cut -d' ' -f2)
|
|
78
|
-
echo "Shellcheck: $SHELLCHECK_VERSION" >>"$REPORT_DIR/updates.txt"
|
|
79
|
-
fi
|
|
80
|
-
|
|
81
|
-
# Check other tools if available
|
|
82
|
-
for tool in shfmt stylua luacheck; do
|
|
83
|
-
if command -v "$tool" &>/dev/null; then
|
|
84
|
-
VERSION=$($tool --version 2>&1 | head -1 || echo "unknown")
|
|
85
|
-
echo "$tool: $VERSION" >>"$REPORT_DIR/updates.txt"
|
|
86
|
-
fi
|
|
87
|
-
done
|
|
88
|
-
|
|
89
|
-
echo "" >>"$REPORT_DIR/updates.txt"
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
generate_summary() {
|
|
93
|
-
{
|
|
94
|
-
echo "=== Update Summary ==="
|
|
95
|
-
echo "Generated: $(date -Iseconds)"
|
|
96
|
-
echo "Repository: $REPO_ROOT"
|
|
97
|
-
echo ""
|
|
98
|
-
} >>"$REPORT_DIR/updates.txt"
|
|
99
|
-
|
|
100
|
-
# Count potential updates (simplified heuristic)
|
|
101
|
-
local update_count
|
|
102
|
-
update_count=$(grep -c "⚠️\|→" "$REPORT_DIR/updates.txt" 2>/dev/null || echo "0")
|
|
103
|
-
|
|
104
|
-
if [[ $update_count -gt 0 ]]; then
|
|
105
|
-
echo "🔄 $update_count potential updates found" >>"$REPORT_DIR/updates.txt"
|
|
106
|
-
else
|
|
107
|
-
echo "✅ All dependencies appear current" >>"$REPORT_DIR/updates.txt"
|
|
108
|
-
fi
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
main() {
|
|
112
|
-
echo "Dependency Update Checker"
|
|
113
|
-
echo "========================"
|
|
114
|
-
echo "Checking for available updates..."
|
|
115
|
-
|
|
116
|
-
# Clear previous report
|
|
117
|
-
true >"$REPORT_DIR/updates.txt"
|
|
118
|
-
|
|
119
|
-
check_chezmoi_updates
|
|
120
|
-
check_precommit_updates
|
|
121
|
-
check_github_actions_updates
|
|
122
|
-
check_security_tools_updates
|
|
123
|
-
generate_summary
|
|
124
|
-
|
|
125
|
-
echo "Report generated: $REPORT_DIR/updates.txt"
|
|
126
|
-
echo ""
|
|
127
|
-
echo "Summary:"
|
|
128
|
-
tail -10 "$REPORT_DIR/updates.txt"
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
main "$@"
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
3
|
-
## Package tracked governance artifacts into a release bundle.
|
|
4
|
-
|
|
5
|
-
set -euo pipefail
|
|
6
|
-
|
|
7
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
8
|
-
REPO_ROOT="${REPO_ROOT:-$(cd "$SCRIPT_DIR/../.." && pwd)}"
|
|
9
|
-
|
|
10
|
-
OUTPUT_DIR="${OUTPUT_DIR:-$REPO_ROOT/dist/policy-bundles}"
|
|
11
|
-
BUNDLE_VERSION="${BUNDLE_VERSION:-$(jq -r '.schemaVersion' "$REPO_ROOT/dot_config/dotfiles/policy-bundles.json")}"
|
|
12
|
-
JSON_MODE=0
|
|
13
|
-
|
|
14
|
-
while [[ $# -gt 0 ]]; do
|
|
15
|
-
case "$1" in
|
|
16
|
-
--output-dir | -o)
|
|
17
|
-
OUTPUT_DIR="${2:-}"
|
|
18
|
-
shift 2
|
|
19
|
-
;;
|
|
20
|
-
--version | -v)
|
|
21
|
-
BUNDLE_VERSION="${2:-}"
|
|
22
|
-
shift 2
|
|
23
|
-
;;
|
|
24
|
-
--json | -j)
|
|
25
|
-
JSON_MODE=1
|
|
26
|
-
shift
|
|
27
|
-
;;
|
|
28
|
-
*)
|
|
29
|
-
shift
|
|
30
|
-
;;
|
|
31
|
-
esac
|
|
32
|
-
done
|
|
33
|
-
|
|
34
|
-
command -v jq >/dev/null 2>&1 || {
|
|
35
|
-
echo "jq is required for policy bundle packaging." >&2
|
|
36
|
-
exit 1
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
bundle_root="$OUTPUT_DIR/policy-bundles-$BUNDLE_VERSION"
|
|
40
|
-
archive_file="$OUTPUT_DIR/policy-bundles-$BUNDLE_VERSION.tar.gz"
|
|
41
|
-
checksum_file="$OUTPUT_DIR/policy-bundles-$BUNDLE_VERSION.sha256"
|
|
42
|
-
|
|
43
|
-
rm -rf "$bundle_root"
|
|
44
|
-
mkdir -p "$bundle_root/dot_config/dotfiles" "$bundle_root/.well-known" "$bundle_root/docs/security" "$bundle_root/docs/operations" "$bundle_root/docs/interop"
|
|
45
|
-
|
|
46
|
-
files=(
|
|
47
|
-
"dot_config/dotfiles/policy-bundles.json"
|
|
48
|
-
"dot_config/dotfiles/model-registry.json"
|
|
49
|
-
"dot_config/dotfiles/prompt-registry.json"
|
|
50
|
-
"dot_config/dotfiles/agent-profiles.json"
|
|
51
|
-
"dot_config/dotfiles/agent-card.json"
|
|
52
|
-
"dot_config/dotfiles/mcp-policy.json"
|
|
53
|
-
"dot_config/dotfiles/mcp-registry.json"
|
|
54
|
-
"dot_config/dotfiles/mcp-lock.json"
|
|
55
|
-
".well-known/agent.json"
|
|
56
|
-
".well-known/agent-card.json"
|
|
57
|
-
".well-known/mcp/server-card.json"
|
|
58
|
-
"docs/security/MCP_POLICY.md"
|
|
59
|
-
"docs/operations/TRUSTED_AGENT_WORKSTATION.md"
|
|
60
|
-
"docs/interop/A2A.md"
|
|
61
|
-
)
|
|
62
|
-
|
|
63
|
-
for file in "${files[@]}"; do
|
|
64
|
-
[[ -f "$REPO_ROOT/$file" ]] || {
|
|
65
|
-
echo "Missing required policy bundle artifact: $file" >&2
|
|
66
|
-
exit 1
|
|
67
|
-
}
|
|
68
|
-
mkdir -p "$bundle_root/$(dirname "$file")"
|
|
69
|
-
cp "$REPO_ROOT/$file" "$bundle_root/$file"
|
|
70
|
-
done
|
|
71
|
-
|
|
72
|
-
jq empty "$bundle_root/dot_config/dotfiles/policy-bundles.json" >/dev/null
|
|
73
|
-
jq empty "$bundle_root/dot_config/dotfiles/model-registry.json" >/dev/null
|
|
74
|
-
jq empty "$bundle_root/dot_config/dotfiles/prompt-registry.json" >/dev/null
|
|
75
|
-
jq empty "$bundle_root/dot_config/dotfiles/agent-profiles.json" >/dev/null
|
|
76
|
-
jq empty "$bundle_root/dot_config/dotfiles/agent-card.json" >/dev/null
|
|
77
|
-
jq empty "$bundle_root/dot_config/dotfiles/mcp-policy.json" >/dev/null
|
|
78
|
-
jq empty "$bundle_root/dot_config/dotfiles/mcp-registry.json" >/dev/null
|
|
79
|
-
jq empty "$bundle_root/dot_config/dotfiles/mcp-lock.json" >/dev/null
|
|
80
|
-
jq empty "$bundle_root/.well-known/agent.json" >/dev/null
|
|
81
|
-
|
|
82
|
-
tar -C "$OUTPUT_DIR" -czf "$archive_file" "policy-bundles-$BUNDLE_VERSION"
|
|
83
|
-
sha256sum "$archive_file" >"$checksum_file"
|
|
84
|
-
|
|
85
|
-
# Generate CycloneDX SBOM
|
|
86
|
-
sbom_file="$bundle_root/sbom.cyclonedx.json"
|
|
87
|
-
if command -v syft >/dev/null 2>&1; then
|
|
88
|
-
syft dir:"$bundle_root" -o cyclonedx-json >"$sbom_file" 2>/dev/null
|
|
89
|
-
else
|
|
90
|
-
# Minimal CycloneDX manifest via jq
|
|
91
|
-
jq -n \
|
|
92
|
-
--arg version "$BUNDLE_VERSION" \
|
|
93
|
-
--arg timestamp "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
|
|
94
|
-
'{
|
|
95
|
-
bomFormat: "CycloneDX",
|
|
96
|
-
specVersion: "1.5",
|
|
97
|
-
version: 1,
|
|
98
|
-
metadata: {
|
|
99
|
-
timestamp: $timestamp,
|
|
100
|
-
component: {
|
|
101
|
-
type: "application",
|
|
102
|
-
name: "dotfiles-policy-bundles",
|
|
103
|
-
version: $version
|
|
104
|
-
}
|
|
105
|
-
},
|
|
106
|
-
components: []
|
|
107
|
-
}' >"$sbom_file"
|
|
108
|
-
fi
|
|
109
|
-
|
|
110
|
-
# Re-create archive with SBOM included
|
|
111
|
-
tar -C "$OUTPUT_DIR" -czf "$archive_file" "policy-bundles-$BUNDLE_VERSION"
|
|
112
|
-
sha256sum "$archive_file" >"$checksum_file"
|
|
113
|
-
|
|
114
|
-
if [[ "$JSON_MODE" -eq 1 ]]; then
|
|
115
|
-
jq -n \
|
|
116
|
-
--arg version "$BUNDLE_VERSION" \
|
|
117
|
-
--arg output_dir "$OUTPUT_DIR" \
|
|
118
|
-
--arg archive "$archive_file" \
|
|
119
|
-
--arg checksum "$checksum_file" \
|
|
120
|
-
--arg sbom "$sbom_file" \
|
|
121
|
-
'{version: $version, output_dir: $output_dir, archive: $archive, checksum: $checksum, sbom: $sbom}'
|
|
122
|
-
else
|
|
123
|
-
printf 'Policy bundle archive: %s\n' "$archive_file"
|
|
124
|
-
printf 'Policy bundle checksum: %s\n' "$checksum_file"
|
|
125
|
-
fi
|