@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,277 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
|
3
|
-
# Copyright (c) 2015-2026 Sebastien Rousseau
|
|
4
|
-
# Dotfiles CLI - Aliases Commands (extracted from tools.sh)
|
|
5
|
-
# aliases list|search|why|stats|cheatsheet|tiers, alias-check
|
|
6
|
-
|
|
7
|
-
set -euo pipefail
|
|
8
|
-
|
|
9
|
-
# Guard: only define functions, do not execute on source
|
|
10
|
-
# These functions are sourced by tools.sh for dispatch.
|
|
11
|
-
|
|
12
|
-
alias_manifest_path() {
|
|
13
|
-
local src_dir
|
|
14
|
-
src_dir="$(require_source_dir)"
|
|
15
|
-
printf "%s\n" "$src_dir/scripts/diagnostics/aliases-manifest.sh"
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
emit_alias_manifest() {
|
|
19
|
-
local manifest
|
|
20
|
-
manifest="$(alias_manifest_path)"
|
|
21
|
-
if [[ ! -x "$manifest" ]]; then
|
|
22
|
-
die "Alias manifest script not found: $manifest"
|
|
23
|
-
fi
|
|
24
|
-
bash "$manifest"
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
cmd_aliases() {
|
|
28
|
-
local subcommand="${1:-list}"
|
|
29
|
-
shift || true
|
|
30
|
-
|
|
31
|
-
alias_tier_enabled() {
|
|
32
|
-
local csv="${1:-all}"
|
|
33
|
-
local token="${2:-}"
|
|
34
|
-
if [[ "$csv" == "all" ]]; then
|
|
35
|
-
return 0
|
|
36
|
-
fi
|
|
37
|
-
[[ ",${csv}," == *",${token},"* ]]
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
case "$subcommand" in
|
|
41
|
-
list)
|
|
42
|
-
ui_header "Aliases"
|
|
43
|
-
echo ""
|
|
44
|
-
ui_table_begin "Name" "Value" "Source"
|
|
45
|
-
while IFS=$'\t' read -r name value file line; do
|
|
46
|
-
ui_table_add "$name" "${value:0:60}" "${file##*/}:$line"
|
|
47
|
-
done < <(emit_alias_manifest | sort -t $'\t' -k1,1)
|
|
48
|
-
ui_table_end
|
|
49
|
-
;;
|
|
50
|
-
search)
|
|
51
|
-
local query="${1:-}"
|
|
52
|
-
if [[ -z "$query" ]]; then
|
|
53
|
-
die "Usage: dot aliases search <term>"
|
|
54
|
-
fi
|
|
55
|
-
ui_header "Alias Search"
|
|
56
|
-
ui_info "Query" "$query"
|
|
57
|
-
echo ""
|
|
58
|
-
local results
|
|
59
|
-
results="$(emit_alias_manifest | rg -i "$query" || true)"
|
|
60
|
-
if [[ -z "$results" ]]; then
|
|
61
|
-
ui_warn "No matches" "$query"
|
|
62
|
-
return 1
|
|
63
|
-
fi
|
|
64
|
-
ui_table_begin "Name" "Value" "Source"
|
|
65
|
-
while IFS=$'\t' read -r name value file line; do
|
|
66
|
-
ui_table_add "$name" "${value:0:60}" "$file:$line"
|
|
67
|
-
done <<<"$results"
|
|
68
|
-
ui_table_end
|
|
69
|
-
;;
|
|
70
|
-
why)
|
|
71
|
-
local alias_name="${1:-}"
|
|
72
|
-
if [[ -z "$alias_name" ]]; then
|
|
73
|
-
die "Usage: dot aliases why <alias>"
|
|
74
|
-
fi
|
|
75
|
-
ui_header "Alias Details"
|
|
76
|
-
ui_info "Alias" "$alias_name"
|
|
77
|
-
echo ""
|
|
78
|
-
local rows
|
|
79
|
-
rows="$(emit_alias_manifest | awk -F'\t' -v a="$alias_name" '$1==a')"
|
|
80
|
-
local src_dir deprecations_file deprecation
|
|
81
|
-
src_dir="$(require_source_dir)"
|
|
82
|
-
deprecations_file="$src_dir/scripts/dot/data/alias-deprecations.tsv"
|
|
83
|
-
if [[ -n "$rows" ]]; then
|
|
84
|
-
printf "%s\n" "$rows" | while IFS=$'\t' read -r name value file line; do
|
|
85
|
-
ui_ok "$name" "${value}"
|
|
86
|
-
printf " source: %s:%s\n" "$file" "$line"
|
|
87
|
-
done
|
|
88
|
-
fi
|
|
89
|
-
if [[ -f "$deprecations_file" ]]; then
|
|
90
|
-
deprecation="$(awk -F'\t' -v a="$alias_name" 'BEGIN{IGNORECASE=0} $1 !~ /^#/ && $1==a {print $0; exit}' "$deprecations_file")"
|
|
91
|
-
if [[ -n "$deprecation" ]]; then
|
|
92
|
-
local _a replacement remove_in note
|
|
93
|
-
IFS=$'\t' read -r _a replacement remove_in note <<<"$deprecation"
|
|
94
|
-
echo ""
|
|
95
|
-
ui_warn "Deprecated" "yes"
|
|
96
|
-
ui_info "Replacement" "$replacement"
|
|
97
|
-
ui_info "Remove In" "$remove_in"
|
|
98
|
-
ui_info "Note" "$note"
|
|
99
|
-
fi
|
|
100
|
-
fi
|
|
101
|
-
if [[ -z "$rows" && -z "$deprecation" ]]; then
|
|
102
|
-
ui_warn "Alias" "not found: $alias_name"
|
|
103
|
-
return 1
|
|
104
|
-
fi
|
|
105
|
-
;;
|
|
106
|
-
stats)
|
|
107
|
-
local histfile="${HISTFILE:-$HOME/.zsh_history}"
|
|
108
|
-
if [[ ! -f "$histfile" ]]; then
|
|
109
|
-
die "History file not found: $histfile"
|
|
110
|
-
fi
|
|
111
|
-
ui_header "Alias Usage (History)"
|
|
112
|
-
ui_info "History file" "$histfile"
|
|
113
|
-
echo ""
|
|
114
|
-
local tmp_aliases
|
|
115
|
-
tmp_aliases="$(umask 077 && mktemp)"
|
|
116
|
-
trap 'rm -f "$tmp_aliases"' RETURN
|
|
117
|
-
emit_alias_manifest | awk -F'\t' '{print $1}' | sort -u >"$tmp_aliases"
|
|
118
|
-
awk -v aliases_file="$tmp_aliases" '
|
|
119
|
-
BEGIN {
|
|
120
|
-
while ((getline < aliases_file) > 0) alias[$1]=1
|
|
121
|
-
}
|
|
122
|
-
{
|
|
123
|
-
line=$0
|
|
124
|
-
sub(/^:[[:space:]]*[0-9]+:[0-9]+;/, "", line) # zsh EXTENDED_HISTORY prefix
|
|
125
|
-
split(line, parts, /[[:space:]]+/)
|
|
126
|
-
cmd=parts[1]
|
|
127
|
-
if (cmd in alias) count[cmd]++
|
|
128
|
-
}
|
|
129
|
-
END {
|
|
130
|
-
for (k in count) printf "%7d %s\n", count[k], k
|
|
131
|
-
}
|
|
132
|
-
' "$histfile" | sort -nr | head -20
|
|
133
|
-
rm -f "$tmp_aliases"
|
|
134
|
-
;;
|
|
135
|
-
cheatsheet)
|
|
136
|
-
# Destination defaults to the checkout's docs/ but can be
|
|
137
|
-
# redirected with `--output PATH` (or `-` for stdout). The
|
|
138
|
-
# hardcoded path made this the one subcommand that could not be
|
|
139
|
-
# exercised without writing into the working tree:
|
|
140
|
-
# require_source_dir() resolves from the location of the lib that
|
|
141
|
-
# was sourced, so it always pointed at the real repo no matter
|
|
142
|
-
# how the sandbox redirected $HOME/.dotfiles.
|
|
143
|
-
ui_header "Alias Cheatsheet"
|
|
144
|
-
local src_dir out=""
|
|
145
|
-
src_dir="$(require_source_dir)"
|
|
146
|
-
while (($#)); do
|
|
147
|
-
case "$1" in
|
|
148
|
-
--output | -o)
|
|
149
|
-
out="${2:-}"
|
|
150
|
-
[[ -n "$out" ]] || die "Usage: dot aliases cheatsheet [--output PATH|-]"
|
|
151
|
-
shift 2
|
|
152
|
-
;;
|
|
153
|
-
*)
|
|
154
|
-
die "Unknown option for cheatsheet: $1"
|
|
155
|
-
;;
|
|
156
|
-
esac
|
|
157
|
-
done
|
|
158
|
-
out="${out:-$src_dir/docs/ALIASES_CHEATSHEET.md}"
|
|
159
|
-
if [[ "$out" == "-" ]]; then
|
|
160
|
-
bash "$src_dir/scripts/diagnostics/aliases-cheatsheet.sh"
|
|
161
|
-
else
|
|
162
|
-
mkdir -p "$(dirname "$out")"
|
|
163
|
-
bash "$src_dir/scripts/diagnostics/aliases-cheatsheet.sh" >"$out"
|
|
164
|
-
ui_ok "Generated" "$out"
|
|
165
|
-
fi
|
|
166
|
-
;;
|
|
167
|
-
tiers)
|
|
168
|
-
local profile ecosystems security_mode dangerous buckets
|
|
169
|
-
profile="${DOTFILES_ALIAS_PROFILE:-standard}"
|
|
170
|
-
ecosystems="${DOTFILES_ALIAS_ECOSYSTEMS:-all}"
|
|
171
|
-
buckets="${DOTFILES_ALIAS_BUCKETS:-system,svn}"
|
|
172
|
-
security_mode="${DOTFILES_SECURITY_MODE:-standard}"
|
|
173
|
-
dangerous="${DOTFILES_ENABLE_DANGEROUS_ALIASES:-0}"
|
|
174
|
-
|
|
175
|
-
ui_header "Alias Tiers"
|
|
176
|
-
ui_info "Profile" "$profile"
|
|
177
|
-
ui_info "Ecosystems" "$ecosystems"
|
|
178
|
-
ui_info "Buckets" "$buckets"
|
|
179
|
-
ui_info "Security Mode" "$security_mode"
|
|
180
|
-
ui_info "Dangerous Aliases" "$dangerous"
|
|
181
|
-
echo ""
|
|
182
|
-
|
|
183
|
-
ui_header "Core (Always Loaded)"
|
|
184
|
-
ui_ok "navigation" "cd, clear, default, diagnostics, ps"
|
|
185
|
-
ui_ok "dev core" "git, editor, configuration, modern"
|
|
186
|
-
ui_ok "cross-platform tooling" "docker, archives, disk-usage, rsync"
|
|
187
|
-
echo ""
|
|
188
|
-
|
|
189
|
-
ui_header "Ecosystems (Lazy)"
|
|
190
|
-
if alias_tier_enabled "$ecosystems" "python"; then
|
|
191
|
-
ui_ok "python" "enabled"
|
|
192
|
-
else
|
|
193
|
-
ui_warn "python" "disabled"
|
|
194
|
-
fi
|
|
195
|
-
if alias_tier_enabled "$ecosystems" "node"; then
|
|
196
|
-
ui_ok "node" "enabled"
|
|
197
|
-
else
|
|
198
|
-
ui_warn "node" "disabled"
|
|
199
|
-
fi
|
|
200
|
-
if alias_tier_enabled "$ecosystems" "rust"; then
|
|
201
|
-
ui_ok "rust" "enabled"
|
|
202
|
-
else
|
|
203
|
-
ui_warn "rust" "disabled"
|
|
204
|
-
fi
|
|
205
|
-
if alias_tier_enabled "$ecosystems" "network"; then
|
|
206
|
-
ui_ok "network" "enabled"
|
|
207
|
-
else
|
|
208
|
-
ui_warn "network" "disabled"
|
|
209
|
-
fi
|
|
210
|
-
if alias_tier_enabled "$ecosystems" "legacy"; then
|
|
211
|
-
ui_ok "legacy" "enabled"
|
|
212
|
-
else
|
|
213
|
-
ui_warn "legacy" "disabled"
|
|
214
|
-
fi
|
|
215
|
-
if alias_tier_enabled "$buckets" "system"; then
|
|
216
|
-
ui_ok "system bucket" "enabled"
|
|
217
|
-
else
|
|
218
|
-
ui_warn "system bucket" "disabled"
|
|
219
|
-
fi
|
|
220
|
-
if alias_tier_enabled "$buckets" "svn"; then
|
|
221
|
-
ui_ok "svn bucket" "enabled"
|
|
222
|
-
else
|
|
223
|
-
ui_warn "svn bucket" "disabled"
|
|
224
|
-
fi
|
|
225
|
-
;;
|
|
226
|
-
*)
|
|
227
|
-
die "Unknown aliases subcommand: $subcommand"
|
|
228
|
-
;;
|
|
229
|
-
esac
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
cmd_alias_check() {
|
|
233
|
-
ui_header "Alias Check"
|
|
234
|
-
echo ""
|
|
235
|
-
|
|
236
|
-
local alias_file="${HOME}/.config/shell/90-ux-aliases.sh"
|
|
237
|
-
local zshrc_file="${HOME}/.config/zsh/.zshrc"
|
|
238
|
-
local auto_ls_file="${HOME}/.config/shell/custom/auto_ls.zsh"
|
|
239
|
-
local missing=0
|
|
240
|
-
|
|
241
|
-
if [[ -f "$alias_file" ]]; then
|
|
242
|
-
ui_ok "Aliases file" "$alias_file"
|
|
243
|
-
else
|
|
244
|
-
ui_err "Aliases file missing" "$alias_file"
|
|
245
|
-
missing=1
|
|
246
|
-
fi
|
|
247
|
-
|
|
248
|
-
local required_aliases=(c q e l ll la lr lra lt lta h a d _ i)
|
|
249
|
-
local a
|
|
250
|
-
for a in "${required_aliases[@]}"; do
|
|
251
|
-
if grep -Eq "^[[:space:]]*alias[[:space:]]+${a}=" "$alias_file" 2>/dev/null; then
|
|
252
|
-
ui_ok "alias ${a}" "present"
|
|
253
|
-
else
|
|
254
|
-
ui_warn "alias ${a}" "missing"
|
|
255
|
-
missing=1
|
|
256
|
-
fi
|
|
257
|
-
done
|
|
258
|
-
|
|
259
|
-
if [[ -f "$auto_ls_file" ]]; then
|
|
260
|
-
ui_ok "auto-ls hook" "$auto_ls_file"
|
|
261
|
-
else
|
|
262
|
-
ui_warn "auto-ls hook" "missing"
|
|
263
|
-
fi
|
|
264
|
-
|
|
265
|
-
if [[ -f "$zshrc_file" ]] && rg -q "auto_ls.zsh" "$zshrc_file"; then
|
|
266
|
-
ui_ok "auto-ls sourced" "$zshrc_file"
|
|
267
|
-
else
|
|
268
|
-
ui_warn "auto-ls sourced" "not referenced in zshrc"
|
|
269
|
-
fi
|
|
270
|
-
|
|
271
|
-
echo ""
|
|
272
|
-
if [[ "$missing" -eq 1 ]]; then
|
|
273
|
-
ui_warn "Result" "Some aliases are missing; re-run 'chezmoi apply' and open a new shell."
|
|
274
|
-
return 1
|
|
275
|
-
fi
|
|
276
|
-
ui_ok "Result" "All core aliases present"
|
|
277
|
-
}
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
|
3
|
-
# Copyright (c) 2015-2026 Sebastien Rousseau
|
|
4
|
-
# Dotfiles CLI - Appearance Commands
|
|
5
|
-
# theme, wallpaper, fonts, tune
|
|
6
|
-
|
|
7
|
-
set -euo pipefail
|
|
8
|
-
|
|
9
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
10
|
-
# shellcheck source=../../../lib/dot/utils.sh
|
|
11
|
-
source "$SCRIPT_DIR/../../../lib/dot/utils.sh"
|
|
12
|
-
|
|
13
|
-
dot_ui_command_banner "Appearance" "${1:-}"
|
|
14
|
-
|
|
15
|
-
usage() {
|
|
16
|
-
cat <<'EOF'
|
|
17
|
-
Usage: appearance.sh <command> [args...]
|
|
18
|
-
|
|
19
|
-
Commands:
|
|
20
|
-
theme, wallpaper, fonts, tune
|
|
21
|
-
EOF
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
cmd_theme() {
|
|
25
|
-
run_script "scripts/theme/switch.sh" "Theme switcher" "$@"
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
cmd_wallpaper() {
|
|
29
|
-
case "${1:-sync}" in
|
|
30
|
-
sync)
|
|
31
|
-
shift 2>/dev/null || true
|
|
32
|
-
run_script "scripts/theme/wallpaper-sync.sh" "Wallpaper sync script" "$@"
|
|
33
|
-
;;
|
|
34
|
-
rotate)
|
|
35
|
-
shift
|
|
36
|
-
run_script "scripts/theme/wallpaper-rotate.sh" "Wallpaper rotate script" "$@"
|
|
37
|
-
;;
|
|
38
|
-
*)
|
|
39
|
-
run_script "scripts/theme/wallpaper-sync.sh" "Wallpaper sync script" "$@"
|
|
40
|
-
;;
|
|
41
|
-
esac
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
cmd_fonts() {
|
|
45
|
-
local sub="${1:-install}"
|
|
46
|
-
case "$sub" in
|
|
47
|
-
patch)
|
|
48
|
-
shift
|
|
49
|
-
run_script "scripts/fonts/patch-fonts.sh" "Font patch helper" "$@"
|
|
50
|
-
;;
|
|
51
|
-
install | "")
|
|
52
|
-
[[ "$sub" == install ]] && shift || true
|
|
53
|
-
run_script "scripts/fonts/install-nerd-fonts.sh" "Font install script" "$@"
|
|
54
|
-
;;
|
|
55
|
-
*)
|
|
56
|
-
run_script "scripts/fonts/install-nerd-fonts.sh" "Font install script" "$@"
|
|
57
|
-
;;
|
|
58
|
-
esac
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
cmd_tune() {
|
|
62
|
-
local src_dir
|
|
63
|
-
local platform
|
|
64
|
-
src_dir="$(require_source_dir)"
|
|
65
|
-
platform="$(dot_platform_id)"
|
|
66
|
-
|
|
67
|
-
case "$platform" in
|
|
68
|
-
macos)
|
|
69
|
-
exec bash "$src_dir/scripts/tuning/macos.sh" "$@"
|
|
70
|
-
;;
|
|
71
|
-
linux | wsl)
|
|
72
|
-
exec bash "$src_dir/scripts/tuning/linux.sh" "$@"
|
|
73
|
-
;;
|
|
74
|
-
*)
|
|
75
|
-
echo "OS tuning not supported on this platform."
|
|
76
|
-
exit 1
|
|
77
|
-
;;
|
|
78
|
-
esac
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
# Dispatch
|
|
82
|
-
case "${1:-}" in
|
|
83
|
-
--help | -h | help)
|
|
84
|
-
usage
|
|
85
|
-
;;
|
|
86
|
-
"")
|
|
87
|
-
usage
|
|
88
|
-
exit 1
|
|
89
|
-
;;
|
|
90
|
-
theme)
|
|
91
|
-
shift
|
|
92
|
-
cmd_theme "$@"
|
|
93
|
-
;;
|
|
94
|
-
wallpaper)
|
|
95
|
-
shift
|
|
96
|
-
cmd_wallpaper "$@"
|
|
97
|
-
;;
|
|
98
|
-
fonts)
|
|
99
|
-
shift
|
|
100
|
-
cmd_fonts "$@"
|
|
101
|
-
;;
|
|
102
|
-
tune)
|
|
103
|
-
shift
|
|
104
|
-
cmd_tune "$@"
|
|
105
|
-
;;
|
|
106
|
-
*)
|
|
107
|
-
echo "Unknown appearance command: ${1:-}" >&2
|
|
108
|
-
exit 1
|
|
109
|
-
;;
|
|
110
|
-
esac
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
|
3
|
-
# Copyright (c) 2015-2026 Sebastien Rousseau
|
|
4
|
-
## `dot completion <bash|zsh|fish|nu>` — emit shell completion for `dot`,
|
|
5
|
-
## generated from the canonical _dot_help_specs registry in bin/dot. Using one
|
|
6
|
-
## source of truth keeps all four shells in sync (the previously hand-maintained
|
|
7
|
-
## fish/nushell lists drifted and referenced non-existent commands).
|
|
8
|
-
##
|
|
9
|
-
## Usage:
|
|
10
|
-
## dot completion bash >> ~/.bashrc.d/dot.bash
|
|
11
|
-
## dot completion zsh > "${fpath[1]}/_dot"
|
|
12
|
-
## dot completion fish > ~/.config/fish/completions/dot.fish
|
|
13
|
-
## dot completion nu >> ~/.config/nushell/completions.nu
|
|
14
|
-
|
|
15
|
-
set -euo pipefail
|
|
16
|
-
|
|
17
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
18
|
-
# shellcheck source=../../../lib/dot/utils.sh
|
|
19
|
-
source "$SCRIPT_DIR/../../../lib/dot/utils.sh"
|
|
20
|
-
|
|
21
|
-
_completion_dot_cli() {
|
|
22
|
-
local src
|
|
23
|
-
src="$(resolve_source_dir)"
|
|
24
|
-
printf '%s/bin/dot\n' "$src"
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
# Emit "name<TAB>description" for every top-level command (a _dot_help_specs
|
|
28
|
-
# field-2 entry with no space; entries containing a space are subcommands).
|
|
29
|
-
# Strip ": ' from descriptions so they can't break any shell's quoting.
|
|
30
|
-
_completion_commands() {
|
|
31
|
-
local cli
|
|
32
|
-
cli="$(_completion_dot_cli)"
|
|
33
|
-
awk -F'|' '
|
|
34
|
-
/_dot_help_specs\(\)/ { in_func = 1; next }
|
|
35
|
-
in_func && /cat <<'\''EOF'\''/ { in_block = 1; next }
|
|
36
|
-
in_block && /^EOF$/ { exit }
|
|
37
|
-
in_block && NF >= 3 && $2 !~ / / {
|
|
38
|
-
name = $2
|
|
39
|
-
# Description = fields 3..NF-1 rejoined: registry descriptions can
|
|
40
|
-
# contain "|" (e.g. "--ai|-A") and the last field is the hint.
|
|
41
|
-
desc = $3
|
|
42
|
-
for (i = 4; i < NF; i++) desc = desc "|" $i
|
|
43
|
-
gsub(/^[ \t]+|[ \t]+$/, "", name)
|
|
44
|
-
gsub(/^[ \t]+|[ \t]+$/, "", desc)
|
|
45
|
-
gsub(/[":\047]/, "", desc)
|
|
46
|
-
if (name != "") print name "\t" desc
|
|
47
|
-
}
|
|
48
|
-
' "$cli"
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
# Emit "parent<TAB>child<TAB>description" for every subcommand (a field-2
|
|
52
|
-
# entry that contains a space, e.g. "theme list" -> parent=theme child=list).
|
|
53
|
-
_completion_subcommands() {
|
|
54
|
-
local cli
|
|
55
|
-
cli="$(_completion_dot_cli)"
|
|
56
|
-
awk -F'|' '
|
|
57
|
-
/_dot_help_specs\(\)/ { in_func = 1; next }
|
|
58
|
-
in_func && /cat <<'\''EOF'\''/ { in_block = 1; next }
|
|
59
|
-
in_block && /^EOF$/ { exit }
|
|
60
|
-
in_block && NF >= 3 && $2 ~ / / {
|
|
61
|
-
full = $2
|
|
62
|
-
desc = $3
|
|
63
|
-
for (i = 4; i < NF; i++) desc = desc "|" $i
|
|
64
|
-
gsub(/^[ \t]+|[ \t]+$/, "", full)
|
|
65
|
-
gsub(/^[ \t]+|[ \t]+$/, "", desc)
|
|
66
|
-
gsub(/[":\047]/, "", desc)
|
|
67
|
-
parent = full; sub(/ .*/, "", parent)
|
|
68
|
-
child = full; sub(/^[^ ]+ /, "", child)
|
|
69
|
-
if (parent != "" && child != "") print parent "\t" child "\t" desc
|
|
70
|
-
}
|
|
71
|
-
' "$cli"
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
# The printf templates below are the *text of the generated script*;
|
|
75
|
-
# `$cur`, `$prev`, `$commands` must reach the output unexpanded.
|
|
76
|
-
# shellcheck disable=SC2016
|
|
77
|
-
gen_bash() {
|
|
78
|
-
local names parent child desc
|
|
79
|
-
names="$(_completion_commands | cut -f1 | tr '\n' ' ')"
|
|
80
|
-
printf '# dot bash completion — generated by: dot completion bash\n'
|
|
81
|
-
printf '# Source this file, or install it to a bash-completion completions dir.\n'
|
|
82
|
-
printf '_dot_completions() {\n'
|
|
83
|
-
printf ' local cur prev commands\n'
|
|
84
|
-
printf ' COMPREPLY=()\n'
|
|
85
|
-
printf ' cur="${COMP_WORDS[COMP_CWORD]}"\n'
|
|
86
|
-
printf ' prev="${COMP_WORDS[COMP_CWORD - 1]}"\n'
|
|
87
|
-
printf " commands='%s'\n" "${names% }"
|
|
88
|
-
printf ' case "$prev" in\n'
|
|
89
|
-
printf ' dot)\n'
|
|
90
|
-
printf ' COMPREPLY=($(compgen -W "$commands" -- "$cur"))\n'
|
|
91
|
-
printf ' return 0\n'
|
|
92
|
-
printf ' ;;\n'
|
|
93
|
-
# One case arm per parent command that has subcommands.
|
|
94
|
-
while IFS=$'\t' read -r parent child desc; do
|
|
95
|
-
printf '%s\t%s\n' "$parent" "$child"
|
|
96
|
-
done < <(_completion_subcommands) |
|
|
97
|
-
awk -F'\t' '{ subs[$1] = subs[$1] (subs[$1] == "" ? "" : " ") $2 }
|
|
98
|
-
END { for (p in subs) printf "%s\t%s\n", p, subs[p] }' |
|
|
99
|
-
LC_ALL=C sort |
|
|
100
|
-
while IFS=$'\t' read -r parent child; do
|
|
101
|
-
printf ' %s)\n' "$parent"
|
|
102
|
-
printf ' COMPREPLY=($(compgen -W "%s" -- "$cur"))\n' "$child"
|
|
103
|
-
printf ' return 0\n'
|
|
104
|
-
printf ' ;;\n'
|
|
105
|
-
done
|
|
106
|
-
printf ' esac\n'
|
|
107
|
-
printf ' COMPREPLY=($(compgen -f -- "$cur"))\n'
|
|
108
|
-
printf '}\n'
|
|
109
|
-
printf 'complete -F _dot_completions dot\n'
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
gen_zsh() {
|
|
113
|
-
local name desc
|
|
114
|
-
printf '#compdef dot\n# generated by: dot completion zsh\n'
|
|
115
|
-
printf '_dot() {\n local -a commands\n commands=(\n'
|
|
116
|
-
while IFS=$'\t' read -r name desc; do
|
|
117
|
-
printf " '%s:%s'\n" "$name" "$desc"
|
|
118
|
-
done < <(_completion_commands)
|
|
119
|
-
printf ' )\n _describe '\''command'\'' commands\n}\n_dot "$@"\n'
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
gen_fish() {
|
|
123
|
-
local name desc
|
|
124
|
-
printf '# dot fish completion — generated by: dot completion fish\n'
|
|
125
|
-
printf 'complete -c dot -f\n'
|
|
126
|
-
while IFS=$'\t' read -r name desc; do
|
|
127
|
-
printf 'complete -c dot -n "__fish_use_subcommand" -a %s -d "%s"\n' "$name" "$desc"
|
|
128
|
-
done < <(_completion_commands)
|
|
129
|
-
local parent child
|
|
130
|
-
while IFS=$'\t' read -r parent child desc; do
|
|
131
|
-
printf 'complete -c dot -n "__fish_seen_subcommand_from %s" -a %s -d "%s"\n' \
|
|
132
|
-
"$parent" "$child" "$desc"
|
|
133
|
-
done < <(_completion_subcommands)
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
gen_nu() {
|
|
137
|
-
local name desc
|
|
138
|
-
printf '# dot nushell completion — generated by: dot completion nu\n'
|
|
139
|
-
printf 'export extern dot [\n command?: string@dot_commands\n ...args: string\n]\n'
|
|
140
|
-
printf 'def dot_commands [] {\n [\n'
|
|
141
|
-
while IFS=$'\t' read -r name desc; do
|
|
142
|
-
printf ' { value: "%s", description: "%s" }\n' "$name" "$desc"
|
|
143
|
-
done < <(_completion_commands)
|
|
144
|
-
printf ' ]\n}\n'
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
usage() {
|
|
148
|
-
cat <<'USAGE'
|
|
149
|
-
Usage: dot completion <bash|zsh|fish|nu>
|
|
150
|
-
|
|
151
|
-
Generate shell completion for `dot` from the canonical command registry.
|
|
152
|
-
|
|
153
|
-
dot completion bash >> ~/.bashrc.d/dot.bash
|
|
154
|
-
dot completion zsh > "${fpath[1]}/_dot"
|
|
155
|
-
dot completion fish > ~/.config/fish/completions/dot.fish
|
|
156
|
-
dot completion nu >> ~/.config/nushell/completions.nu
|
|
157
|
-
USAGE
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
# Dispatch: $1 is the command name ("completion"); $2 is the target shell.
|
|
161
|
-
case "${2:-}" in
|
|
162
|
-
bash) gen_bash ;;
|
|
163
|
-
zsh) gen_zsh ;;
|
|
164
|
-
fish) gen_fish ;;
|
|
165
|
-
nu | nushell) gen_nu ;;
|
|
166
|
-
"" | -h | --help | help) usage ;;
|
|
167
|
-
*)
|
|
168
|
-
echo "dot completion: unknown shell '${2}' (want: bash|zsh|fish|nu)" >&2
|
|
169
|
-
exit 1
|
|
170
|
-
;;
|
|
171
|
-
esac
|