@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
|
@@ -1,393 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
render_with_liquid: false
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Version Synchronization System
|
|
6
|
-
|
|
7
|
-
The version synchronization system ensures that all version references across the repository remain consistent with the version specified in `package.json`.
|
|
8
|
-
|
|
9
|
-
## Overview
|
|
10
|
-
|
|
11
|
-
### Problem Statement
|
|
12
|
-
|
|
13
|
-
Large repositories often have version numbers scattered across multiple files:
|
|
14
|
-
|
|
15
|
-
- README badges
|
|
16
|
-
- Documentation headers
|
|
17
|
-
- Feature version stamps
|
|
18
|
-
- Configuration files
|
|
19
|
-
|
|
20
|
-
Manually keeping these synchronized is error-prone and time-consuming.
|
|
21
|
-
|
|
22
|
-
### Solution Architecture
|
|
23
|
-
|
|
24
|
-
This system provides automated version synchronization through:
|
|
25
|
-
|
|
26
|
-
1. **CI/CD Workflow** (`.github/workflows/sync-versions.yml`) - Automated synchronization on version changes
|
|
27
|
-
2. **Local Script** (`scripts/version-sync.sh`) - Manual synchronization and verification
|
|
28
|
-
3. **Verification System** - Ensures all references remain consistent
|
|
29
|
-
|
|
30
|
-
## Components
|
|
31
|
-
|
|
32
|
-
### 1. GitHub Actions Workflow
|
|
33
|
-
|
|
34
|
-
**Location**: `.github/workflows/sync-versions.yml`
|
|
35
|
-
|
|
36
|
-
**Triggers**:
|
|
37
|
-
|
|
38
|
-
- Push to `main` branch when `package.json` changes
|
|
39
|
-
- Pull requests affecting `package.json`
|
|
40
|
-
- Manual dispatch with optional target version
|
|
41
|
-
|
|
42
|
-
**Process**:
|
|
43
|
-
|
|
44
|
-
1. **Detect Changes** - Compares current vs previous `package.json` version
|
|
45
|
-
2. **Sync Versions** - Updates all markdown files with version references
|
|
46
|
-
3. **Verify Consistency** - Ensures all references match target version
|
|
47
|
-
4. **Commit & Push** - Automatically commits changes (except on PRs)
|
|
48
|
-
|
|
49
|
-
**Features**:
|
|
50
|
-
|
|
51
|
-
- Backup creation before changes
|
|
52
|
-
- Comprehensive change reporting
|
|
53
|
-
- PR comment integration
|
|
54
|
-
- Artifact preservation for rollback
|
|
55
|
-
|
|
56
|
-
### 2. Local Synchronization Script
|
|
57
|
-
|
|
58
|
-
**Location**: `scripts/version-sync.sh`
|
|
59
|
-
|
|
60
|
-
**Usage**:
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
# Sync to current package.json version
|
|
64
|
-
./scripts/version-sync.sh
|
|
65
|
-
|
|
66
|
-
# Sync to specific version
|
|
67
|
-
./scripts/version-sync.sh 1.2.3
|
|
68
|
-
|
|
69
|
-
# Preview changes without applying
|
|
70
|
-
./scripts/version-sync.sh --dry-run
|
|
71
|
-
|
|
72
|
-
# Verify current consistency
|
|
73
|
-
./scripts/version-sync.sh --verify
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
**Options**:
|
|
77
|
-
|
|
78
|
-
- `--dry-run` - Preview changes without applying
|
|
79
|
-
- `--verify` - Check version consistency only
|
|
80
|
-
- `--backup` / `--no-backup` - Control backup creation
|
|
81
|
-
- `--force` - Force sync even if no changes detected
|
|
82
|
-
|
|
83
|
-
### 3. Version Patterns
|
|
84
|
-
|
|
85
|
-
The system recognizes and updates these patterns:
|
|
86
|
-
|
|
87
|
-
#### README.md
|
|
88
|
-
|
|
89
|
-
```markdown
|
|
90
|
-
[]
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
#### Documentation Files
|
|
94
|
-
|
|
95
|
-
```markdown
|
|
96
|
-
**Version**: v0.2.503
|
|
97
|
-
**Dotfiles Version**: v0.2.503
|
|
98
|
-
Version: v0.2.503
|
|
99
|
-
version 0.2.485
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
## Integration Points
|
|
103
|
-
|
|
104
|
-
### CI/CD Pipeline Integration
|
|
105
|
-
|
|
106
|
-
The workflow integrates with the existing CI pipeline:
|
|
107
|
-
|
|
108
|
-
```yaml
|
|
109
|
-
# Existing CI workflow can depend on version sync
|
|
110
|
-
needs: [sync-versions, lint-shell, test-linux]
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
### Git Hooks Integration
|
|
114
|
-
|
|
115
|
-
For local development, add to `.git/hooks/pre-commit`:
|
|
116
|
-
|
|
117
|
-
```bash
|
|
118
|
-
#!/bin/bash
|
|
119
|
-
# Check version consistency before commits
|
|
120
|
-
./scripts/version-sync.sh --verify || {
|
|
121
|
-
echo "Version inconsistency detected. Run: ./scripts/version-sync.sh"
|
|
122
|
-
exit 1
|
|
123
|
-
}
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
### Package.json Integration
|
|
127
|
-
|
|
128
|
-
Version changes in `package.json` automatically trigger synchronization:
|
|
129
|
-
|
|
130
|
-
```json
|
|
131
|
-
{
|
|
132
|
-
"name": "@sebastienrousseau/dotfiles",
|
|
133
|
-
"version": "0.2.485", // Changes here trigger sync
|
|
134
|
-
"scripts": {
|
|
135
|
-
"version-sync": "./scripts/version-sync.sh",
|
|
136
|
-
"version-verify": "./scripts/version-sync.sh --verify"
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
## Workflow Examples
|
|
142
|
-
|
|
143
|
-
### Scenario 1: Version Bump
|
|
144
|
-
|
|
145
|
-
```bash
|
|
146
|
-
# Developer updates package.json version
|
|
147
|
-
npm version patch
|
|
148
|
-
|
|
149
|
-
# Push to main
|
|
150
|
-
git push origin main
|
|
151
|
-
|
|
152
|
-
# GitHub Actions automatically:
|
|
153
|
-
# 1. Detects version change
|
|
154
|
-
# 2. Updates all markdown files
|
|
155
|
-
# 3. Commits and pushes changes
|
|
156
|
-
# 4. Verifies consistency
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
### Scenario 2: PR Review
|
|
160
|
-
|
|
161
|
-
```bash
|
|
162
|
-
# PR with package.json changes
|
|
163
|
-
# GitHub Actions automatically:
|
|
164
|
-
# 1. Checks version consistency
|
|
165
|
-
# 2. Reports any mismatches
|
|
166
|
-
# 3. Comments on PR with sync status
|
|
167
|
-
# 4. Provides diff preview
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
### Scenario 3: Manual Sync
|
|
171
|
-
|
|
172
|
-
```bash
|
|
173
|
-
# Local development
|
|
174
|
-
./scripts/version-sync.sh --dry-run # Preview changes
|
|
175
|
-
./scripts/version-sync.sh # Apply changes
|
|
176
|
-
./scripts/version-sync.sh --verify # Confirm consistency
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
## File Detection Logic
|
|
180
|
-
|
|
181
|
-
### Automatic Discovery
|
|
182
|
-
|
|
183
|
-
The system automatically discovers files containing version references:
|
|
184
|
-
|
|
185
|
-
```bash
|
|
186
|
-
rg -l "v?[0-9]+\.[0-9]+\.[0-9]+" --type md
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
### Known Files
|
|
190
|
-
|
|
191
|
-
These files are always included even if they don't currently contain versions:
|
|
192
|
-
|
|
193
|
-
- `README.md`
|
|
194
|
-
- `docs/reference/FEATURES.md`
|
|
195
|
-
- Any file matching version patterns
|
|
196
|
-
|
|
197
|
-
### Exclusions
|
|
198
|
-
|
|
199
|
-
Files that are intentionally excluded:
|
|
200
|
-
|
|
201
|
-
- `CHANGELOG.md` - May contain historical versions
|
|
202
|
-
- `package.json` - Source of truth
|
|
203
|
-
- `docs/security/COMPLIANCE.md` - Includes external compliance spec versions
|
|
204
|
-
- `docs/reference/FONTS.md` - Includes upstream font release versions
|
|
205
|
-
- `docs/archive/LEGACY_ROADMAP.md` - Keeps historical release markers
|
|
206
|
-
- `docs/archive/PLAN.md` - Captures multi-release planning references
|
|
207
|
-
- `docs/operations/VERSION_SYNC.md` - Documentation examples and usage
|
|
208
|
-
- `docs/architecture/WALKTHROUGH.md` - Contains environment-specific tag examples
|
|
209
|
-
- `docs/guides/WSL2_NIX_TROUBLESHOOTING.md` - Contains IP addresses and version-like values
|
|
210
|
-
- Binary files
|
|
211
|
-
- Test fixtures
|
|
212
|
-
|
|
213
|
-
## Error Handling
|
|
214
|
-
|
|
215
|
-
### Common Issues
|
|
216
|
-
|
|
217
|
-
#### Version Mismatch
|
|
218
|
-
|
|
219
|
-
```text
|
|
220
|
-
❌ Found inconsistent release in docs/reference/FEATURES.md: vX.Y.Z (expected: vA.B.C)
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
**Solution**: Run `./scripts/version-sync.sh` to fix
|
|
224
|
-
|
|
225
|
-
#### Missing Dependencies
|
|
226
|
-
|
|
227
|
-
```text
|
|
228
|
-
❌ jq is required but not installed
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
**Solution**: Install dependencies (`jq`, `rg`)
|
|
232
|
-
|
|
233
|
-
#### Permission Issues
|
|
234
|
-
|
|
235
|
-
```text
|
|
236
|
-
❌ Permission denied writing to README.md
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
**Solution**: Check file permissions and Git status
|
|
240
|
-
|
|
241
|
-
### Recovery Procedures
|
|
242
|
-
|
|
243
|
-
#### Rollback Changes
|
|
244
|
-
|
|
245
|
-
```bash
|
|
246
|
-
# Restore from backup
|
|
247
|
-
cp .version-sync-backup/README.md.*.backup README.md
|
|
248
|
-
|
|
249
|
-
# Or restore from Git
|
|
250
|
-
git checkout HEAD~1 -- README.md
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
#### Force Resync
|
|
254
|
-
|
|
255
|
-
```bash
|
|
256
|
-
./scripts/version-sync.sh --force
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
## Monitoring & Maintenance
|
|
260
|
-
|
|
261
|
-
### Health Checks
|
|
262
|
-
|
|
263
|
-
```bash
|
|
264
|
-
# Daily verification (add to cron)
|
|
265
|
-
./scripts/version-sync.sh --verify || echo "Version drift detected"
|
|
266
|
-
```
|
|
267
|
-
|
|
268
|
-
### Metrics Tracking
|
|
269
|
-
|
|
270
|
-
The GitHub Actions workflow provides metrics:
|
|
271
|
-
|
|
272
|
-
- Files scanned
|
|
273
|
-
- Files updated
|
|
274
|
-
- Verification status
|
|
275
|
-
- Processing time
|
|
276
|
-
|
|
277
|
-
### Backup Strategy
|
|
278
|
-
|
|
279
|
-
- Local backups in `.version-sync-backup/`
|
|
280
|
-
- GitHub Actions artifacts (30-day retention)
|
|
281
|
-
- Git history for rollback
|
|
282
|
-
|
|
283
|
-
## Security Considerations
|
|
284
|
-
|
|
285
|
-
### Token Permissions
|
|
286
|
-
|
|
287
|
-
```yaml
|
|
288
|
-
permissions:
|
|
289
|
-
contents: write # Required for commits
|
|
290
|
-
pull-requests: write # Required for PR comments
|
|
291
|
-
```
|
|
292
|
-
|
|
293
|
-
### Validation
|
|
294
|
-
|
|
295
|
-
- Version format validation (`x.y.z` pattern)
|
|
296
|
-
- File path validation (no directory traversal)
|
|
297
|
-
- Change verification before commit
|
|
298
|
-
|
|
299
|
-
### Audit Trail
|
|
300
|
-
|
|
301
|
-
- All changes logged in Git history
|
|
302
|
-
- GitHub Actions run history
|
|
303
|
-
- Backup preservation
|
|
304
|
-
|
|
305
|
-
## Performance Optimization
|
|
306
|
-
|
|
307
|
-
### Caching Strategy
|
|
308
|
-
|
|
309
|
-
- Git operations use shallow fetch when possible
|
|
310
|
-
- Pattern compilation cached
|
|
311
|
-
- File discovery optimized with `ripgrep`
|
|
312
|
-
|
|
313
|
-
### Parallel Processing
|
|
314
|
-
|
|
315
|
-
- File processing is sequential but optimized
|
|
316
|
-
- Git operations batched
|
|
317
|
-
- Verification runs concurrently with updates
|
|
318
|
-
|
|
319
|
-
### Resource Usage
|
|
320
|
-
|
|
321
|
-
- Typical run time: 30-60 seconds
|
|
322
|
-
- Memory usage: <100MB
|
|
323
|
-
- Network usage: Minimal (only Git operations)
|
|
324
|
-
|
|
325
|
-
## Future Enhancements
|
|
326
|
-
|
|
327
|
-
### Planned Features
|
|
328
|
-
|
|
329
|
-
1. **Smart Version Detection** - Semantic version awareness
|
|
330
|
-
2. **Template Support** - Custom version patterns
|
|
331
|
-
3. **Multi-Format Support** - YAML, JSON, TOML files
|
|
332
|
-
4. **Rollback Automation** - One-command rollback
|
|
333
|
-
5. **Integration Testing** - End-to-end workflow tests
|
|
334
|
-
|
|
335
|
-
### Extension Points
|
|
336
|
-
|
|
337
|
-
- Custom pattern definitions
|
|
338
|
-
- File-specific update rules
|
|
339
|
-
- Pre/post-sync hooks
|
|
340
|
-
- External validation services
|
|
341
|
-
|
|
342
|
-
## Troubleshooting
|
|
343
|
-
|
|
344
|
-
### Debug Mode
|
|
345
|
-
|
|
346
|
-
```bash
|
|
347
|
-
# Enable verbose output
|
|
348
|
-
DEBUG=1 ./scripts/version-sync.sh --dry-run
|
|
349
|
-
```
|
|
350
|
-
|
|
351
|
-
### Common Solutions
|
|
352
|
-
|
|
353
|
-
| Issue | Solution |
|
|
354
|
-
|-------|----------|
|
|
355
|
-
| Script not executable | `chmod +x scripts/version-sync.sh` |
|
|
356
|
-
| Missing tools | `apt install jq ripgrep` (Ubuntu) |
|
|
357
|
-
| Permission denied | Check Git status and file permissions |
|
|
358
|
-
| Workflow not triggering | Verify `package.json` changes are in push |
|
|
359
|
-
| Changes not committed | Check branch protection rules |
|
|
360
|
-
|
|
361
|
-
### Log Analysis
|
|
362
|
-
|
|
363
|
-
```bash
|
|
364
|
-
# View GitHub Actions logs
|
|
365
|
-
gh run list --workflow=sync-versions.yml
|
|
366
|
-
gh run view <run-id> --log
|
|
367
|
-
```
|
|
368
|
-
|
|
369
|
-
## Contributing
|
|
370
|
-
|
|
371
|
-
### Testing Changes
|
|
372
|
-
|
|
373
|
-
```bash
|
|
374
|
-
# Test local changes
|
|
375
|
-
./scripts/version-sync.sh --dry-run
|
|
376
|
-
|
|
377
|
-
# Test workflow changes (requires GitHub CLI)
|
|
378
|
-
gh workflow run sync-versions.yml --ref feature-branch
|
|
379
|
-
```
|
|
380
|
-
|
|
381
|
-
### Adding New Patterns
|
|
382
|
-
|
|
383
|
-
1. Update pattern regex in script
|
|
384
|
-
2. Add test cases
|
|
385
|
-
3. Update documentation
|
|
386
|
-
4. Submit PR with examples
|
|
387
|
-
|
|
388
|
-
---
|
|
389
|
-
|
|
390
|
-
**Last Updated**: 2026-02-15
|
|
391
|
-
**Version**: v0.2.503
|
|
392
|
-
**Maintainer**: Principal Automation Engineer
|
|
393
|
-
**Status**: Production Ready ✅
|
package/docs/packaging.md
DELETED
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
render_with_liquid: false
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
<!-- SPDX-License-Identifier: Apache-2.0 OR MIT -->
|
|
6
|
-
<!-- Copyright (c) 2015-2026 Sebastien Rousseau -->
|
|
7
|
-
|
|
8
|
-
# Packaging guide
|
|
9
|
-
|
|
10
|
-
**Audience: distribution maintainers.** If you are packaging `dot` for
|
|
11
|
-
Debian, Fedora, Arch, Homebrew, nixpkgs, Scoop, or anything else, this
|
|
12
|
-
page is written for you. Everything a packager normally has to
|
|
13
|
-
reverse-engineer — the licence grant, the toolchain floor, how the
|
|
14
|
-
dependencies are pinned, how to build and test offline, and how to
|
|
15
|
-
verify what you downloaded — is here.
|
|
16
|
-
|
|
17
|
-
Existing packaging inputs live in [`pkg/`](https://github.com/sebastienrousseau/dotfiles/tree/main/pkg),
|
|
18
|
-
one directory per format.
|
|
19
|
-
|
|
20
|
-
## What this software is
|
|
21
|
-
|
|
22
|
-
A shell framework, not a compiled program. The shipped artefact is:
|
|
23
|
-
|
|
24
|
-
- `bin/dot` — the CLI dispatcher (bash)
|
|
25
|
-
- `lib/dot/`, `scripts/` — sourced bash libraries and subcommands
|
|
26
|
-
- `share/man/man1/dot.1` — the man page, **generated** from the CLI's
|
|
27
|
-
command registry at build time
|
|
28
|
-
- `share/{bash-completion,zsh,fish}/…` — completions, also generated
|
|
29
|
-
- `defaults/` — the chezmoi source tree the CLI applies to `$HOME`
|
|
30
|
-
|
|
31
|
-
There is nothing to compile and no architecture-specific output. The
|
|
32
|
-
release archive is `noarch`/`any`.
|
|
33
|
-
|
|
34
|
-
## Licence grant
|
|
35
|
-
|
|
36
|
-
**`Apache-2.0 OR MIT`** — the SPDX expression declared in
|
|
37
|
-
`package.json` and in `REUSE.toml`. Both full texts ship in the
|
|
38
|
-
repository and in the release archive as `LICENSE-APACHE` and
|
|
39
|
-
`LICENSE-MIT`, and `make install` places both under
|
|
40
|
-
`$(PREFIX)/share/doc/dotfiles/`.
|
|
41
|
-
|
|
42
|
-
This is a dual grant, not a conjunction: a downstream recipient may
|
|
43
|
-
comply with **either** licence, at their option. For distributions
|
|
44
|
-
that require a single choice, MIT is the permissive default; choose
|
|
45
|
-
Apache-2.0 if you want the explicit patent grant.
|
|
46
|
-
|
|
47
|
-
Per-file licensing is machine-readable via [REUSE](https://reuse.software/):
|
|
48
|
-
`REUSE.toml` at the repository root annotates the tree, and
|
|
49
|
-
`reuse lint` runs in CI. Vendored third-party material, where present,
|
|
50
|
-
is annotated separately and keeps its own licence.
|
|
51
|
-
|
|
52
|
-
## Minimum toolchain
|
|
53
|
-
|
|
54
|
-
Full policy, per-distro mapping, and the rules for when a floor may
|
|
55
|
-
rise: [`MINIMUM-TOOLCHAIN.md`](MINIMUM-TOOLCHAIN.md). The short form
|
|
56
|
-
for a packaging recipe:
|
|
57
|
-
|
|
58
|
-
| Dependency | Minimum | Kind |
|
|
59
|
-
|---|---|---|
|
|
60
|
-
| `bash` | 3.2 | **required at runtime** |
|
|
61
|
-
| `git` | 2.34 | required at runtime |
|
|
62
|
-
| `curl` | any | required by the bootstrap path only |
|
|
63
|
-
| `chezmoi` | 2.47.1 | **required at runtime** — the CLI is a control plane over chezmoi |
|
|
64
|
-
| `zsh` / `fish` / `nushell` | 5.8 / 4.0 / 0.98 | optional; only if the user wants that shell's integration |
|
|
65
|
-
| `jq`, `gum`, `starship`, `fzf` | any | optional; enable JSON output, rich prompts, and interactive pickers |
|
|
66
|
-
| `go` | 1.23 | **build/test only** — fuzz harnesses and the two Go TUIs. Not needed to build or run the package. |
|
|
67
|
-
|
|
68
|
-
Suggested dependency split for a distro package: `Depends: bash (>= 3.2),
|
|
69
|
-
git (>= 2.34), chezmoi (>= 2.47.1)`; `Recommends: jq, zsh`;
|
|
70
|
-
`Suggests: fish, nushell, gum, starship, fzf`.
|
|
71
|
-
|
|
72
|
-
## Dependency pin model
|
|
73
|
-
|
|
74
|
-
Every dependency this project *builds and tests against* is pinned,
|
|
75
|
-
and every pin is committed:
|
|
76
|
-
|
|
77
|
-
| Surface | Pinned by | Notes |
|
|
78
|
-
|---|---|---|
|
|
79
|
-
| Development toolchain (node, go, rust, and ~20 CLI tools) | `mise.toml` + `mise.lock` + `mise-versions.lock.json` | mise is the package manager; the lock carries checksums |
|
|
80
|
-
| Documentation build (Python) | `requirements-docs.txt` | Hash-pinned (`--require-hashes`-compatible), compiled from `requirements-docs.in` |
|
|
81
|
-
| Node tooling | `package.json` | Dev-only |
|
|
82
|
-
| Nix | `flake.lock`, `nix/flake.lock` | Root flake provides the dev shell; `nix/flake.nix` provides `packages.default` |
|
|
83
|
-
| GitHub Actions | 40-hex commit SHA on every `uses:` | Enforced by `tools/ci/lint-reusable-pins.sh` and OpenSSF Scorecard |
|
|
84
|
-
| Container bases | `FROM image:tag@sha256:<digest>` | Policy in [`security/CI_PINNING.md`](security/CI_PINNING.md) |
|
|
85
|
-
| Binaries fetched during CI | `sha256sum -c` against a committed manifest | `security/remote-installers.sha256` |
|
|
86
|
-
|
|
87
|
-
None of these are needed to *build the package*: the release archive
|
|
88
|
-
is self-contained and its build has no network step. They exist so
|
|
89
|
-
that the tests you may want to run are reproducible.
|
|
90
|
-
|
|
91
|
-
Full provenance policy: [`supply-chain/README.md`](https://github.com/sebastienrousseau/dotfiles/blob/main/supply-chain/README.md).
|
|
92
|
-
|
|
93
|
-
## Building the package
|
|
94
|
-
|
|
95
|
-
From a release tarball (recommended — it is the attested artefact):
|
|
96
|
-
|
|
97
|
-
```sh
|
|
98
|
-
tar -xzf dot-0.2.520.tar.gz
|
|
99
|
-
cd dot-0.2.520
|
|
100
|
-
make install PREFIX=/usr DESTDIR="$pkgdir"
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
From a git checkout:
|
|
104
|
-
|
|
105
|
-
```sh
|
|
106
|
-
make # generates man page + completions into build/
|
|
107
|
-
make install PREFIX=/usr DESTDIR="$pkgdir"
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
Both honour `PREFIX` (default `/usr/local`) and `DESTDIR`, and install
|
|
111
|
-
to FHS paths:
|
|
112
|
-
|
|
113
|
-
```
|
|
114
|
-
$(DESTDIR)$(PREFIX)/bin/dot -> symlink into libexec
|
|
115
|
-
$(DESTDIR)$(PREFIX)/lib/dotfiles/ program tree
|
|
116
|
-
$(DESTDIR)$(PREFIX)/share/man/man1/dot.1
|
|
117
|
-
$(DESTDIR)$(PREFIX)/share/bash-completion/completions/dot
|
|
118
|
-
$(DESTDIR)$(PREFIX)/share/zsh/site-functions/_dot
|
|
119
|
-
$(DESTDIR)$(PREFIX)/share/fish/vendor_completions.d/dot.fish
|
|
120
|
-
$(DESTDIR)$(PREFIX)/share/doc/dotfiles/{LICENSE-APACHE,LICENSE-MIT,README.md,CHANGELOG.md}
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
Every directory is individually overridable — `BINDIR`, `MANDIR`,
|
|
124
|
-
`DOCDIR`, `LIBEXECDIR`, `BASHCOMPDIR`, `ZSHCOMPDIR`, `FISHCOMPDIR` —
|
|
125
|
-
for distributions whose layout differs. If your `BINDIR` and
|
|
126
|
-
`LIBEXECDIR` are not siblings under `PREFIX`, also set `DOT_LINK` to
|
|
127
|
-
the correct relative or absolute symlink target; `make install` fails
|
|
128
|
-
loudly rather than leaving a dangling link.
|
|
129
|
-
|
|
130
|
-
`make uninstall` removes exactly what `make install` placed.
|
|
131
|
-
|
|
132
|
-
## Testing offline
|
|
133
|
-
|
|
134
|
-
There are no vendored build dependencies to unbundle, and the checks a
|
|
135
|
-
packager cares about need no network:
|
|
136
|
-
|
|
137
|
-
```sh
|
|
138
|
-
make installcheck DESTDIR="$pkgdir" # asserts the installed tree is complete and runs
|
|
139
|
-
make -C "$pkgdir" smoke # from a release tarball: run the CLI in place
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
`installcheck` verifies the `bin` symlink resolves, the man page and
|
|
143
|
-
all three completions are present, the licences are installed, and the
|
|
144
|
-
installed binary reports the expected version and renders help — from
|
|
145
|
-
a sandboxed `HOME`, with no source checkout and no network.
|
|
146
|
-
|
|
147
|
-
The full suite also runs offline:
|
|
148
|
-
|
|
149
|
-
```sh
|
|
150
|
-
make test # unit + regression; no network
|
|
151
|
-
make examples # every example under examples/ executed
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
`make test-integration` and anything under `install/provision/` **do**
|
|
155
|
-
touch the network and modify `$HOME`; do not run them in a build
|
|
156
|
-
chroot.
|
|
157
|
-
|
|
158
|
-
## Verifying what you downloaded
|
|
159
|
-
|
|
160
|
-
Do not package an unverified tarball. Every release carries four
|
|
161
|
-
independent attestations, and the consumer-side recipe with copy-paste
|
|
162
|
-
commands is in
|
|
163
|
-
[`pkg/VERIFY.md`](https://github.com/sebastienrousseau/dotfiles/blob/main/pkg/VERIFY.md)
|
|
164
|
-
and [`security/VERIFY_RELEASE.md`](security/VERIFY_RELEASE.md).
|
|
165
|
-
|
|
166
|
-
Minimum a packager should do:
|
|
167
|
-
|
|
168
|
-
```sh
|
|
169
|
-
TAG=v0.2.520
|
|
170
|
-
REPO=sebastienrousseau/dotfiles
|
|
171
|
-
|
|
172
|
-
# SLSA build provenance on the tarball itself
|
|
173
|
-
gh attestation verify "dot-${TAG#v}.tar.gz" --repo "$REPO"
|
|
174
|
-
|
|
175
|
-
# Or, without the gh CLI: the signed manifest covering every asset
|
|
176
|
-
gh release download "$TAG" --repo "$REPO" \
|
|
177
|
-
--pattern ALL_SHA256SUMS --pattern 'ALL_SHA256SUMS.*'
|
|
178
|
-
cosign verify-blob \
|
|
179
|
-
--certificate ALL_SHA256SUMS.pem --signature ALL_SHA256SUMS.sig \
|
|
180
|
-
--certificate-identity-regexp "^https://github.com/$REPO/" \
|
|
181
|
-
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
|
|
182
|
-
ALL_SHA256SUMS
|
|
183
|
-
sha256sum -c ALL_SHA256SUMS
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
Tags are signed with an SSH ed25519 key published in
|
|
187
|
-
[`KEYS.asc`](https://github.com/sebastienrousseau/dotfiles/blob/main/KEYS.asc),
|
|
188
|
-
which is itself a `git allowed_signers` file:
|
|
189
|
-
|
|
190
|
-
```sh
|
|
191
|
-
git -c gpg.ssh.allowedSignersFile=KEYS.asc tag -v v0.2.520
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
An SBOM ships with every release in both CycloneDX and SPDX JSON.
|
|
195
|
-
|
|
196
|
-
## Reproducibility
|
|
197
|
-
|
|
198
|
-
The release archives are built deterministically — `tar --sort=name
|
|
199
|
-
--mtime='1970-01-01' --owner=0 --group=0 --numeric-owner`, and
|
|
200
|
-
`zip -X -D` over a normalised tree — so two builds of the same tag
|
|
201
|
-
produce identical bytes.
|
|
202
|
-
|
|
203
|
-
This is a statement about the *archive build*, which is exercised by
|
|
204
|
-
CI on every release. It is **not** a verified end-to-end
|
|
205
|
-
reproducible-builds claim: no diffoscope comparison of two independent
|
|
206
|
-
rebuilds runs in CI today. Treat it as "deterministic archiving",
|
|
207
|
-
not as a reproducible-builds certification.
|
|
208
|
-
|
|
209
|
-
## Channel notes
|
|
210
|
-
|
|
211
|
-
| Channel | File | How it is produced |
|
|
212
|
-
|---|---|---|
|
|
213
|
-
| Homebrew | `pkg/brew/dot.rb` | `release-distribute-homebrew.yml` rewrites `url` + `sha256`, opens a PR on `sebastienrousseau/homebrew-tap` |
|
|
214
|
-
| Scoop | `pkg/scoop/dot.json` | `release-distribute-scoop.yml` rewrites version + hashes via `jq`, opens a PR on `sebastienrousseau/scoop-bucket` |
|
|
215
|
-
| AUR | `pkg/aur/PKGBUILD` | `release-distribute-aur.yml` rewrites `pkgver` + `sha256sums`, regenerates `.SRCINFO`, pushes to the AUR |
|
|
216
|
-
| Nix | `pkg/nix/` → `nix/flake.nix` | `packages.default` in `nix/flake.nix` |
|
|
217
|
-
| deb / rpm | *not yet provided* | Contributions welcome; `make install` already produces a correct `DESTDIR` tree, so a recipe is thin |
|
|
218
|
-
|
|
219
|
-
If you are packaging for a distribution not listed here, please open
|
|
220
|
-
an issue — a link to your package will be added, and the `pkg/`
|
|
221
|
-
directory is the right place for the recipe to live so it stays in
|
|
222
|
-
lockstep with the release build.
|