@sebastienrousseau/dotfiles 0.2.520 → 0.2.521
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 +18 -0
- package/LICENSE-APACHE +190 -0
- package/LICENSE-MIT +21 -0
- package/README.md +43 -37
- package/install.sh +76 -10
- package/package.json +7 -7
- package/tools/README.md +49 -0
- package/tools/ci/install-chezmoi-verified.sh +68 -0
- package/docs/.vitepress/reports/localization-readability-audit.md +0 -73
- package/docs/AI.md +0 -179
- package/docs/ARCHITECTURE.md +0 -117
- package/docs/CNAME +0 -1
- package/docs/CONFIG_STRATEGY.md +0 -124
- package/docs/COPYRIGHT +0 -7
- package/docs/ECOSYSTEM.md +0 -220
- package/docs/GOLD-STANDARD-AUDIT.md +0 -352
- package/docs/GOVERNANCE.md +0 -98
- package/docs/MAINTAINERS.md +0 -41
- package/docs/MINIMUM-TOOLCHAIN.md +0 -100
- package/docs/NAMING_CONVENTIONS.md +0 -102
- package/docs/OPENCODE.md +0 -127
- package/docs/README.md +0 -84
- package/docs/STRUCTURE.md +0 -102
- package/docs/adr/ADR-001-ci-cd-pipeline.md +0 -118
- package/docs/adr/ADR-002-shell-performance.md +0 -130
- package/docs/adr/ADR-003-security-first.md +0 -158
- package/docs/adr/ADR-004-cli-architecture.md +0 -171
- package/docs/adr/ADR-005-chezmoi-choice.md +0 -99
- package/docs/adr/ADR-006-shell-selection.md +0 -124
- package/docs/adr/ADR-007-multi-shell-parity.md +0 -62
- package/docs/adr/ADR-008-alias-system-architecture.md +0 -95
- package/docs/adr/ADR-009-wallpaper-driven-theming.md +0 -131
- package/docs/adr/ADR-010-starship-transient-prompt.md +0 -144
- package/docs/adr/ADR-011-nushell-tier3-keep.md +0 -144
- package/docs/adr/ADR-012-ai-fleet-local-proxy.md +0 -79
- package/docs/adr/README.md +0 -40
- package/docs/architecture/AI_COST_OPTIMIZATION.md +0 -144
- package/docs/architecture/ARCHITECTURE.md +0 -20
- package/docs/architecture/INTEROP.md +0 -44
- package/docs/architecture/REPO_LAYOUT.md +0 -241
- package/docs/architecture/WALKTHROUGH.md +0 -86
- package/docs/architecture/fleet-deployment.md +0 -77
- package/docs/archive/EUXIS_2026_REVIEW.md +0 -127
- package/docs/archive/LEGACY_ROADMAP.md +0 -6
- package/docs/archive/MILESTONE_v0.2.493.md +0 -47
- package/docs/archive/PLAN.md +0 -199
- package/docs/archive/REPO_AUDIT.md +0 -31
- package/docs/articles/.pages +0 -6
- package/docs/articles/2026-07-05-custom-mkdocs-material-dark-theme.md +0 -216
- package/docs/articles/2026-07-05-fish-startup-abbr.md +0 -153
- package/docs/articles/2026-07-05-master-to-main-rename-runbook.md +0 -128
- package/docs/articles/index.md +0 -36
- package/docs/guides/INSTALL.md +0 -144
- package/docs/guides/MACOS_ICLOUD_SYMLINKS.md +0 -121
- package/docs/guides/NEOVIM_IDE_GUIDE.md +0 -61
- package/docs/guides/THEMING.md +0 -230
- package/docs/guides/TROUBLESHOOTING.md +0 -176
- package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +0 -792
- package/docs/index.md +0 -132
- package/docs/interop/A2A.md +0 -39
- package/docs/interop/POWERSHELL.md +0 -102
- package/docs/manual/00-introduction.md +0 -89
- package/docs/manual/01-concepts/01-architecture.md +0 -138
- package/docs/manual/01-concepts/02-trust-model.md +0 -183
- package/docs/manual/01-concepts/03-theme-engine.md +0 -186
- package/docs/manual/01-concepts/04-fleet.md +0 -148
- package/docs/manual/01-concepts/05-self-healing.md +0 -204
- package/docs/manual/02-tutorials/01-first-install.md +0 -197
- package/docs/manual/02-tutorials/02-add-wallpaper.md +0 -216
- package/docs/manual/02-tutorials/03-create-profile.md +0 -244
- package/docs/manual/02-tutorials/04-encrypt-secret.md +0 -281
- package/docs/manual/02-tutorials/05-deploy-fleet.md +0 -283
- package/docs/manual/03-reference/01-dot-cli.md +0 -475
- package/docs/manual/03-reference/02-config-files.md +0 -265
- package/docs/manual/03-reference/03-environment.md +0 -124
- package/docs/manual/03-reference/04-templates.md +0 -190
- package/docs/manual/03-reference/05-feature-flags.md +0 -187
- package/docs/manual/04-cookbook/01-recipes.md +0 -285
- package/docs/manual/04-cookbook/02-troubleshooting.md +0 -351
- package/docs/manual/04-cookbook/03-faq.md +0 -175
- package/docs/manual/05-appendices/A-platform-matrix.md +0 -101
- package/docs/manual/05-appendices/B-security-checklist.md +0 -85
- package/docs/manual/05-appendices/C-glossary.md +0 -40
- package/docs/manual/05-appendices/D-bibliography.md +0 -58
- package/docs/manual/05-appendices/E-license.md +0 -38
- package/docs/manual/_toc.yml +0 -58
- package/docs/manual/command-index.md +0 -175
- package/docs/manual/concept-index.md +0 -170
- package/docs/manual/index.md +0 -66
- package/docs/migration/README.md +0 -81
- package/docs/migration/from-bare-git-repo.md +0 -156
- package/docs/migration/from-gnu-stow.md +0 -165
- package/docs/migration/from-plain-chezmoi.md +0 -148
- package/docs/migration/from-yadm.md +0 -187
- package/docs/operations/ARCHITECTURE_ROADMAP.md +0 -7
- package/docs/operations/ATTESTATION.md +0 -44
- package/docs/operations/CI_CADENCE.md +0 -107
- package/docs/operations/CI_COMPOSITES.md +0 -156
- package/docs/operations/COMPLETIONS.md +0 -123
- package/docs/operations/COVERAGE.md +0 -204
- package/docs/operations/DRIFT.md +0 -107
- package/docs/operations/HARD_AUDIT_2026.md +0 -631
- package/docs/operations/MAINTENANCE.md +0 -63
- package/docs/operations/MANIFEST.md +0 -127
- package/docs/operations/MIGRATION.md +0 -109
- package/docs/operations/OPERATIONS.md +0 -188
- package/docs/operations/PERFORMANCE.md +0 -133
- package/docs/operations/PERFORMANCE_BUDGETS.md +0 -196
- package/docs/operations/REGISTRY.md +0 -90
- package/docs/operations/RELEASE_PIPELINE.md +0 -128
- package/docs/operations/RELIABILITY.md +0 -122
- package/docs/operations/RFC_v0_2_503_reorganization.md +0 -280
- package/docs/operations/ROADMAP.md +0 -10
- package/docs/operations/ROADMAP_2026.md +0 -7
- package/docs/operations/ROADMAP_V0_2_503.md +0 -10
- package/docs/operations/TESTING.md +0 -216
- package/docs/operations/TRACEABILITY.md +0 -44
- package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +0 -65
- package/docs/operations/VERSION_SYNC.md +0 -393
- package/docs/packaging.md +0 -222
- package/docs/reference/ALIASES.md +0 -131
- package/docs/reference/ALIASES_CHEATSHEET.md +0 -32
- package/docs/reference/ALIASES_DEPRECATIONS.md +0 -13
- package/docs/reference/FEATURE-MATRIX.md +0 -646
- package/docs/reference/FEATURES.md +0 -66
- package/docs/reference/FONTS.md +0 -112
- package/docs/reference/POWERSHELL_PARITY.md +0 -82
- package/docs/reference/PROFILES.md +0 -69
- package/docs/reference/SCREENSHOTS.md +0 -121
- package/docs/reference/SCRIPTS.md +0 -71
- package/docs/reference/SUPPORT_MATRIX.md +0 -80
- package/docs/reference/THEMES.md +0 -117
- package/docs/reference/TOOLS.md +0 -110
- package/docs/reference/UTILS.md +0 -243
- package/docs/registry.json +0 -6
- package/docs/schema/dot-env-v1.json +0 -110
- package/docs/schema/dot-registry-v1.json +0 -33
- package/docs/security/AI_ACT_COMPLIANCE.md +0 -94
- package/docs/security/AUDIT_BYPASS.md +0 -103
- package/docs/security/AUTOMATION_SECRETS.md +0 -26
- package/docs/security/CI_EGRESS_ALLOWLIST.md +0 -127
- package/docs/security/CI_PINNING.md +0 -129
- package/docs/security/COMMIT_SIGNING.md +0 -138
- package/docs/security/COMPLIANCE.md +0 -458
- package/docs/security/DEPS_DEV_EXCEPTIONS.md +0 -86
- package/docs/security/DISCLOSURE.md +0 -130
- package/docs/security/ENCRYPTION.md +0 -57
- package/docs/security/FMEA.md +0 -159
- package/docs/security/FUZZING.md +0 -209
- package/docs/security/HISTORY_FILTERING.md +0 -132
- package/docs/security/INCIDENT_RESPONSE.md +0 -579
- package/docs/security/INSTALL_VERIFICATION.md +0 -122
- package/docs/security/KEYS.md +0 -49
- package/docs/security/KEY_ROTATION.md +0 -303
- package/docs/security/MCP_POLICY.md +0 -78
- package/docs/security/POLICY_RELEASES.md +0 -37
- package/docs/security/README.md +0 -28
- package/docs/security/SCORECARD.md +0 -195
- package/docs/security/SECRETS.md +0 -158
- package/docs/security/SECURITY.md +0 -45
- package/docs/security/SECURITY_CHECKLIST.md +0 -55
- package/docs/security/SHELL_EXEMPTIONS.md +0 -145
- package/docs/security/SOUP_REGISTER.md +0 -36
- package/docs/security/THREAT_MODEL.md +0 -130
- package/docs/security/VERIFICATION_VALIDATION.md +0 -228
- package/docs/security/VERIFY_RELEASE.md +0 -201
- package/docs/security/security-pubkey.asc +0 -15
- package/docs/stylesheets/extra.css +0 -444
- package/docs/themes/README.md +0 -10
- package/docs/themes/VISUAL_INTEGRITY_REPORT.md +0 -30
- package/docs/themes/hero-shot.svg +0 -78
- package/scripts/README.md +0 -123
- package/scripts/ci/check-copyright-headers.sh +0 -8
- package/scripts/ci/check-shell-preamble.sh +0 -8
- package/scripts/ci/guard-gitleaks-checkout.sh +0 -8
- package/scripts/demo/record.sh +0 -43
- package/scripts/diagnostics/a2a-conformance.sh +0 -163
- package/scripts/diagnostics/alias-governance.sh +0 -165
- package/scripts/diagnostics/aliases-cheatsheet.sh +0 -74
- package/scripts/diagnostics/aliases-manifest.sh +0 -77
- package/scripts/diagnostics/attest-verify.sh +0 -147
- package/scripts/diagnostics/benchmark.sh +0 -408
- package/scripts/diagnostics/conflicts.sh +0 -73
- package/scripts/diagnostics/doctor-unified.sh +0 -43
- package/scripts/diagnostics/doctor.sh +0 -797
- package/scripts/diagnostics/drift-dashboard.sh +0 -203
- package/scripts/diagnostics/health.sh +0 -656
- package/scripts/diagnostics/history-analysis.sh +0 -86
- package/scripts/diagnostics/mcp-doctor.sh +0 -582
- package/scripts/diagnostics/perf.sh +0 -453
- package/scripts/diagnostics/scorecard.sh +0 -120
- package/scripts/diagnostics/secret-governance.sh +0 -65
- package/scripts/diagnostics/security-score.sh +0 -467
- package/scripts/diagnostics/smoke-test.sh +0 -88
- package/scripts/diagnostics/snapshot.sh +0 -90
- package/scripts/diagnostics/verify.sh +0 -108
- package/scripts/diagnostics/verify_state.sh +0 -73
- package/scripts/diagnostics/version-locks.sh +0 -94
- package/scripts/diagnostics/workstation-attestation.sh +0 -212
- package/scripts/dot/commands/agent.sh +0 -535
- package/scripts/dot/commands/agents.sh +0 -352
- package/scripts/dot/commands/ai.sh +0 -600
- package/scripts/dot/commands/aliases.sh +0 -277
- package/scripts/dot/commands/appearance.sh +0 -110
- package/scripts/dot/commands/completion.sh +0 -171
- package/scripts/dot/commands/core.sh +0 -217
- package/scripts/dot/commands/diagnostics.sh +0 -265
- package/scripts/dot/commands/env-emit.sh +0 -203
- package/scripts/dot/commands/fleet.sh +0 -711
- package/scripts/dot/commands/init.sh +0 -185
- package/scripts/dot/commands/lint.sh +0 -208
- package/scripts/dot/commands/manual.sh +0 -169
- package/scripts/dot/commands/meta.sh +0 -438
- package/scripts/dot/commands/patterns.sh +0 -55
- package/scripts/dot/commands/registry.sh +0 -455
- package/scripts/dot/commands/restore.sh +0 -232
- package/scripts/dot/commands/secrets.sh +0 -296
- package/scripts/dot/commands/security.sh +0 -102
- package/scripts/dot/commands/tools.sh +0 -570
- package/scripts/dot/data/alias-deprecations.tsv +0 -2
- package/scripts/dot/powershell/Dot.psm1 +0 -319
- package/scripts/fonts/install-nerd-fonts.sh +0 -75
- package/scripts/fonts/patch-fonts.sh +0 -36
- package/scripts/git-hooks/install.sh +0 -12
- package/scripts/git-hooks/pre-commit +0 -12
- package/scripts/git-hooks/pre-commit-audit.sh +0 -146
- package/scripts/git-hooks/pre-push +0 -105
- package/scripts/git-hooks/prepare-commit-msg +0 -29
- package/scripts/lib/secrets_provider.sh +0 -200
- package/scripts/nvim/headless-upgrade.lua +0 -81
- package/scripts/ops/ai-setup.sh +0 -71
- package/scripts/ops/bundle.sh +0 -104
- package/scripts/ops/chaos.sh +0 -50
- package/scripts/ops/chezmoi-apply.sh +0 -333
- package/scripts/ops/chezmoi-diff.sh +0 -16
- package/scripts/ops/chezmoi-remove.sh +0 -46
- package/scripts/ops/chezmoi-update.sh +0 -67
- package/scripts/ops/heal-chezmoi.sh +0 -87
- package/scripts/ops/heal-system.sh +0 -129
- package/scripts/ops/heal-tools.sh +0 -297
- package/scripts/ops/heal.sh +0 -223
- package/scripts/ops/post-apply-repair.sh +0 -107
- package/scripts/ops/prewarm.sh +0 -128
- package/scripts/ops/release.sh +0 -262
- package/scripts/ops/rollback.sh +0 -613
- package/scripts/ops/setup.sh +0 -138
- package/scripts/ops/teleport.sh +0 -34
- package/scripts/qa/check-feature-matrix.sh +0 -296
- package/scripts/qa/check-version-consistency.sh +0 -12
- package/scripts/qa/coverage-baseline.sh +0 -61
- package/scripts/qa/docs-coverage.sh +0 -118
- package/scripts/qa/examples-coverage.sh +0 -94
- package/scripts/qa/powershell-contract.ps1 +0 -95
- package/scripts/qa/reliability-audit.sh +0 -139
- package/scripts/qa/scorecard-snapshot.sh +0 -128
- package/scripts/qa/traceability-coverage.sh +0 -124
- package/scripts/qa/validate-examples.sh +0 -90
- package/scripts/qa/wsl-contract.sh +0 -12
- package/scripts/secrets/age-init.sh +0 -82
- package/scripts/secrets/create-secrets-file.sh +0 -46
- package/scripts/secrets/encrypt-ssh-key.sh +0 -44
- package/scripts/security/backup.sh +0 -58
- package/scripts/security/check-disclosure-key-expiry.sh +0 -111
- package/scripts/security/dns-doh.sh +0 -52
- package/scripts/security/encryption-check.sh +0 -55
- package/scripts/security/enforce-policies.sh +0 -552
- package/scripts/security/firewall.sh +0 -91
- package/scripts/security/lock-configs.sh +0 -67
- package/scripts/security/lock-screen.sh +0 -56
- package/scripts/security/manage-secrets.sh +0 -429
- package/scripts/security/ssh-cert.sh +0 -204
- package/scripts/security/telemetry-kill.sh +0 -51
- package/scripts/security/usb-safety.sh +0 -52
- package/scripts/theme/apply-gnome-theme.sh +0 -333
- package/scripts/theme/extract-heic-frames.sh +0 -115
- package/scripts/theme/extract-theme.py +0 -1020
- package/scripts/theme/install-boot-logo.sh +0 -63
- package/scripts/theme/install-catppuccin-themes.sh +0 -371
- package/scripts/theme/install-cursors.sh +0 -26
- package/scripts/theme/install-file-icons.sh +0 -27
- package/scripts/theme/install-grub-theme.sh +0 -62
- package/scripts/theme/install-lock-icon.sh +0 -31
- package/scripts/theme/merge-wallpaper.sh +0 -146
- package/scripts/theme/rebuild-themes.sh +0 -603
- package/scripts/theme/switch.sh +0 -476
- package/scripts/theme/wallpaper-rotate.sh +0 -137
- package/scripts/theme/wallpaper-sync.sh +0 -690
- package/scripts/tools/cmatrix.sh +0 -22
- package/scripts/tools/detect-collisions.py +0 -103
- package/scripts/tools/emoji-picker.sh +0 -49
- package/scripts/tools/figlet-banner.sh +0 -19
- package/scripts/tools/log-rotate.sh +0 -31
- package/scripts/tools/lolcat-wrap.sh +0 -20
- package/scripts/tools/pipes.sh +0 -49
- package/scripts/tuning/linux.sh +0 -186
- package/scripts/tuning/macos.sh +0 -56
- package/scripts/uninstall.sh +0 -86
- package/scripts/verify-release-versions +0 -156
- package/scripts/version-sync.sh +0 -714
- package/templates/chezmoi-data/geekom-a9.toml.example +0 -21
- package/templates/chezmoi-data/mac-m1.toml.example +0 -16
- package/templates/chezmoi-data/mac-t2-linux.toml.example +0 -21
- package/templates/chezmoi-data/surface-pro-7p.toml.example +0 -21
- package/templates/projects/go/.github/workflows/ci.yml +0 -31
- package/templates/projects/go/README.md +0 -7
- package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +0 -8
- package/templates/projects/go/go.mod +0 -3
- package/templates/projects/go/go.sum +0 -0
- package/templates/projects/molecule/README.md +0 -7
- package/templates/projects/molecule/converge.yml +0 -7
- package/templates/projects/molecule/molecule.yml +0 -16
- package/templates/projects/node/.github/workflows/ci.yml +0 -30
- package/templates/projects/node/README.md +0 -7
- package/templates/projects/node/package-lock.json +0 -12
- package/templates/projects/node/package.json +0 -10
- package/templates/projects/node/src/index.js +0 -3
- package/templates/projects/packer/README.md +0 -15
- package/templates/projects/packer/main.pkr.hcl +0 -15
- package/templates/projects/python/.github/workflows/ci.yml +0 -34
- package/templates/projects/python/README.md +0 -7
- package/templates/projects/python/pyproject.toml +0 -25
- package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +0 -2
- package/templates/projects/python/tests/test_basic.py +0 -3
package/scripts/ops/prewarm.sh
DELETED
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
|
3
|
-
# Copyright (c) 2015-2026 Sebastien Rousseau
|
|
4
|
-
# Pre-warm shell initialization caches for ultra-fast startup.
|
|
5
|
-
|
|
6
|
-
set -euo pipefail
|
|
7
|
-
|
|
8
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
9
|
-
# shellcheck disable=SC1091
|
|
10
|
-
source "$SCRIPT_DIR/../lib/dot/ui.sh"
|
|
11
|
-
# shellcheck disable=SC1091
|
|
12
|
-
source "$SCRIPT_DIR/../lib/dot/log.sh"
|
|
13
|
-
export DOT_COMMAND="prewarm"
|
|
14
|
-
|
|
15
|
-
# Prevent concurrent execution
|
|
16
|
-
# Prefer XDG runtime dir when it exists and is writable; fallback to /tmp.
|
|
17
|
-
LOCK_BASE="/tmp"
|
|
18
|
-
if [[ -n "${XDG_RUNTIME_DIR:-}" ]] && [[ -d "${XDG_RUNTIME_DIR}" ]] && [[ -w "${XDG_RUNTIME_DIR}" ]]; then
|
|
19
|
-
LOCK_BASE="${XDG_RUNTIME_DIR}"
|
|
20
|
-
fi
|
|
21
|
-
LOCK_FILE="${LOCK_BASE}/dotfiles-prewarm.lock"
|
|
22
|
-
LOCK_DIR="${LOCK_FILE}.d"
|
|
23
|
-
if command -v flock >/dev/null 2>&1; then
|
|
24
|
-
exec 9>"$LOCK_FILE"
|
|
25
|
-
if ! flock -n 9; then
|
|
26
|
-
ui_warn "Already running" "Another instance is active"
|
|
27
|
-
exit 0
|
|
28
|
-
fi
|
|
29
|
-
else
|
|
30
|
-
# Portable fallback when flock is unavailable (e.g. minimal macOS envs).
|
|
31
|
-
if ! mkdir "$LOCK_DIR" 2>/dev/null; then
|
|
32
|
-
ui_warn "Already running" "Another instance is active"
|
|
33
|
-
exit 0
|
|
34
|
-
fi
|
|
35
|
-
trap 'rmdir "$LOCK_DIR" 2>/dev/null || true' EXIT
|
|
36
|
-
fi
|
|
37
|
-
|
|
38
|
-
CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}"
|
|
39
|
-
mkdir -p "$CACHE_DIR/"{zsh,bash,fish,nushell}
|
|
40
|
-
|
|
41
|
-
ui_header "Pre-warming Shell Caches"
|
|
42
|
-
|
|
43
|
-
warm_tool() {
|
|
44
|
-
local tool="$1"
|
|
45
|
-
local cmd="$2"
|
|
46
|
-
local shell="$3"
|
|
47
|
-
local ext="$4"
|
|
48
|
-
|
|
49
|
-
local cache_file="$CACHE_DIR/$shell/$tool-init.$ext"
|
|
50
|
-
local tmp_file="${cache_file}.tmp.$$"
|
|
51
|
-
|
|
52
|
-
if command -v "$tool" >/dev/null 2>&1; then
|
|
53
|
-
if eval "$cmd" >"$tmp_file" 2>/dev/null && [ -s "$tmp_file" ]; then
|
|
54
|
-
mv "$tmp_file" "$cache_file"
|
|
55
|
-
ui_ok "$tool" "Cached for $shell"
|
|
56
|
-
else
|
|
57
|
-
rm -f "$tmp_file"
|
|
58
|
-
ui_warn "$tool" "Failed to cache for $shell"
|
|
59
|
-
fi
|
|
60
|
-
fi
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
ui_section "Zsh"
|
|
64
|
-
warm_tool "mise" "mise activate zsh" "zsh" "zsh"
|
|
65
|
-
warm_tool "starship" "starship init zsh" "zsh" "zsh"
|
|
66
|
-
warm_tool "zoxide" "zoxide init zsh" "zsh" "zsh"
|
|
67
|
-
warm_tool "atuin" "atuin init zsh --disable-up-arrow" "zsh" "zsh"
|
|
68
|
-
warm_tool "fzf" "fzf --zsh" "zsh" "zsh"
|
|
69
|
-
warm_tool "direnv" "direnv hook zsh" "zsh" "zsh"
|
|
70
|
-
|
|
71
|
-
ui_section "Bash"
|
|
72
|
-
warm_tool "mise" "mise activate bash" "bash" "bash"
|
|
73
|
-
warm_tool "starship" "starship init bash" "bash" "bash"
|
|
74
|
-
warm_tool "zoxide" "zoxide init bash" "bash" "bash"
|
|
75
|
-
warm_tool "atuin" "atuin init bash --disable-up-arrow" "bash" "bash"
|
|
76
|
-
warm_tool "fzf" "fzf --bash" "bash" "bash"
|
|
77
|
-
warm_tool "direnv" "direnv hook bash" "bash" "bash"
|
|
78
|
-
|
|
79
|
-
ui_section "Fish"
|
|
80
|
-
warm_tool "mise" "mise activate fish" "fish" "fish"
|
|
81
|
-
warm_tool "starship" "starship init fish" "fish" "fish"
|
|
82
|
-
warm_tool "zoxide" "zoxide init fish" "fish" "fish"
|
|
83
|
-
warm_tool "atuin" "atuin init fish" "fish" "fish"
|
|
84
|
-
warm_tool "fzf" "fzf --fish" "fish" "fish"
|
|
85
|
-
warm_tool "direnv" "direnv hook fish" "fish" "fish"
|
|
86
|
-
|
|
87
|
-
ui_section "Nushell"
|
|
88
|
-
for _nu_entry in "starship:starship init nu:starship.nu" "zoxide:zoxide init nushell:zoxide.nu" "atuin:atuin init nu:atuin.nu"; do
|
|
89
|
-
_nu_tool="${_nu_entry%%:*}"
|
|
90
|
-
_nu_rest="${_nu_entry#*:}"
|
|
91
|
-
_nu_cmd="${_nu_rest%%:*}"
|
|
92
|
-
_nu_file="${_nu_rest#*:}"
|
|
93
|
-
if command -v "$_nu_tool" >/dev/null 2>&1; then
|
|
94
|
-
_nu_tmp="$CACHE_DIR/nushell/${_nu_file}.tmp.$$"
|
|
95
|
-
if eval "$_nu_cmd" >"$_nu_tmp" 2>/dev/null && [ -s "$_nu_tmp" ]; then
|
|
96
|
-
mv "$_nu_tmp" "$CACHE_DIR/nushell/$_nu_file"
|
|
97
|
-
ui_ok "$_nu_tool" "Cached for nushell"
|
|
98
|
-
else
|
|
99
|
-
rm -f "$_nu_tmp"
|
|
100
|
-
ui_warn "$_nu_tool" "Failed to cache for nushell"
|
|
101
|
-
fi
|
|
102
|
-
fi
|
|
103
|
-
done
|
|
104
|
-
|
|
105
|
-
# --- Completions ---
|
|
106
|
-
ui_section "Shell completions"
|
|
107
|
-
ZSH_COMP_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/zsh/completions"
|
|
108
|
-
mkdir -p "$ZSH_COMP_DIR"
|
|
109
|
-
|
|
110
|
-
_prewarm_completion() {
|
|
111
|
-
local name="$1" cmd="$2"
|
|
112
|
-
shift 2
|
|
113
|
-
if command -v "$cmd" >/dev/null 2>&1; then
|
|
114
|
-
if "$cmd" "$@" >"${ZSH_COMP_DIR}/_${name}" 2>/dev/null; then
|
|
115
|
-
ui_ok "$name" "completion generated"
|
|
116
|
-
fi
|
|
117
|
-
fi
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
_prewarm_completion "gh" "gh" completion -s zsh
|
|
121
|
-
_prewarm_completion "just" "just" --completions zsh
|
|
122
|
-
_prewarm_completion "chezmoi" "chezmoi" completion zsh
|
|
123
|
-
_prewarm_completion "kubectl" "kubectl" completion zsh
|
|
124
|
-
_prewarm_completion "mise" "mise" completion zsh
|
|
125
|
-
_prewarm_completion "atuin" "atuin" gen-completions --shell zsh
|
|
126
|
-
|
|
127
|
-
ui_header "Cache Pre-warming Complete"
|
|
128
|
-
dot_log info "prewarm_complete"
|
package/scripts/ops/release.sh
DELETED
|
@@ -1,262 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
|
3
|
-
# Copyright (c) 2015-2026 Sebastien Rousseau
|
|
4
|
-
# =============================================================================
|
|
5
|
-
# Dotfiles Release Script
|
|
6
|
-
# Orchestrates a new release: version bump, changelog, tag, and push
|
|
7
|
-
# Usage: ./scripts/ops/release.sh [patch|minor] [--dry-run]
|
|
8
|
-
# =============================================================================
|
|
9
|
-
|
|
10
|
-
set -euo pipefail
|
|
11
|
-
|
|
12
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
13
|
-
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
14
|
-
# shellcheck source=../../lib/dot/ui.sh
|
|
15
|
-
# shellcheck disable=SC1091
|
|
16
|
-
source "$SCRIPT_DIR/../../lib/dot/ui.sh"
|
|
17
|
-
# shellcheck source=../../lib/dot/log.sh
|
|
18
|
-
# shellcheck disable=SC1091
|
|
19
|
-
source "$SCRIPT_DIR/../../lib/dot/log.sh"
|
|
20
|
-
export DOT_COMMAND="release"
|
|
21
|
-
ui_init
|
|
22
|
-
BOLD="${BOLD:-}"
|
|
23
|
-
NC="${NC:-}"
|
|
24
|
-
|
|
25
|
-
log_info() { ui_info "$@"; }
|
|
26
|
-
log_success() { ui_ok "$@"; }
|
|
27
|
-
log_warn() { ui_warn "$@"; }
|
|
28
|
-
log_error() { ui_err "$@"; }
|
|
29
|
-
log_step() {
|
|
30
|
-
echo ""
|
|
31
|
-
ui_section "$*"
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
# Cross-platform sed in-place (BSD vs GNU)
|
|
35
|
-
sed_in_place() {
|
|
36
|
-
if sed --version >/dev/null 2>&1; then
|
|
37
|
-
sed -i "$@" # GNU
|
|
38
|
-
else
|
|
39
|
-
sed -i '' "$@" # BSD (macOS)
|
|
40
|
-
fi
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
usage() {
|
|
44
|
-
local current
|
|
45
|
-
current=$(get_version)
|
|
46
|
-
local next_patch
|
|
47
|
-
next_patch=$(bump_version "$current" "patch")
|
|
48
|
-
local next_minor
|
|
49
|
-
next_minor=$(bump_version "$current" "minor")
|
|
50
|
-
|
|
51
|
-
cat <<EOF
|
|
52
|
-
Dotfiles Release Tool
|
|
53
|
-
|
|
54
|
-
Usage: $(basename "$0") [BUMP_TYPE] [OPTIONS]
|
|
55
|
-
|
|
56
|
-
Bump Types:
|
|
57
|
-
patch Increment patch version ($current → $next_patch) [default]
|
|
58
|
-
minor Increment minor version ($current → $next_minor)
|
|
59
|
-
|
|
60
|
-
Options:
|
|
61
|
-
-n, --dry-run Show what would be done without making changes
|
|
62
|
-
-h, --help Show this help message
|
|
63
|
-
|
|
64
|
-
Steps performed:
|
|
65
|
-
1. Verify clean working tree and up-to-date branch
|
|
66
|
-
2. Bump version in package.json
|
|
67
|
-
3. Run version-sync to update docs
|
|
68
|
-
4. Update CHANGELOG.md with new version header
|
|
69
|
-
5. Create signed commit and tag
|
|
70
|
-
6. Push commit and tag to origin
|
|
71
|
-
|
|
72
|
-
Examples:
|
|
73
|
-
$(basename "$0") # Patch release
|
|
74
|
-
$(basename "$0") minor # Minor release
|
|
75
|
-
$(basename "$0") --dry-run # Preview patch release
|
|
76
|
-
|
|
77
|
-
EOF
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
# Get current version from package.json
|
|
81
|
-
get_version() {
|
|
82
|
-
grep -o '"version": "[^"]*"' "$PROJECT_ROOT/package.json" | grep -o '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*'
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
# Bump version string
|
|
86
|
-
bump_version() {
|
|
87
|
-
local current="$1" bump_type="$2"
|
|
88
|
-
local major minor patch
|
|
89
|
-
IFS='.' read -r major minor patch <<<"$current"
|
|
90
|
-
|
|
91
|
-
case "$bump_type" in
|
|
92
|
-
patch) patch=$((patch + 1)) ;;
|
|
93
|
-
minor)
|
|
94
|
-
minor=$((minor + 1))
|
|
95
|
-
patch=0
|
|
96
|
-
;;
|
|
97
|
-
*)
|
|
98
|
-
log_error "Unknown bump type: $bump_type"
|
|
99
|
-
exit 1
|
|
100
|
-
;;
|
|
101
|
-
esac
|
|
102
|
-
|
|
103
|
-
echo "${major}.${minor}.${patch}"
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
main() {
|
|
107
|
-
local bump_type="patch"
|
|
108
|
-
local dry_run=0
|
|
109
|
-
|
|
110
|
-
# Parse arguments
|
|
111
|
-
while [[ $# -gt 0 ]]; do
|
|
112
|
-
case "$1" in
|
|
113
|
-
patch | minor)
|
|
114
|
-
bump_type="$1"
|
|
115
|
-
shift
|
|
116
|
-
;;
|
|
117
|
-
-n | --dry-run)
|
|
118
|
-
dry_run=1
|
|
119
|
-
shift
|
|
120
|
-
;;
|
|
121
|
-
-h | --help)
|
|
122
|
-
usage
|
|
123
|
-
exit 0
|
|
124
|
-
;;
|
|
125
|
-
*)
|
|
126
|
-
log_error "Unknown argument: $1"
|
|
127
|
-
usage
|
|
128
|
-
exit 1
|
|
129
|
-
;;
|
|
130
|
-
esac
|
|
131
|
-
done
|
|
132
|
-
|
|
133
|
-
# Concurrency guard
|
|
134
|
-
local lock_dir
|
|
135
|
-
lock_dir="${XDG_RUNTIME_DIR:-${TMPDIR:-/tmp}}"
|
|
136
|
-
if [[ ! -d "$lock_dir" || ! -w "$lock_dir" ]]; then
|
|
137
|
-
lock_dir="${TMPDIR:-/tmp}"
|
|
138
|
-
fi
|
|
139
|
-
LOCK_FILE="$lock_dir/dotfiles-release.lock"
|
|
140
|
-
if command -v flock >/dev/null 2>&1; then
|
|
141
|
-
exec 9>"$LOCK_FILE"
|
|
142
|
-
if ! flock -n 9; then
|
|
143
|
-
ui_warn "Already running" "Another release is in progress"
|
|
144
|
-
exit 0
|
|
145
|
-
fi
|
|
146
|
-
fi
|
|
147
|
-
|
|
148
|
-
cd "$PROJECT_ROOT"
|
|
149
|
-
dot_log info "release_start" "bump_type=$bump_type"
|
|
150
|
-
|
|
151
|
-
local current_version new_version
|
|
152
|
-
current_version=$(get_version)
|
|
153
|
-
new_version=$(bump_version "$current_version" "$bump_type")
|
|
154
|
-
|
|
155
|
-
printf '%b\n' "${BOLD}Dotfiles Release${NC}"
|
|
156
|
-
echo " Current: v${current_version}"
|
|
157
|
-
echo " Next: v${new_version} (${bump_type})"
|
|
158
|
-
echo ""
|
|
159
|
-
|
|
160
|
-
if [[ "$dry_run" == "1" ]]; then
|
|
161
|
-
log_warn "DRY-RUN MODE — no changes will be made"
|
|
162
|
-
echo ""
|
|
163
|
-
fi
|
|
164
|
-
|
|
165
|
-
# ── Step 1: Preflight checks ─────────────────────────────────
|
|
166
|
-
log_step "Preflight checks"
|
|
167
|
-
|
|
168
|
-
if [[ -n "$(git status --porcelain)" ]]; then
|
|
169
|
-
log_error "Working tree is not clean. Commit or stash changes first."
|
|
170
|
-
exit 1
|
|
171
|
-
fi
|
|
172
|
-
log_success "Working tree clean"
|
|
173
|
-
|
|
174
|
-
local branch
|
|
175
|
-
branch=$(git branch --show-current)
|
|
176
|
-
if [[ "$branch" != "master" && "$branch" != "main" ]]; then
|
|
177
|
-
log_warn "On branch '$branch' — releases typically happen from master/main"
|
|
178
|
-
read -rp "Continue anyway? [y/N] " response
|
|
179
|
-
[[ "$response" =~ ^[Yy]$ ]] || exit 0
|
|
180
|
-
fi
|
|
181
|
-
log_success "On branch: $branch"
|
|
182
|
-
|
|
183
|
-
git fetch origin "$branch" --quiet
|
|
184
|
-
local behind
|
|
185
|
-
behind=$(git rev-list --count "HEAD..origin/$branch" 2>/dev/null || echo "0")
|
|
186
|
-
if [[ "$behind" -gt 0 ]]; then
|
|
187
|
-
log_error "Branch is $behind commit(s) behind origin. Pull first."
|
|
188
|
-
exit 1
|
|
189
|
-
fi
|
|
190
|
-
log_success "Branch is up to date with origin"
|
|
191
|
-
|
|
192
|
-
if [[ "$dry_run" == "1" ]]; then
|
|
193
|
-
log_step "Would perform the following"
|
|
194
|
-
log_info "1. Bump package.json: $current_version → $new_version"
|
|
195
|
-
log_info "2. Run version-sync.sh"
|
|
196
|
-
log_info "3. Add v${new_version} header to CHANGELOG.md"
|
|
197
|
-
log_info "4. Commit: 'chore(release): v${new_version}'"
|
|
198
|
-
log_info "5. Tag: v${new_version} (signed)"
|
|
199
|
-
log_info "6. Push commit and tag to origin"
|
|
200
|
-
echo ""
|
|
201
|
-
log_success "Dry run complete"
|
|
202
|
-
exit 0
|
|
203
|
-
fi
|
|
204
|
-
|
|
205
|
-
# ── Step 2: Bump version ──────────────────────────────────────
|
|
206
|
-
log_step "Bump version in package.json"
|
|
207
|
-
sed_in_place "s/\"version\": \"${current_version}\"/\"version\": \"${new_version}\"/" "$PROJECT_ROOT/package.json"
|
|
208
|
-
log_success "package.json: $current_version → $new_version"
|
|
209
|
-
|
|
210
|
-
# ── Step 3: Sync versions across docs ─────────────────────────
|
|
211
|
-
log_step "Sync version across docs"
|
|
212
|
-
if [[ -x "$SCRIPT_DIR/../version-sync.sh" ]]; then
|
|
213
|
-
bash "$SCRIPT_DIR/../version-sync.sh" --force 2>&1 | tail -3
|
|
214
|
-
log_success "Version sync complete"
|
|
215
|
-
else
|
|
216
|
-
log_warn "version-sync.sh not found, skipping"
|
|
217
|
-
fi
|
|
218
|
-
|
|
219
|
-
# ── Step 4: Update CHANGELOG ──────────────────────────────────
|
|
220
|
-
log_step "Update CHANGELOG.md"
|
|
221
|
-
local today
|
|
222
|
-
today=$(date +%Y-%m-%d)
|
|
223
|
-
local changelog="$PROJECT_ROOT/CHANGELOG.md"
|
|
224
|
-
|
|
225
|
-
if [[ -f "$changelog" ]]; then
|
|
226
|
-
# Insert new version header after the first "# Changelog" line
|
|
227
|
-
sed_in_place "/^## v${current_version}/i\\
|
|
228
|
-
## v${new_version} (${today})\\
|
|
229
|
-
\\
|
|
230
|
-
### Changed\\
|
|
231
|
-
\\
|
|
232
|
-
- Version bump to v${new_version}.\\
|
|
233
|
-
" "$changelog"
|
|
234
|
-
log_success "Added v${new_version} section to CHANGELOG.md"
|
|
235
|
-
else
|
|
236
|
-
log_warn "CHANGELOG.md not found, skipping"
|
|
237
|
-
fi
|
|
238
|
-
|
|
239
|
-
# ── Step 5: Commit and tag ────────────────────────────────────
|
|
240
|
-
log_step "Create signed commit and tag"
|
|
241
|
-
git add -A
|
|
242
|
-
git commit -S -m "chore(release): v${new_version}"
|
|
243
|
-
git tag -s "v${new_version}" -m "Release v${new_version}"
|
|
244
|
-
log_success "Committed and tagged v${new_version}"
|
|
245
|
-
|
|
246
|
-
# ── Step 6: Push ──────────────────────────────────────────────
|
|
247
|
-
log_step "Push to origin"
|
|
248
|
-
read -rp "Push v${new_version} to origin/$branch? [y/N] " response
|
|
249
|
-
if [[ "$response" =~ ^[Yy]$ ]]; then
|
|
250
|
-
git push origin "$branch" --follow-tags
|
|
251
|
-
log_success "Pushed v${new_version} to origin"
|
|
252
|
-
else
|
|
253
|
-
log_warn "Skipped push. Run manually:"
|
|
254
|
-
echo " git push origin $branch --follow-tags"
|
|
255
|
-
fi
|
|
256
|
-
|
|
257
|
-
echo ""
|
|
258
|
-
dot_log info "release_end" "version=$new_version"
|
|
259
|
-
log_success "Release v${new_version} complete"
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
main "$@"
|