@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,8 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
|
3
|
-
# Copyright (c) 2015-2026 Sebastien Rousseau
|
|
4
|
-
# Compat shim: the canonical script moved to tools/ci/ during the repo reorg.
|
|
5
|
-
# Pinned reusable workflows on main still reference the old path;
|
|
6
|
-
# this delegates so they keep working until the next pin bump.
|
|
7
|
-
set -euo pipefail
|
|
8
|
-
exec bash "$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)/tools/ci/check-copyright-headers.sh" "$@"
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
|
3
|
-
# Copyright (c) 2015-2026 Sebastien Rousseau
|
|
4
|
-
# Compat shim: the canonical script moved to tools/ci/ during the repo reorg.
|
|
5
|
-
# Pinned reusable workflows on main still reference the old path;
|
|
6
|
-
# this delegates so they keep working until the next pin bump.
|
|
7
|
-
set -euo pipefail
|
|
8
|
-
exec bash "$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)/tools/ci/check-shell-preamble.sh" "$@"
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
|
3
|
-
# Copyright (c) 2015-2026 Sebastien Rousseau
|
|
4
|
-
# Compat shim: the canonical script moved to tools/ci/ during the repo reorg.
|
|
5
|
-
# Pinned reusable workflows on main still reference the old path;
|
|
6
|
-
# this delegates so they keep working until the next pin bump.
|
|
7
|
-
set -euo pipefail
|
|
8
|
-
exec bash "$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)/tools/ci/guard-gitleaks-checkout.sh" "$@"
|
package/scripts/demo/record.sh
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
|
3
|
-
# Copyright (c) 2015-2026 Sebastien Rousseau
|
|
4
|
-
set -euo pipefail
|
|
5
|
-
|
|
6
|
-
OUT="${1:-$HOME/.dotfiles/docs/demo/demo.gif}"
|
|
7
|
-
DURATION="${DURATION:-30}"
|
|
8
|
-
FPS="${FPS:-15}"
|
|
9
|
-
|
|
10
|
-
record_ffmpeg() {
|
|
11
|
-
if command -v ffmpeg >/dev/null; then
|
|
12
|
-
echo "Recording with ffmpeg for ${DURATION}s..."
|
|
13
|
-
if [ "$(uname -s)" = "Darwin" ]; then
|
|
14
|
-
# macOS (AVFoundation)
|
|
15
|
-
ffmpeg -y -t "$DURATION" -f avfoundation -i "1:none" -vf "fps=$FPS,scale=1024:-1:flags=lanczos" "$OUT"
|
|
16
|
-
else
|
|
17
|
-
# Linux (X11)
|
|
18
|
-
ffmpeg -y -t "$DURATION" -f x11grab -i :0.0 -vf "fps=$FPS,scale=1024:-1:flags=lanczos" "$OUT"
|
|
19
|
-
fi
|
|
20
|
-
else
|
|
21
|
-
echo "ffmpeg not found. Install it and retry."
|
|
22
|
-
exit 1
|
|
23
|
-
fi
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
record_wf_recorder() {
|
|
27
|
-
if command -v wf-recorder >/dev/null; then
|
|
28
|
-
echo "Recording with wf-recorder for ${DURATION}s..."
|
|
29
|
-
wf-recorder -f "$OUT" -t "$DURATION"
|
|
30
|
-
else
|
|
31
|
-
return 1
|
|
32
|
-
fi
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
if [ "$(uname -s)" = "Linux" ]; then
|
|
36
|
-
if record_wf_recorder; then
|
|
37
|
-
exit 0
|
|
38
|
-
fi
|
|
39
|
-
fi
|
|
40
|
-
|
|
41
|
-
record_ffmpeg
|
|
42
|
-
|
|
43
|
-
printf "Saved demo to %s\n" "$OUT"
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
|
3
|
-
# Copyright (c) 2015-2026 Sebastien Rousseau
|
|
4
|
-
## A2A v0.3 and agent card conformance validation.
|
|
5
|
-
|
|
6
|
-
set -euo pipefail
|
|
7
|
-
|
|
8
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
9
|
-
REPO_ROOT="${REPO_ROOT:-$(cd "$SCRIPT_DIR/../.." && pwd)}"
|
|
10
|
-
|
|
11
|
-
# shellcheck source=../../lib/dot/ui.sh
|
|
12
|
-
source "$SCRIPT_DIR/../../lib/dot/ui.sh"
|
|
13
|
-
|
|
14
|
-
JSON_MODE=0
|
|
15
|
-
STRICT_MODE=0
|
|
16
|
-
while [[ $# -gt 0 ]]; do
|
|
17
|
-
case "$1" in
|
|
18
|
-
--json | -j)
|
|
19
|
-
JSON_MODE=1
|
|
20
|
-
shift
|
|
21
|
-
;;
|
|
22
|
-
--strict | -s)
|
|
23
|
-
STRICT_MODE=1
|
|
24
|
-
shift
|
|
25
|
-
;;
|
|
26
|
-
*)
|
|
27
|
-
shift
|
|
28
|
-
;;
|
|
29
|
-
esac
|
|
30
|
-
done
|
|
31
|
-
|
|
32
|
-
command -v jq >/dev/null 2>&1 || {
|
|
33
|
-
echo "jq is required for A2A conformance checks." >&2
|
|
34
|
-
exit 1
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
a2a_card="$REPO_ROOT/.well-known/agent-card.json"
|
|
38
|
-
legacy_doc="$REPO_ROOT/.well-known/agent.json"
|
|
39
|
-
internal_card="$REPO_ROOT/defaults/dot_config/dotfiles/agent-card.json"
|
|
40
|
-
agent_profiles="$REPO_ROOT/defaults/dot_config/dotfiles/agent-profiles.json"
|
|
41
|
-
status="healthy"
|
|
42
|
-
issues=()
|
|
43
|
-
|
|
44
|
-
# Check primary A2A v0.3 card
|
|
45
|
-
if [[ ! -f "$a2a_card" ]]; then
|
|
46
|
-
issues+=("missing:.well-known/agent-card.json")
|
|
47
|
-
fi
|
|
48
|
-
|
|
49
|
-
# Check legacy agent.json
|
|
50
|
-
if [[ ! -f "$legacy_doc" ]]; then
|
|
51
|
-
issues+=("missing:.well-known/agent.json")
|
|
52
|
-
fi
|
|
53
|
-
|
|
54
|
-
# Check internal card
|
|
55
|
-
if [[ ! -f "$internal_card" ]]; then
|
|
56
|
-
issues+=("missing:agent-card.json")
|
|
57
|
-
fi
|
|
58
|
-
|
|
59
|
-
# Check agent profiles
|
|
60
|
-
if [[ ! -f "$agent_profiles" ]]; then
|
|
61
|
-
issues+=("missing:agent-profiles.json")
|
|
62
|
-
fi
|
|
63
|
-
|
|
64
|
-
if [[ "${#issues[@]}" -eq 0 ]]; then
|
|
65
|
-
# Validate A2A v0.3 card
|
|
66
|
-
spec_version="$(jq -r '.specVersion // empty' "$a2a_card")"
|
|
67
|
-
[[ "$spec_version" == "0.3" ]] || issues+=("specVersion:expected 0.3, got $spec_version")
|
|
68
|
-
|
|
69
|
-
# Skills array
|
|
70
|
-
jq -e '.skills | type == "array"' "$a2a_card" >/dev/null 2>&1 || issues+=("skills:missing or not array")
|
|
71
|
-
skills_count="$(jq '.skills | length' "$a2a_card" 2>/dev/null || echo 0)"
|
|
72
|
-
[[ "$skills_count" -gt 0 ]] || issues+=("skills:empty array")
|
|
73
|
-
|
|
74
|
-
# Authentication block
|
|
75
|
-
jq -e '.authentication' "$a2a_card" >/dev/null 2>&1 || issues+=("authentication:missing")
|
|
76
|
-
|
|
77
|
-
# Signing metadata
|
|
78
|
-
signing_method="$(jq -r '.signing.method // empty' "$a2a_card")"
|
|
79
|
-
[[ -n "$signing_method" ]] || issues+=("signing:missing method")
|
|
80
|
-
|
|
81
|
-
# Capabilities
|
|
82
|
-
jq -e '.capabilities' "$a2a_card" >/dev/null 2>&1 || issues+=("capabilities:missing")
|
|
83
|
-
|
|
84
|
-
# Protocol must be "a2a" not "a2a-ready"
|
|
85
|
-
if jq -e '.protocols | index("a2a-ready")' "$a2a_card" >/dev/null 2>&1; then
|
|
86
|
-
issues+=("protocols:should use 'a2a' not 'a2a-ready'")
|
|
87
|
-
fi
|
|
88
|
-
jq -e '.protocols | index("a2a")' "$a2a_card" >/dev/null 2>&1 || issues+=("protocols:missing 'a2a'")
|
|
89
|
-
|
|
90
|
-
# Validate internal card also uses v0.3 and "a2a"
|
|
91
|
-
internal_spec="$(jq -r '.specVersion // empty' "$internal_card")"
|
|
92
|
-
[[ "$internal_spec" == "0.3" ]] || issues+=("internal-card:specVersion expected 0.3")
|
|
93
|
-
if jq -e '.protocols | index("a2a-ready")' "$internal_card" >/dev/null 2>&1; then
|
|
94
|
-
issues+=("internal-card:should use 'a2a' not 'a2a-ready'")
|
|
95
|
-
fi
|
|
96
|
-
|
|
97
|
-
# Validate legacy doc points to new card
|
|
98
|
-
jq -e '.a2aCard' "$legacy_doc" >/dev/null 2>&1 || issues+=("legacy:missing a2aCard pointer")
|
|
99
|
-
if jq -e '.protocols | index("a2a-ready")' "$legacy_doc" >/dev/null 2>&1; then
|
|
100
|
-
issues+=("legacy:should use 'a2a' not 'a2a-ready'")
|
|
101
|
-
fi
|
|
102
|
-
|
|
103
|
-
# Name consistency
|
|
104
|
-
a2a_name="$(jq -r '.name // empty' "$a2a_card")"
|
|
105
|
-
internal_name="$(jq -r '.name // empty' "$internal_card")"
|
|
106
|
-
legacy_name="$(jq -r '.name // empty' "$legacy_doc")"
|
|
107
|
-
[[ "$a2a_name" == "$internal_name" ]] || issues+=("name:mismatch between a2a-card and internal card")
|
|
108
|
-
[[ "$a2a_name" == "$legacy_name" ]] || issues+=("name:mismatch between a2a-card and legacy doc")
|
|
109
|
-
|
|
110
|
-
# Default profile validation
|
|
111
|
-
default_profile="$(jq -r '.defaultProfile // empty' "$internal_card")"
|
|
112
|
-
if [[ -n "$default_profile" ]]; then
|
|
113
|
-
jq -e --arg profile "$default_profile" '.profiles[$profile]' "$agent_profiles" >/dev/null 2>&1 || issues+=("default-profile:missing in agent-profiles.json")
|
|
114
|
-
fi
|
|
115
|
-
|
|
116
|
-
# Card signing in internal card
|
|
117
|
-
jq -e '.security.cardSigning' "$internal_card" >/dev/null 2>&1 || issues+=("internal-card:missing cardSigning in security")
|
|
118
|
-
fi
|
|
119
|
-
|
|
120
|
-
if [[ "${#issues[@]}" -gt 0 ]]; then
|
|
121
|
-
status="issues"
|
|
122
|
-
fi
|
|
123
|
-
|
|
124
|
-
# Build issues JSON safely
|
|
125
|
-
if [[ "${#issues[@]}" -gt 0 ]]; then
|
|
126
|
-
issues_json="$(printf '%s\n' "${issues[@]}" | jq -R . | jq -s .)"
|
|
127
|
-
else
|
|
128
|
-
issues_json="[]"
|
|
129
|
-
fi
|
|
130
|
-
|
|
131
|
-
payload="$(jq -n \
|
|
132
|
-
--arg status "$status" \
|
|
133
|
-
--arg a2a_card "$a2a_card" \
|
|
134
|
-
--arg legacy_doc "$legacy_doc" \
|
|
135
|
-
--arg internal_card "$internal_card" \
|
|
136
|
-
--arg agent_profiles "$agent_profiles" \
|
|
137
|
-
--argjson strict "$([[ "$STRICT_MODE" -eq 1 ]] && echo true || echo false)" \
|
|
138
|
-
--argjson issues "$issues_json" \
|
|
139
|
-
'{status: $status, strict: $strict, specVersion: "0.3", files: {a2a_card: $a2a_card, legacy_doc: $legacy_doc, internal_card: $internal_card, agent_profiles: $agent_profiles}, issues: $issues}')"
|
|
140
|
-
|
|
141
|
-
if [[ "$JSON_MODE" -eq 1 ]]; then
|
|
142
|
-
printf '%s\n' "$payload"
|
|
143
|
-
else
|
|
144
|
-
ui_dot_banner "AI and Agents"
|
|
145
|
-
ui_header "A2A v0.3 Conformance"
|
|
146
|
-
if [[ "$status" == "healthy" ]]; then
|
|
147
|
-
ui_ok "Status" "healthy"
|
|
148
|
-
ui_ok "Spec version" "0.3"
|
|
149
|
-
ui_ok "A2A card" "$a2a_card"
|
|
150
|
-
ui_ok "Legacy doc" "$legacy_doc"
|
|
151
|
-
ui_ok "Internal card" "$internal_card"
|
|
152
|
-
else
|
|
153
|
-
ui_warn "Status" "issues"
|
|
154
|
-
while IFS= read -r issue; do
|
|
155
|
-
[[ -n "$issue" ]] || continue
|
|
156
|
-
ui_warn "Issue" "$issue"
|
|
157
|
-
done < <(printf '%s' "$payload" | jq -r '.issues[]')
|
|
158
|
-
fi
|
|
159
|
-
fi
|
|
160
|
-
|
|
161
|
-
if [[ "$STRICT_MODE" -eq 1 && "$status" != "healthy" ]]; then
|
|
162
|
-
exit 1
|
|
163
|
-
fi
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
|
3
|
-
# Copyright (c) 2015-2026 Sebastien Rousseau
|
|
4
|
-
# Alias governance checks:
|
|
5
|
-
# - duplicate alias names
|
|
6
|
-
# - risky overrides must be gated
|
|
7
|
-
# - no hardcoded /Users paths
|
|
8
|
-
|
|
9
|
-
set -euo pipefail
|
|
10
|
-
|
|
11
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
12
|
-
manifest_script="$SCRIPT_DIR/aliases-manifest.sh"
|
|
13
|
-
deprecations_file="$SCRIPT_DIR/../dot/data/alias-deprecations.tsv"
|
|
14
|
-
policy="${DOTFILES_ALIAS_POLICY:-standard}"
|
|
15
|
-
if [[ -n "${CI:-}" && "${DOTFILES_ALIAS_POLICY:-}" == "" ]]; then
|
|
16
|
-
policy="strict"
|
|
17
|
-
fi
|
|
18
|
-
|
|
19
|
-
if [[ ! -x "$manifest_script" ]]; then
|
|
20
|
-
echo "ERROR: aliases-manifest.sh not found or not executable" >&2
|
|
21
|
-
exit 1
|
|
22
|
-
fi
|
|
23
|
-
|
|
24
|
-
tmp_manifest="$(umask 077 && mktemp)"
|
|
25
|
-
trap 'rm -f "$tmp_manifest"' EXIT
|
|
26
|
-
|
|
27
|
-
bash "$manifest_script" >"$tmp_manifest"
|
|
28
|
-
|
|
29
|
-
errors=0
|
|
30
|
-
|
|
31
|
-
echo "Alias Governance"
|
|
32
|
-
echo ""
|
|
33
|
-
echo "Policy: $policy"
|
|
34
|
-
echo ""
|
|
35
|
-
|
|
36
|
-
version_ge() {
|
|
37
|
-
local a="${1#v}" b="${2#v}"
|
|
38
|
-
local IFS=.
|
|
39
|
-
local i
|
|
40
|
-
read -r -a av <<<"$a"
|
|
41
|
-
read -r -a bv <<<"$b"
|
|
42
|
-
for i in 0 1 2; do
|
|
43
|
-
local ai="${av[$i]:-0}"
|
|
44
|
-
local bi="${bv[$i]:-0}"
|
|
45
|
-
((10#$ai > 10#$bi)) && return 0
|
|
46
|
-
((10#$ai < 10#$bi)) && return 1
|
|
47
|
-
done
|
|
48
|
-
return 0
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
repo_version="0.0.0"
|
|
52
|
-
if [[ -f "$SCRIPT_DIR/../../package.json" ]]; then
|
|
53
|
-
repo_version="$(sed -n 's/^[[:space:]]*"version"[[:space:]]*:[[:space:]]*"\([0-9][0-9.]*\)".*/\1/p' "$SCRIPT_DIR/../../package.json" | head -1)"
|
|
54
|
-
fi
|
|
55
|
-
repo_version="${repo_version:-0.0.0}"
|
|
56
|
-
|
|
57
|
-
# ripgrep is preferred but is NOT guaranteed to be installed (the CI
|
|
58
|
-
# runners and minimal setups often lack it, which is why
|
|
59
|
-
# aliases-manifest.sh already carries a grep fallback). Without one
|
|
60
|
-
# here, `rg` exiting 127 reads as "no match": every gated override was
|
|
61
|
-
# reported as ungated, and this gate failed with false errors on any
|
|
62
|
-
# machine without ripgrep.
|
|
63
|
-
_gov_grep_file() { # <ere-pattern> <file>
|
|
64
|
-
if command -v rg >/dev/null 2>&1; then
|
|
65
|
-
rg -q "$1" "$2"
|
|
66
|
-
else
|
|
67
|
-
grep -qE "$1" "$2"
|
|
68
|
-
fi
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
_gov_grep_tree() { # <ere-pattern> <dir>...
|
|
72
|
-
local pattern="$1"
|
|
73
|
-
shift
|
|
74
|
-
if command -v rg >/dev/null 2>&1; then
|
|
75
|
-
rg -q --glob '*.sh' --glob '*.aliases.sh' --glob '*.tmpl' "$pattern" "$@" 2>/dev/null
|
|
76
|
-
else
|
|
77
|
-
grep -rqE --include='*.sh' --include='*.aliases.sh' --include='*.tmpl' \
|
|
78
|
-
"$pattern" "$@" 2>/dev/null
|
|
79
|
-
fi
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
# 1) Duplicate alias names
|
|
83
|
-
dupes="$(awk -F'\t' '{count[$1]++} END {for (k in count) if (count[k] > 1) print k}' "$tmp_manifest" | sort)"
|
|
84
|
-
if [[ -n "$dupes" ]]; then
|
|
85
|
-
if [[ "$policy" == "strict" ]]; then
|
|
86
|
-
echo "ERROR: duplicate alias names detected:"
|
|
87
|
-
printf "%s\n" "$dupes" | sed 's/^/ - /'
|
|
88
|
-
errors=$((errors + 1))
|
|
89
|
-
else
|
|
90
|
-
echo "WARN: duplicate alias names detected (review recommended):"
|
|
91
|
-
printf "%s\n" "$dupes" | sed 's/^/ - /'
|
|
92
|
-
fi
|
|
93
|
-
else
|
|
94
|
-
echo "OK: no duplicate alias names"
|
|
95
|
-
fi
|
|
96
|
-
|
|
97
|
-
# 2) Risky overrides must be gated
|
|
98
|
-
while IFS=$'\t' read -r name _value file _line; do
|
|
99
|
-
case "$name" in
|
|
100
|
-
cd | sudo | su | cp | mv | rm | mkdir | alias)
|
|
101
|
-
# GNU coreutils aliases are intentionally centralized overrides.
|
|
102
|
-
if [[ "$file" == *"/aliases/gnu/"* ]]; then
|
|
103
|
-
continue
|
|
104
|
-
fi
|
|
105
|
-
if ! _gov_grep_file 'DOTFILES_(ENABLE|SAFE|ALIAS)' "$file"; then
|
|
106
|
-
echo "ERROR: risky override '$name' in $file is not gated by a DOTFILES_* flag"
|
|
107
|
-
errors=$((errors + 1))
|
|
108
|
-
fi
|
|
109
|
-
;;
|
|
110
|
-
esac
|
|
111
|
-
done <"$tmp_manifest"
|
|
112
|
-
|
|
113
|
-
if [[ $errors -eq 0 ]]; then
|
|
114
|
-
echo "OK: risky overrides are gated"
|
|
115
|
-
fi
|
|
116
|
-
|
|
117
|
-
# 3) Hardcoded /Users path check (alias value only)
|
|
118
|
-
hardcoded="$(awk -F'\t' '$2 ~ /\/Users\// {print $1 "\t" $2 "\t" $3 ":" $4}' "$tmp_manifest")"
|
|
119
|
-
if [[ -n "$hardcoded" ]]; then
|
|
120
|
-
echo "ERROR: hardcoded /Users paths detected in aliases:"
|
|
121
|
-
printf "%s\n" "$hardcoded" | sed 's/^/ - /'
|
|
122
|
-
errors=$((errors + 1))
|
|
123
|
-
else
|
|
124
|
-
echo "OK: no hardcoded /Users paths in aliases"
|
|
125
|
-
fi
|
|
126
|
-
|
|
127
|
-
# 4) Deprecation window enforcement
|
|
128
|
-
if [[ -f "$deprecations_file" ]]; then
|
|
129
|
-
expired_hits=0
|
|
130
|
-
while IFS=$'\t' read -r alias_name replacement remove_in; do
|
|
131
|
-
[[ -z "${alias_name:-}" ]] && continue
|
|
132
|
-
[[ "${alias_name:0:1}" == "#" ]] && continue
|
|
133
|
-
if version_ge "$repo_version" "$remove_in"; then
|
|
134
|
-
alias_found=0
|
|
135
|
-
if awk -F'\t' -v n="$alias_name" '$1==n{found=1} END{exit(found?0:1)}' "$tmp_manifest"; then
|
|
136
|
-
alias_found=1
|
|
137
|
-
fi
|
|
138
|
-
function_found=0
|
|
139
|
-
if _gov_grep_tree "^[[:space:]]*(function[[:space:]]+)?${alias_name}[[:space:]]*\\(\\)" \
|
|
140
|
-
"$SCRIPT_DIR/../../defaults/.chezmoitemplates/aliases" \
|
|
141
|
-
"$SCRIPT_DIR/../../scripts/dot"; then
|
|
142
|
-
function_found=1
|
|
143
|
-
fi
|
|
144
|
-
if [[ $alias_found -eq 1 || $function_found -eq 1 ]]; then
|
|
145
|
-
[[ $expired_hits -eq 0 ]] && echo "ERROR: expired deprecated aliases still present:"
|
|
146
|
-
echo " - $alias_name (remove_in=$remove_in, replacement=$replacement)"
|
|
147
|
-
expired_hits=$((expired_hits + 1))
|
|
148
|
-
fi
|
|
149
|
-
fi
|
|
150
|
-
done < <(cut -f1-3 "$deprecations_file")
|
|
151
|
-
if [[ $expired_hits -gt 0 ]]; then
|
|
152
|
-
errors=$((errors + 1))
|
|
153
|
-
else
|
|
154
|
-
echo "OK: no expired deprecated aliases (repo version: v$repo_version)"
|
|
155
|
-
fi
|
|
156
|
-
fi
|
|
157
|
-
|
|
158
|
-
echo ""
|
|
159
|
-
if [[ $errors -eq 0 ]]; then
|
|
160
|
-
echo "Alias governance checks passed."
|
|
161
|
-
exit 0
|
|
162
|
-
fi
|
|
163
|
-
|
|
164
|
-
echo "Alias governance checks failed: $errors issue(s)." >&2
|
|
165
|
-
exit 1
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
|
3
|
-
# Copyright (c) 2015-2026 Sebastien Rousseau
|
|
4
|
-
set -euo pipefail
|
|
5
|
-
|
|
6
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
7
|
-
# shellcheck source=../../lib/dot/utils.sh
|
|
8
|
-
# shellcheck disable=SC1091
|
|
9
|
-
source "$SCRIPT_DIR/../../lib/dot/utils.sh"
|
|
10
|
-
|
|
11
|
-
src_dir="$(require_source_dir)"
|
|
12
|
-
manifest="$src_dir/scripts/diagnostics/aliases-manifest.sh"
|
|
13
|
-
if [[ ! -x "$manifest" ]]; then
|
|
14
|
-
echo "Alias manifest not found: $manifest" >&2
|
|
15
|
-
exit 1
|
|
16
|
-
fi
|
|
17
|
-
|
|
18
|
-
cat <<'HEADER'
|
|
19
|
-
# Alias Cheatsheet
|
|
20
|
-
|
|
21
|
-
Auto-generated from alias manifest.
|
|
22
|
-
|
|
23
|
-
## Core shortcuts
|
|
24
|
-
HEADER
|
|
25
|
-
|
|
26
|
-
# Core list we care about (preserve ordering).
|
|
27
|
-
core_aliases=(c q e h _ i l ll la lr lra lt lta a d)
|
|
28
|
-
|
|
29
|
-
tmp_manifest="$(umask 077 && mktemp)"
|
|
30
|
-
trap 'rm -f "$tmp_manifest"' EXIT
|
|
31
|
-
bash "$manifest" >"$tmp_manifest"
|
|
32
|
-
|
|
33
|
-
pick_alias() {
|
|
34
|
-
local name="$1"
|
|
35
|
-
shift
|
|
36
|
-
local value=""
|
|
37
|
-
local pattern
|
|
38
|
-
while [[ $# -gt 0 ]]; do
|
|
39
|
-
pattern="$1"
|
|
40
|
-
value="$(awk -F$'\t' -v key="$name" -v pat="$pattern" '$1==key && $3 ~ pat {print $2; exit}' "$tmp_manifest")"
|
|
41
|
-
[[ -n "$value" ]] && {
|
|
42
|
-
printf '%s\n' "$value"
|
|
43
|
-
return 0
|
|
44
|
-
}
|
|
45
|
-
shift
|
|
46
|
-
done
|
|
47
|
-
value="$(awk -F$'\t' -v key="$name" '$1==key {print $2; exit}' "$tmp_manifest")"
|
|
48
|
-
[[ -n "$value" ]] && printf '%s\n' "$value"
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
for a in "${core_aliases[@]}"; do
|
|
52
|
-
case "$a" in
|
|
53
|
-
a)
|
|
54
|
-
line="$(pick_alias "$a" "/ai/")"
|
|
55
|
-
;;
|
|
56
|
-
d)
|
|
57
|
-
line="$(pick_alias "$a" "/system/" "/configuration/" "/docker/")"
|
|
58
|
-
;;
|
|
59
|
-
*)
|
|
60
|
-
line="$(pick_alias "$a")"
|
|
61
|
-
;;
|
|
62
|
-
esac
|
|
63
|
-
if [[ -n "$line" ]]; then
|
|
64
|
-
printf '%s\n' "- \`$a\` $line"
|
|
65
|
-
fi
|
|
66
|
-
done
|
|
67
|
-
|
|
68
|
-
cat <<'FOOTER'
|
|
69
|
-
|
|
70
|
-
## Notes
|
|
71
|
-
|
|
72
|
-
- Regenerate: `dot aliases cheatsheet`
|
|
73
|
-
- Apply changes: `chezmoi apply`
|
|
74
|
-
FOOTER
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
|
3
|
-
# Copyright (c) 2015-2026 Sebastien Rousseau
|
|
4
|
-
# Emit alias manifest as TSV:
|
|
5
|
-
# name<TAB>value<TAB>file<TAB>line
|
|
6
|
-
|
|
7
|
-
set -euo pipefail
|
|
8
|
-
|
|
9
|
-
usage() {
|
|
10
|
-
cat <<'EOF'
|
|
11
|
-
Usage: aliases-manifest.sh [chezmoi-source-dir]
|
|
12
|
-
|
|
13
|
-
Emit alias definitions as tab-separated rows:
|
|
14
|
-
name<TAB>value<TAB>file<TAB>line
|
|
15
|
-
EOF
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
resolve_source_dir() {
|
|
19
|
-
if [[ -n "${CHEZMOI_SOURCE_DIR:-}" && -d "${CHEZMOI_SOURCE_DIR}" ]]; then
|
|
20
|
-
printf "%s\n" "${CHEZMOI_SOURCE_DIR}"
|
|
21
|
-
return
|
|
22
|
-
fi
|
|
23
|
-
if [[ -d "$HOME/.dotfiles" ]]; then
|
|
24
|
-
printf "%s\n" "$HOME/.dotfiles"
|
|
25
|
-
return
|
|
26
|
-
fi
|
|
27
|
-
if [[ -d "$HOME/.local/share/chezmoi" ]]; then
|
|
28
|
-
printf "%s\n" "$HOME/.local/share/chezmoi"
|
|
29
|
-
return
|
|
30
|
-
fi
|
|
31
|
-
return 1
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
# Descend into the chezmoi source subdir (per `.chezmoiroot`) if
|
|
35
|
-
# present — post-Phase-4b (v0.2.503) the aliases + functions trees
|
|
36
|
-
# live under `defaults/.chezmoitemplates/`, not at the repo root.
|
|
37
|
-
# See `resolve_chezmoi_source_dir` in lib/dot/utils.sh.
|
|
38
|
-
resolve_chezmoi_source_dir() {
|
|
39
|
-
local root="$1"
|
|
40
|
-
if [[ -f "$root/.chezmoiroot" ]]; then
|
|
41
|
-
local sub
|
|
42
|
-
sub="$(head -1 "$root/.chezmoiroot" | tr -d '[:space:]')"
|
|
43
|
-
if [[ -n "$sub" && -d "$root/$sub" ]]; then
|
|
44
|
-
printf "%s\n" "$root/$sub"
|
|
45
|
-
return
|
|
46
|
-
fi
|
|
47
|
-
fi
|
|
48
|
-
printf "%s\n" "$root"
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
case "${1:-}" in
|
|
52
|
-
-h | --help)
|
|
53
|
-
usage
|
|
54
|
-
exit 0
|
|
55
|
-
;;
|
|
56
|
-
-*)
|
|
57
|
-
printf 'Unknown option: %s\n' "$1" >&2
|
|
58
|
-
usage >&2
|
|
59
|
-
exit 2
|
|
60
|
-
;;
|
|
61
|
-
esac
|
|
62
|
-
|
|
63
|
-
src_root="${1:-$(resolve_source_dir)}"
|
|
64
|
-
src_dir="$(resolve_chezmoi_source_dir "$src_root")"
|
|
65
|
-
|
|
66
|
-
alias_pattern='^[[:space:]]*alias[[:space:]]+[A-Za-z0-9_.:-]+='
|
|
67
|
-
conditional_alias_pattern='^[[:space:]]*[^#"'\'']*&&[[:space:]]*alias[[:space:]]+[A-Za-z0-9_.:-]+='
|
|
68
|
-
search_paths=(
|
|
69
|
-
"$src_dir/.chezmoitemplates/aliases"
|
|
70
|
-
"$src_dir/.chezmoitemplates/functions"
|
|
71
|
-
)
|
|
72
|
-
|
|
73
|
-
if command -v rg >/dev/null 2>&1; then
|
|
74
|
-
rg -n -e "$alias_pattern" -e "$conditional_alias_pattern" "${search_paths[@]}"
|
|
75
|
-
else
|
|
76
|
-
grep -rEn -e "$alias_pattern" -e "$conditional_alias_pattern" "${search_paths[@]}"
|
|
77
|
-
fi | sed -E 's#^([^:]+):([0-9]+):.*alias[[:space:]]+([A-Za-z0-9_.:-]+)=(.*)$#\3\t\4\t\1\t\2#'
|