@sebastienrousseau/dotfiles 0.2.481 → 0.2.499
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/docs/ARCHITECTURE.md +29 -196
- package/docs/COMPLIANCE.md +10 -10
- package/docs/COPYRIGHT +3 -4
- package/docs/OPERATIONS.md +38 -65
- package/docs/PLAN.md +3 -3
- package/docs/PR_DESCRIPTION.md +85 -84
- package/docs/ROADMAP.md +11 -11
- package/docs/ROADMAP_legacy.md +556 -0
- package/docs/SECURITY_CHECKLIST.md +1 -1
- package/docs/TASK.md +4 -4
- package/docs/WALKTHROUGH.md +33 -152
- package/package.json +17 -5
- package/scripts/backup.sh +142 -0
- package/scripts/banner.sh +20 -0
- package/scripts/benchmark.sh +20 -0
- package/scripts/build.sh +41 -0
- package/scripts/clean.sh +31 -0
- package/scripts/compile.sh +54 -0
- package/scripts/copy.sh +108 -0
- package/scripts/{tools/detect-collisions.py → detect-collisions.py} +1 -1
- package/scripts/doctor.sh +79 -0
- package/scripts/dotfiles.sh +63 -0
- package/scripts/download.sh +35 -0
- package/scripts/help.sh +57 -0
- package/scripts/lock-configs.sh +57 -0
- package/scripts/package.sh +46 -0
- package/scripts/ssh.sh +55 -0
- package/scripts/teleport.sh +23 -0
- package/scripts/{tests/test-aliases.sh → test-aliases.sh} +3 -3
- package/scripts/test_smoke.sh +88 -0
- package/scripts/unpack.sh +28 -0
- package/scripts/{diagnostics/verify_state.sh → verify_state.sh} +21 -21
- package/templates/projects/go/README.md +0 -4
- package/templates/projects/node/README.md +0 -4
- package/templates/projects/python/README.md +0 -4
- package/templates/projects/python/pyproject.toml +0 -15
- package/CHANGELOG.md +0 -285
- package/LICENSE +0 -1283
- package/README.md +0 -315
- package/docs/ALIASES.md +0 -128
- package/docs/FEATURES.md +0 -166
- package/docs/FONTS.md +0 -147
- package/docs/INSTALL.md +0 -119
- package/docs/KEYS.md +0 -40
- package/docs/KEY_ROTATION.md +0 -219
- package/docs/LEGACY_ROADMAP.md +0 -142
- package/docs/NEOVIM_IDE_GUIDE.md +0 -52
- package/docs/README.md +0 -269
- package/docs/REPO_AUDIT.md +0 -23
- package/docs/SCREENSHOTS.md +0 -116
- package/docs/SECRETS.md +0 -76
- package/docs/SECURITY.md +0 -30
- package/docs/TESTING.md +0 -190
- package/docs/TOOLS.md +0 -146
- package/docs/TROUBLESHOOTING.md +0 -112
- package/docs/UTILS.md +0 -105
- package/docs/WSL2_NIX_TROUBLESHOOTING.md +0 -723
- package/docs/adr/ADR-001-ci-cd-pipeline.md +0 -101
- package/docs/adr/ADR-002-shell-performance.md +0 -121
- package/docs/adr/ADR-003-security-first.md +0 -140
- package/docs/adr/ADR-004-cli-architecture.md +0 -157
- package/docs/adr/ADR-005-chezmoi-choice.md +0 -89
- package/docs/adr/ADR-006-shell-selection.md +0 -115
- package/docs/adr/README.md +0 -33
- package/docs/themes/README.md +0 -20
- package/dot_config/aider/aider.conf.yml +0 -32
- package/dot_config/alacritty/alacritty.toml.tmpl +0 -483
- package/dot_config/ansible/ansible.cfg.tmpl +0 -11
- package/dot_config/atuin/config.toml +0 -23
- package/dot_config/bat/config +0 -8
- package/dot_config/brave-flags.conf.tmpl +0 -7
- package/dot_config/btop/btop.conf +0 -16
- package/dot_config/btop/themes/tokyonight.theme +0 -34
- package/dot_config/bun/bunfig.toml.tmpl +0 -33
- package/dot_config/claude/mcp_servers.json +0 -49
- package/dot_config/clippy.toml +0 -55
- package/dot_config/containers/containers.conf +0 -14
- package/dot_config/curl/dot_curlrc +0 -18
- package/dot_config/dlv/config.yml +0 -39
- package/dot_config/docker/config.json.tmpl +0 -15
- package/dot_config/dotfiles/boot/README.md +0 -11
- package/dot_config/dotfiles/grub/README.md +0 -11
- package/dot_config/dotfiles/lock/README.md +0 -11
- package/dot_config/dotfiles/versions.env.tmpl +0 -19
- package/dot_config/duf/duf.conf +0 -6
- package/dot_config/duti/defaults.duti +0 -5
- package/dot_config/emoji/emoji.txt +0 -34
- package/dot_config/fastfetch/config.jsonc +0 -28
- package/dot_config/firefox/user.js +0 -8
- package/dot_config/flatpak/flatpak.list +0 -4
- package/dot_config/fontconfig/fonts.conf.tmpl +0 -44
- package/dot_config/gem/gemrc +0 -9
- package/dot_config/gh/config.yml +0 -12
- package/dot_config/ghostty/config.tmpl +0 -661
- package/dot_config/git/attributes +0 -12
- package/dot_config/git/config.tmpl +0 -77
- package/dot_config/git/ignore +0 -27
- package/dot_config/gnupg/gpg-agent.conf.tmpl +0 -11
- package/dot_config/go/aliases.sh +0 -61
- package/dot_config/go/env.sh +0 -24
- package/dot_config/go/golangci.yml +0 -118
- package/dot_config/go/gopls.json +0 -30
- package/dot_config/goose/config.yaml +0 -29
- package/dot_config/gtk-3.0/gtk.css.tmpl +0 -305
- package/dot_config/gtk-3.0/settings.ini.tmpl +0 -66
- package/dot_config/gtk-4.0/gtk.css.tmpl +0 -309
- package/dot_config/gtk-4.0/settings.ini.tmpl +0 -21
- package/dot_config/htop/htoprc +0 -20
- package/dot_config/ice/README.md +0 -13
- package/dot_config/inputrc +0 -2
- package/dot_config/ipython/profile_default/ipython_config.py.tmpl +0 -5
- package/dot_config/just/justfile +0 -104
- package/dot_config/k9s/config.yaml.tmpl +0 -65
- package/dot_config/k9s/skins/catppuccin-mocha.yaml +0 -116
- package/dot_config/karabiner/karabiner.json +0 -14
- package/dot_config/kitty/kitty.conf.tmpl +0 -517
- package/dot_config/lazydocker/config.yml +0 -186
- package/dot_config/lazygit/config.yml +0 -23
- package/dot_config/lsd/config.yaml +0 -19
- package/dot_config/mas/masapps.txt +0 -5
- package/dot_config/minikube/config.json +0 -13
- package/dot_config/mise/config.toml +0 -41
- package/dot_config/mongosh/mongoshrc.js +0 -67
- package/dot_config/mycli/myclirc +0 -67
- package/dot_config/nano/nanorc +0 -28
- package/dot_config/ncdu/config +0 -12
- package/dot_config/nvim/init.lua +0 -4
- package/dot_config/nvim/lazy-lock.json +0 -27
- package/dot_config/nvim/lua/config/autocmds.lua +0 -63
- package/dot_config/nvim/lua/config/keymaps.lua +0 -87
- package/dot_config/nvim/lua/config/lazy.lua +0 -34
- package/dot_config/nvim/lua/config/options.lua +0 -48
- package/dot_config/nvim/lua/plugins/coding.lua +0 -234
- package/dot_config/nvim/lua/plugins/dap.lua +0 -201
- package/dot_config/nvim/lua/plugins/editor.lua +0 -59
- package/dot_config/nvim/lua/plugins/git.lua +0 -9
- package/dot_config/nvim/lua/plugins/lsp.lua +0 -221
- package/dot_config/nvim/lua/plugins/markdown.lua +0 -17
- package/dot_config/nvim/lua/plugins/rust.lua +0 -33
- package/dot_config/nvim/lua/plugins/sessions.lua +0 -32
- package/dot_config/nvim/lua/plugins/ui.lua +0 -537
- package/dot_config/nvim/snippets/all.lua +0 -9
- package/dot_config/nvim/snippets/python.lua +0 -16
- package/dot_config/pip/pip.conf.tmpl +0 -32
- package/dot_config/pypoetry/config.toml.tmpl +0 -6
- package/dot_config/pyrightconfig.json.tmpl +0 -5
- package/dot_config/raycast/README.md +0 -13
- package/dot_config/redis/redisclirc +0 -41
- package/dot_config/shell/00-container-detect.sh +0 -53
- package/dot_config/shell/00-core-paths.sh.tmpl +0 -95
- package/dot_config/shell/05-core-safety.sh.tmpl +0 -13
- package/dot_config/shell/40-ls-colors.sh.tmpl +0 -31
- package/dot_config/shell/50-logic-functions.sh.tmpl +0 -10
- package/dot_config/shell/90-theme-switch.sh +0 -70
- package/dot_config/shell/90-ux-aliases.sh.tmpl +0 -35
- package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +0 -23
- package/dot_config/shell/Brewfile +0 -207
- package/dot_config/shell/Brewfile.cask +0 -92
- package/dot_config/shell/Brewfile.cli +0 -119
- package/dot_config/shell/README.md +0 -267
- package/dot_config/shell/custom/context_suggest.zsh +0 -68
- package/dot_config/shell/custom/error_analysis.zsh +0 -45
- package/dot_config/sops/dot_sops.yaml +0 -23
- package/dot_config/starship.toml.tmpl +0 -124
- package/dot_config/task/Taskfile.yml +0 -86
- package/dot_config/tflint/tflint.hcl.tmpl +0 -9
- package/dot_config/tmux/tmux.conf.tmpl +0 -181
- package/dot_config/topgrade/topgrade.toml.tmpl +0 -42
- package/dot_config/vscode/extensions.txt +0 -11
- package/dot_config/vscode/settings.json.tmpl +0 -123
- package/dot_config/waybar/style.css +0 -8
- package/dot_config/wezterm/wezterm.lua.tmpl +0 -236
- package/dot_config/wget/wgetrc +0 -12
- package/dot_config/yarn/yarnrc.yml.tmpl +0 -36
- package/dot_config/yazi/yazi.toml +0 -40
- package/dot_config/zellij/config.kdl +0 -79
- package/dot_config/zsh/dot_zprofile +0 -13
- package/dot_config/zsh/dot_zshenv +0 -6
- package/dot_config/zsh/dot_zshrc.tmpl +0 -199
- package/dot_config/zsh/rc.d/05-ssh-agent.zsh +0 -5
- package/dot_config/zsh/rc.d/10-env.zsh.tmpl +0 -28
- package/dot_config/zsh/rc.d/20-zinit.zsh.tmpl +0 -22
- package/dot_config/zsh/rc.d/30-options.zsh.tmpl +0 -123
- package/dot_config/zsh/rc.d/40-bell.zsh.tmpl +0 -20
- package/dot_config/zsh/rc.d/50-login-fortune.zsh.tmpl +0 -9
- package/dot_local/bin/executable_ai_core +0 -130
- package/dot_local/bin/executable_b64 +0 -59
- package/dot_local/bin/executable_dot +0 -178
- package/dot_local/bin/executable_dot_completion +0 -55
- package/dot_local/bin/executable_epoch +0 -62
- package/dot_local/bin/executable_extract +0 -108
- package/dot_local/bin/executable_git-ai-commit +0 -160
- package/dot_local/bin/executable_git-ai-diff +0 -154
- package/dot_local/bin/executable_hash +0 -123
- package/dot_local/bin/executable_hex +0 -79
- package/dot_local/bin/executable_ip +0 -37
- package/dot_local/bin/executable_jsonv +0 -54
- package/dot_local/bin/executable_jwt +0 -78
- package/dot_local/bin/executable_kill-port +0 -59
- package/dot_local/bin/executable_lorem +0 -103
- package/dot_local/bin/executable_regex +0 -96
- package/dot_local/bin/executable_tmux-sessionizer +0 -187
- package/dot_local/bin/executable_tour +0 -137
- package/dot_local/bin/executable_update +0 -108
- package/dot_local/bin/executable_uuid +0 -57
- package/dot_local/bin/executable_yamlv +0 -39
- package/dot_local/bin/executable_zig-install +0 -89
- package/dot_local/bin/voice_ops +0 -7
- package/dot_local/share/bash-completion/completions/dot +0 -54
- package/dot_local/share/zsh/completions/.keep +0 -0
- package/install.sh +0 -255
- package/scripts/ci/validate-ci-config.sh +0 -222
- package/scripts/demo/record.sh +0 -41
- package/scripts/diagnostics/benchmark.sh +0 -201
- package/scripts/diagnostics/doctor.sh +0 -115
- package/scripts/diagnostics/drift-dashboard.sh +0 -26
- package/scripts/diagnostics/health.sh +0 -356
- package/scripts/diagnostics/history-analysis.sh +0 -77
- package/scripts/diagnostics/security-score.sh +0 -392
- package/scripts/dot/commands/appearance.sh +0 -63
- package/scripts/dot/commands/core.sh +0 -130
- package/scripts/dot/commands/diagnostics.sh +0 -100
- package/scripts/dot/commands/meta.sh +0 -117
- package/scripts/dot/commands/restore.sh +0 -209
- package/scripts/dot/commands/secrets.sh +0 -81
- package/scripts/dot/commands/security.sh +0 -73
- package/scripts/dot/commands/tools.sh +0 -228
- package/scripts/dot/lib/utils.sh +0 -72
- package/scripts/fonts/install-nerd-fonts.sh +0 -59
- package/scripts/fonts/patch-fonts.sh +0 -34
- package/scripts/ops/chezmoi-apply.sh +0 -42
- package/scripts/ops/chezmoi-diff.sh +0 -14
- package/scripts/ops/chezmoi-remove.sh +0 -43
- package/scripts/ops/chezmoi-update.sh +0 -16
- package/scripts/ops/heal.sh +0 -466
- package/scripts/ops/health-check.sh +0 -380
- package/scripts/ops/rollback.sh +0 -531
- package/scripts/ops/teleport.sh +0 -32
- package/scripts/secrets/age-init.sh +0 -69
- package/scripts/secrets/create-secrets-file.sh +0 -44
- package/scripts/secrets/encrypt-ssh-key.sh +0 -42
- package/scripts/security/backup.sh +0 -17
- package/scripts/security/dns-doh.sh +0 -29
- package/scripts/security/encryption-check.sh +0 -39
- package/scripts/security/enforce-policies.sh +0 -339
- package/scripts/security/firewall.sh +0 -34
- package/scripts/security/lock-configs.sh +0 -57
- package/scripts/security/lock-screen.sh +0 -33
- package/scripts/security/manage-secrets.sh +0 -415
- package/scripts/security/telemetry-kill.sh +0 -28
- package/scripts/security/usb-safety.sh +0 -29
- package/scripts/tests/README.md +0 -241
- package/scripts/tests/benchmark.sh +0 -91
- package/scripts/tests/framework/assertions.sh +0 -283
- package/scripts/tests/framework/mocks.sh +0 -201
- package/scripts/tests/framework/test_runner.sh +0 -189
- package/scripts/tests/integration/test_install.sh +0 -237
- package/scripts/tests/performance/benchmark_runner.sh +0 -156
- package/scripts/tests/performance/regression_check.sh +0 -73
- package/scripts/tests/performance/stress_test.sh +0 -65
- package/scripts/tests/test-docker.sh +0 -48
- package/scripts/tests/unit/test_ai_aliases.sh +0 -158
- package/scripts/tests/unit/test_ai_cli_checks.sh +0 -47
- package/scripts/tests/unit/test_backup.sh +0 -227
- package/scripts/tests/unit/test_case_functions.sh +0 -238
- package/scripts/tests/unit/test_cd_aliases.sh +0 -367
- package/scripts/tests/unit/test_dot_cli.sh +0 -217
- package/scripts/tests/unit/test_encode64.sh +0 -67
- package/scripts/tests/unit/test_environment.sh +0 -78
- package/scripts/tests/unit/test_extract.sh +0 -163
- package/scripts/tests/unit/test_framework_edge_cases.sh +0 -113
- package/scripts/tests/unit/test_genpass.sh +0 -298
- package/scripts/tests/unit/test_install_edge_cases.sh +0 -167
- package/scripts/tests/unit/test_installers.sh +0 -172
- package/scripts/tests/unit/test_keygen.sh +0 -68
- package/scripts/tests/unit/test_logging.sh +0 -96
- package/scripts/tests/unit/test_os_detection_comprehensive.sh +0 -388
- package/scripts/tests/unit/test_package_managers_comprehensive.sh +0 -321
- package/scripts/tests/unit/test_prependpath.sh +0 -66
- package/scripts/tests/unit/test_prependpath_refactored.sh +0 -89
- package/scripts/tests/unit/test_rd.sh +0 -230
- package/scripts/tests/unit/test_security_fixes.sh +0 -130
- package/scripts/tests/unit/test_security_scripts.sh +0 -87
- package/scripts/tests/unit/test_template_validation.sh +0 -238
- package/scripts/tests/unit/test_utility_functions.sh +0 -144
- package/scripts/tests/unit/test_wave1_alias_split.sh +0 -132
- package/scripts/tests/unit/test_wave1_ci_pinning.sh +0 -61
- package/scripts/tests/unit/test_wave1_gitleaks_config.sh +0 -52
- package/scripts/tests/unit/test_wave1_heal_fixes.sh +0 -97
- package/scripts/tests/unit/test_wave1_install_gpg.sh +0 -35
- package/scripts/tests/unit/test_wave1_zshenv_path.sh +0 -89
- package/scripts/tests/unit/test_wave1_zshrc_lazy_hook.sh +0 -115
- package/scripts/tests/unit/test_wave2_dot_new_guard.sh +0 -75
- package/scripts/tests/unit/test_zipf.sh +0 -76
- package/scripts/theme/apply-gnome-theme.sh +0 -297
- package/scripts/theme/install-boot-logo.sh +0 -61
- package/scripts/theme/install-catppuccin-themes.sh +0 -346
- package/scripts/theme/install-cursors.sh +0 -24
- package/scripts/theme/install-file-icons.sh +0 -25
- package/scripts/theme/install-grub-theme.sh +0 -51
- package/scripts/theme/install-lock-icon.sh +0 -29
- package/scripts/theme/switch.sh +0 -250
- package/scripts/theme/wallpaper-rotate.sh +0 -82
- package/scripts/theme/wallpaper-sync.sh +0 -42
- package/scripts/tools/cmatrix.sh +0 -20
- package/scripts/tools/emoji-picker.sh +0 -45
- package/scripts/tools/figlet-banner.sh +0 -17
- package/scripts/tools/log-rotate.sh +0 -29
- package/scripts/tools/lolcat-wrap.sh +0 -18
- package/scripts/tools/pipes.sh +0 -47
- package/scripts/tuning/linux.sh +0 -175
- package/scripts/tuning/macos.sh +0 -46
- 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/packer/README.md +0 -15
- package/templates/projects/packer/main.pkr.hcl +0 -15
|
@@ -1,228 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Dotfiles CLI - Tools Commands
|
|
3
|
-
# tools, new, packages, log-rotate
|
|
4
|
-
|
|
5
|
-
set -euo pipefail
|
|
6
|
-
|
|
7
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
8
|
-
# shellcheck source=../lib/utils.sh
|
|
9
|
-
source "$SCRIPT_DIR/../lib/utils.sh"
|
|
10
|
-
|
|
11
|
-
show_system_package_managers() {
|
|
12
|
-
if has_command brew; then
|
|
13
|
-
local brew_version brew_formulae brew_casks
|
|
14
|
-
brew_version=$(brew --version | head -1)
|
|
15
|
-
brew_formulae=$(brew list --formula 2>/dev/null | wc -l | tr -d ' ')
|
|
16
|
-
brew_casks=$(brew list --cask 2>/dev/null | wc -l | tr -d ' ')
|
|
17
|
-
echo " Homebrew: $brew_version"
|
|
18
|
-
echo " Formulae: $brew_formulae"
|
|
19
|
-
echo " Casks: $brew_casks"
|
|
20
|
-
fi
|
|
21
|
-
if has_command apt; then
|
|
22
|
-
local apt_version apt_packages
|
|
23
|
-
apt_version=$(apt --version 2>/dev/null | head -1 || echo 'installed')
|
|
24
|
-
apt_packages=$(dpkg -l 2>/dev/null | grep -c '^ii' || echo 'N/A')
|
|
25
|
-
echo " APT: $apt_version"
|
|
26
|
-
echo " Packages: $apt_packages"
|
|
27
|
-
fi
|
|
28
|
-
if has_command dnf; then
|
|
29
|
-
echo " DNF: $(dnf --version 2>/dev/null | head -1 || echo 'installed')"
|
|
30
|
-
fi
|
|
31
|
-
if has_command pacman; then
|
|
32
|
-
local pacman_packages
|
|
33
|
-
pacman_packages=$(pacman -Q 2>/dev/null | wc -l | tr -d ' ')
|
|
34
|
-
echo " Pacman: $(pacman --version | head -1)"
|
|
35
|
-
echo " Packages: $pacman_packages"
|
|
36
|
-
fi
|
|
37
|
-
if has_command nix; then
|
|
38
|
-
echo " Nix: $(nix --version)"
|
|
39
|
-
fi
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
show_language_package_managers() {
|
|
43
|
-
if has_command npm; then
|
|
44
|
-
local npm_globals
|
|
45
|
-
npm_globals=$(npm list -g --depth=0 2>/dev/null | grep -c '├──\|└──' || echo 'N/A')
|
|
46
|
-
echo " npm: $(npm --version)"
|
|
47
|
-
echo " Global packages: $npm_globals"
|
|
48
|
-
fi
|
|
49
|
-
if has_command pnpm; then
|
|
50
|
-
echo " pnpm: $(pnpm --version)"
|
|
51
|
-
fi
|
|
52
|
-
if has_command bun; then
|
|
53
|
-
echo " Bun: $(bun --version)"
|
|
54
|
-
fi
|
|
55
|
-
if has_command cargo; then
|
|
56
|
-
local cargo_installed
|
|
57
|
-
cargo_installed=$(cargo install --list 2>/dev/null | grep -c ':$' || echo 'N/A')
|
|
58
|
-
echo " Cargo: $(cargo --version | cut -d' ' -f2)"
|
|
59
|
-
echo " Installed: $cargo_installed"
|
|
60
|
-
fi
|
|
61
|
-
if has_command pip3; then
|
|
62
|
-
echo " pip: $(pip3 --version | cut -d' ' -f2)"
|
|
63
|
-
fi
|
|
64
|
-
if has_command pipx; then
|
|
65
|
-
local pipx_installed
|
|
66
|
-
pipx_installed=$(pipx list --short 2>/dev/null | wc -l | tr -d ' ')
|
|
67
|
-
echo " pipx: $(pipx --version)"
|
|
68
|
-
echo " Installed: $pipx_installed"
|
|
69
|
-
fi
|
|
70
|
-
if has_command gem; then
|
|
71
|
-
echo " RubyGems: $(gem --version)"
|
|
72
|
-
fi
|
|
73
|
-
if has_command go; then
|
|
74
|
-
echo " Go: $(go version | cut -d' ' -f3)"
|
|
75
|
-
fi
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
cmd_tools() {
|
|
79
|
-
local src_dir subcommand
|
|
80
|
-
src_dir="$(resolve_source_dir)"
|
|
81
|
-
subcommand="${1:-}"
|
|
82
|
-
|
|
83
|
-
if [ "$subcommand" = "install" ]; then
|
|
84
|
-
if ! has_command nix; then
|
|
85
|
-
echo "Nix is not installed."
|
|
86
|
-
echo ""
|
|
87
|
-
echo "To install Nix, run:"
|
|
88
|
-
echo " curl -L https://nixos.org/nix/install | sh"
|
|
89
|
-
echo ""
|
|
90
|
-
echo "Or use Homebrew/apt for individual tools."
|
|
91
|
-
exit 1
|
|
92
|
-
fi
|
|
93
|
-
shift
|
|
94
|
-
if [ -n "$src_dir" ] && [ -f "$src_dir/nix/flake.nix" ]; then
|
|
95
|
-
echo "Entering Nix development shell..."
|
|
96
|
-
exec nix develop "$src_dir/nix" "$@"
|
|
97
|
-
else
|
|
98
|
-
echo "Nix flake not found in source directory."
|
|
99
|
-
exit 1
|
|
100
|
-
fi
|
|
101
|
-
elif [ -n "$src_dir" ] && [ -f "$src_dir/docs/TOOLS.md" ]; then
|
|
102
|
-
exec cat "$src_dir/docs/TOOLS.md"
|
|
103
|
-
elif [ -n "$src_dir" ] && [ -f "$src_dir/docs/UTILS.md" ]; then
|
|
104
|
-
exec cat "$src_dir/docs/UTILS.md"
|
|
105
|
-
else
|
|
106
|
-
echo "Dot Tools:"
|
|
107
|
-
echo ""
|
|
108
|
-
echo "Usage: dot tools [command]"
|
|
109
|
-
echo ""
|
|
110
|
-
echo "Commands:"
|
|
111
|
-
echo " (none) Show tools documentation"
|
|
112
|
-
echo " install Enter Nix development shell with all tools"
|
|
113
|
-
echo ""
|
|
114
|
-
echo "Quick Reference:"
|
|
115
|
-
echo " dot sync - Apply dotfiles"
|
|
116
|
-
echo " dot update - Pull latest changes and apply"
|
|
117
|
-
echo " dot doctor - Run health checks"
|
|
118
|
-
echo " dot keys - Show keybindings catalog"
|
|
119
|
-
echo " dot learn - Interactive tour"
|
|
120
|
-
fi
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
cmd_new() {
|
|
124
|
-
local template_lang="${1:-}"
|
|
125
|
-
local project_name="${2:-}"
|
|
126
|
-
|
|
127
|
-
if [ -z "$template_lang" ] || [ -z "$project_name" ]; then
|
|
128
|
-
echo "Usage: dot new <lang> <name>"
|
|
129
|
-
echo "Available templates: python, go, node, packer, molecule"
|
|
130
|
-
exit 1
|
|
131
|
-
fi
|
|
132
|
-
|
|
133
|
-
# Validate inputs to prevent path traversal
|
|
134
|
-
if [[ ! "$template_lang" =~ ^[a-zA-Z0-9_-]+$ ]]; then
|
|
135
|
-
die "Invalid template name: $template_lang"
|
|
136
|
-
fi
|
|
137
|
-
if [[ ! "$project_name" =~ ^[a-zA-Z0-9_.-]+$ ]]; then
|
|
138
|
-
die "Invalid project name: $project_name"
|
|
139
|
-
fi
|
|
140
|
-
|
|
141
|
-
local src_dir
|
|
142
|
-
src_dir="$(require_source_dir)"
|
|
143
|
-
local template_dir="$src_dir/templates/projects/$template_lang"
|
|
144
|
-
|
|
145
|
-
if [ ! -d "$template_dir" ]; then
|
|
146
|
-
echo "Unknown template: $template_lang"
|
|
147
|
-
echo "Available templates: python, go, node, packer, molecule"
|
|
148
|
-
exit 1
|
|
149
|
-
fi
|
|
150
|
-
|
|
151
|
-
# Pre-flight: verify Python is available before creating any files
|
|
152
|
-
local python_cmd=""
|
|
153
|
-
if has_command python3; then
|
|
154
|
-
python_cmd="python3"
|
|
155
|
-
elif has_command python; then
|
|
156
|
-
python_cmd="python"
|
|
157
|
-
else
|
|
158
|
-
die "python3 is required to render templates."
|
|
159
|
-
fi
|
|
160
|
-
|
|
161
|
-
local dest="$PWD/$project_name"
|
|
162
|
-
if [ -e "$dest" ]; then
|
|
163
|
-
die "Destination exists: $dest"
|
|
164
|
-
fi
|
|
165
|
-
|
|
166
|
-
mkdir -p "$dest"
|
|
167
|
-
cp -R "$template_dir/." "$dest"
|
|
168
|
-
|
|
169
|
-
# Rename directories
|
|
170
|
-
find "$dest" -depth -name "__PROJECT_NAME__" -print0 | while IFS= read -r -d '' path; do
|
|
171
|
-
local parent
|
|
172
|
-
parent="$(dirname "$path")"
|
|
173
|
-
mv "$path" "$parent/$project_name"
|
|
174
|
-
done
|
|
175
|
-
|
|
176
|
-
# Render template placeholders
|
|
177
|
-
find "$dest" -type f -print0 | while IFS= read -r -d '' file; do
|
|
178
|
-
$python_cmd - "$file" "$project_name" <<'PY'
|
|
179
|
-
import sys
|
|
180
|
-
path = sys.argv[1]
|
|
181
|
-
name = sys.argv[2]
|
|
182
|
-
with open(path, "r", encoding="utf-8") as f:
|
|
183
|
-
data = f.read()
|
|
184
|
-
data = data.replace("__PROJECT_NAME__", name)
|
|
185
|
-
with open(path, "w", encoding="utf-8") as f:
|
|
186
|
-
f.write(data)
|
|
187
|
-
PY
|
|
188
|
-
done
|
|
189
|
-
|
|
190
|
-
echo "Created $template_lang project at $dest"
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
cmd_packages() {
|
|
194
|
-
echo "Package Managers:"
|
|
195
|
-
echo ""
|
|
196
|
-
show_system_package_managers
|
|
197
|
-
echo ""
|
|
198
|
-
echo "Language Package Managers:"
|
|
199
|
-
show_language_package_managers
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
cmd_log_rotate() {
|
|
203
|
-
run_script "scripts/tools/log-rotate.sh" "Log rotation script" "$@"
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
# Dispatch
|
|
207
|
-
case "${1:-}" in
|
|
208
|
-
tools)
|
|
209
|
-
shift
|
|
210
|
-
cmd_tools "$@"
|
|
211
|
-
;;
|
|
212
|
-
new)
|
|
213
|
-
shift
|
|
214
|
-
cmd_new "$@"
|
|
215
|
-
;;
|
|
216
|
-
packages)
|
|
217
|
-
shift
|
|
218
|
-
cmd_packages "$@"
|
|
219
|
-
;;
|
|
220
|
-
log-rotate)
|
|
221
|
-
shift
|
|
222
|
-
cmd_log_rotate "$@"
|
|
223
|
-
;;
|
|
224
|
-
*)
|
|
225
|
-
echo "Unknown tools command: ${1:-}" >&2
|
|
226
|
-
exit 1
|
|
227
|
-
;;
|
|
228
|
-
esac
|
package/scripts/dot/lib/utils.sh
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Dotfiles CLI Utilities
|
|
3
|
-
# Shared functions for dot command modules
|
|
4
|
-
|
|
5
|
-
# Resolve the dotfiles source directory
|
|
6
|
-
resolve_source_dir() {
|
|
7
|
-
if [ -n "${CHEZMOI_SOURCE_DIR:-}" ] && [ -d "$CHEZMOI_SOURCE_DIR" ]; then
|
|
8
|
-
echo "$CHEZMOI_SOURCE_DIR"
|
|
9
|
-
return
|
|
10
|
-
fi
|
|
11
|
-
if [ -d "$HOME/.dotfiles" ]; then
|
|
12
|
-
echo "$HOME/.dotfiles"
|
|
13
|
-
return
|
|
14
|
-
fi
|
|
15
|
-
if [ -d "$HOME/.local/share/chezmoi" ]; then
|
|
16
|
-
echo "$HOME/.local/share/chezmoi"
|
|
17
|
-
return
|
|
18
|
-
fi
|
|
19
|
-
echo ""
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
# Generic dispatcher: resolve source dir, find script, exec it.
|
|
23
|
-
# Usage: run_script <relative-script-path> <not-found-label> [args...]
|
|
24
|
-
run_script() {
|
|
25
|
-
local script_rel="$1"
|
|
26
|
-
local label="$2"
|
|
27
|
-
shift 2
|
|
28
|
-
local src_dir
|
|
29
|
-
src_dir="$(resolve_source_dir)"
|
|
30
|
-
if [ -z "$src_dir" ]; then
|
|
31
|
-
echo "Dotfiles source not found." >&2
|
|
32
|
-
exit 1
|
|
33
|
-
fi
|
|
34
|
-
if [ -f "$src_dir/$script_rel" ]; then
|
|
35
|
-
exec bash "$src_dir/$script_rel" "$@"
|
|
36
|
-
else
|
|
37
|
-
echo "$label not found." >&2
|
|
38
|
-
exit 1
|
|
39
|
-
fi
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
# Require source directory or exit
|
|
43
|
-
require_source_dir() {
|
|
44
|
-
local src_dir
|
|
45
|
-
src_dir="$(resolve_source_dir)"
|
|
46
|
-
if [ -z "$src_dir" ]; then
|
|
47
|
-
echo "Dotfiles source not found." >&2
|
|
48
|
-
exit 1
|
|
49
|
-
fi
|
|
50
|
-
echo "$src_dir"
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
# Check if a command exists
|
|
54
|
-
has_command() {
|
|
55
|
-
command -v "$1" >/dev/null 2>&1
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
# Print error message and exit
|
|
59
|
-
die() {
|
|
60
|
-
echo "Error: $1" >&2
|
|
61
|
-
exit "${2:-1}"
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
# Print warning message
|
|
65
|
-
warn() {
|
|
66
|
-
echo "Warning: $1" >&2
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
# Print info message
|
|
70
|
-
info() {
|
|
71
|
-
echo "$1"
|
|
72
|
-
}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
set -e
|
|
3
|
-
|
|
4
|
-
DEFAULT_FONTS="JetBrainsMono FiraCode Iosevka"
|
|
5
|
-
FONT_LIST="${*:-$DEFAULT_FONTS}"
|
|
6
|
-
|
|
7
|
-
install_linux() {
|
|
8
|
-
font_name="$1"
|
|
9
|
-
target_dir="$HOME/.local/share/fonts/${font_name}NerdFont"
|
|
10
|
-
mkdir -p "$target_dir"
|
|
11
|
-
tmp_dir="$(mktemp -d)"
|
|
12
|
-
url="https://github.com/ryanoasis/nerd-fonts/releases/latest/download/${font_name}.zip"
|
|
13
|
-
echo "Downloading $font_name Nerd Font..."
|
|
14
|
-
curl -fL --connect-timeout 10 --max-time 300 "$url" -o "$tmp_dir/${font_name}.zip"
|
|
15
|
-
if ! unzip -o "$tmp_dir/${font_name}.zip" -d "$target_dir" >/dev/null; then
|
|
16
|
-
echo "Error: Failed to unzip ${font_name}.zip" >&2
|
|
17
|
-
rm -rf "$tmp_dir"
|
|
18
|
-
return 1
|
|
19
|
-
fi
|
|
20
|
-
rm -rf "$tmp_dir"
|
|
21
|
-
if command -v fc-cache >/dev/null; then
|
|
22
|
-
fc-cache -f "$target_dir"
|
|
23
|
-
fi
|
|
24
|
-
echo "Installed to: $target_dir"
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
install_macos() {
|
|
28
|
-
font_name="$1"
|
|
29
|
-
if command -v brew >/dev/null; then
|
|
30
|
-
brew tap homebrew/cask-fonts >/dev/null 2>&1 || true
|
|
31
|
-
cask_name="$(printf "%s" "$font_name" | tr '[:upper:]' '[:lower:]')"
|
|
32
|
-
case "$cask_name" in
|
|
33
|
-
jetbrainsmono) cask_name="jetbrains-mono" ;;
|
|
34
|
-
firacode) cask_name="fira-code" ;;
|
|
35
|
-
iosevka) cask_name="iosevka" ;;
|
|
36
|
-
esac
|
|
37
|
-
brew install --cask "font-${cask_name}-nerd-font" || true
|
|
38
|
-
else
|
|
39
|
-
echo "Homebrew not found. Install font manually."
|
|
40
|
-
exit 1
|
|
41
|
-
fi
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
case "$(uname -s)" in
|
|
45
|
-
Linux)
|
|
46
|
-
for font in $FONT_LIST; do
|
|
47
|
-
install_linux "$font"
|
|
48
|
-
done
|
|
49
|
-
;;
|
|
50
|
-
Darwin)
|
|
51
|
-
for font in $FONT_LIST; do
|
|
52
|
-
install_macos "$font"
|
|
53
|
-
done
|
|
54
|
-
;;
|
|
55
|
-
*)
|
|
56
|
-
echo "Unsupported OS for font install."
|
|
57
|
-
exit 1
|
|
58
|
-
;;
|
|
59
|
-
esac
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
set -euo pipefail
|
|
3
|
-
|
|
4
|
-
if [[ $# -lt 1 ]]; then
|
|
5
|
-
echo "Usage: patch-fonts.sh <font-file> [output-dir]" >&2
|
|
6
|
-
exit 1
|
|
7
|
-
fi
|
|
8
|
-
|
|
9
|
-
font_file="$1"
|
|
10
|
-
out_dir="${2:-$PWD/patched-fonts}"
|
|
11
|
-
|
|
12
|
-
if [[ ! -f "$font_file" ]]; then
|
|
13
|
-
echo "Font not found: $font_file" >&2
|
|
14
|
-
exit 1
|
|
15
|
-
fi
|
|
16
|
-
|
|
17
|
-
if ! command -v fontforge >/dev/null; then
|
|
18
|
-
echo "fontforge not found. Install it first (brew install fontforge / apt install fontforge)." >&2
|
|
19
|
-
exit 1
|
|
20
|
-
fi
|
|
21
|
-
|
|
22
|
-
patcher="${NERD_FONTS_PATCHER:-$HOME/.local/share/nerd-fonts/font-patcher}"
|
|
23
|
-
|
|
24
|
-
if [[ ! -x "$patcher" ]]; then
|
|
25
|
-
echo "Nerd Fonts patcher not found: $patcher" >&2
|
|
26
|
-
echo "Set NERD_FONTS_PATCHER to the font-patcher path or clone nerd-fonts." >&2
|
|
27
|
-
exit 1
|
|
28
|
-
fi
|
|
29
|
-
|
|
30
|
-
mkdir -p "$out_dir"
|
|
31
|
-
|
|
32
|
-
fontforge -script "$patcher" --complete --outputdir "$out_dir" "$font_file"
|
|
33
|
-
|
|
34
|
-
echo "Patched font written to: $out_dir"
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
set -euo pipefail
|
|
3
|
-
|
|
4
|
-
args=()
|
|
5
|
-
if [[ -n "${DOTFILES_CHEZMOI_APPLY_FLAGS:-}" ]]; then
|
|
6
|
-
# Safely parse space-separated flags into array
|
|
7
|
-
read -ra flag_array <<<"$DOTFILES_CHEZMOI_APPLY_FLAGS"
|
|
8
|
-
args+=("${flag_array[@]}")
|
|
9
|
-
fi
|
|
10
|
-
|
|
11
|
-
if [[ "${DOTFILES_CHEZMOI_VERBOSE:-0}" = "1" ]]; then
|
|
12
|
-
args+=("--verbose")
|
|
13
|
-
fi
|
|
14
|
-
|
|
15
|
-
if [[ "${DOTFILES_CHEZMOI_KEEP_GOING:-0}" = "1" ]]; then
|
|
16
|
-
args+=("--keep-going")
|
|
17
|
-
fi
|
|
18
|
-
|
|
19
|
-
echo "Applying dotfiles..."
|
|
20
|
-
chezmoi apply "${args[@]}"
|
|
21
|
-
|
|
22
|
-
check_ai_cli() {
|
|
23
|
-
local name="$1"
|
|
24
|
-
local label="$2"
|
|
25
|
-
if ! command -v "$name" >/dev/null 2>&1; then
|
|
26
|
-
echo "NOT FOUND: $label"
|
|
27
|
-
fi
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
echo ""
|
|
31
|
-
echo "AI provider CLI checks (optional):"
|
|
32
|
-
check_ai_cli "claude" "claude (recommended — install to enable this provider)"
|
|
33
|
-
check_ai_cli "gemini" "gemini (optional — install to enable this provider)"
|
|
34
|
-
check_ai_cli "sgpt" "sgpt (optional — install to enable this provider)"
|
|
35
|
-
check_ai_cli "ollama" "ollama (optional — install to enable this provider)"
|
|
36
|
-
check_ai_cli "opencode" "opencode (optional — install to enable this provider)"
|
|
37
|
-
check_ai_cli "aider" "aider (optional — AI pair programming)"
|
|
38
|
-
|
|
39
|
-
if [[ "${DOTFILES_CHEZMOI_STATUS:-1}" = "1" ]]; then
|
|
40
|
-
printf "\nStatus:\n"
|
|
41
|
-
chezmoi status || true
|
|
42
|
-
fi
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
set -euo pipefail
|
|
3
|
-
|
|
4
|
-
excludes=(scripts)
|
|
5
|
-
if [[ -n "${DOTFILES_CHEZMOI_DIFF_EXCLUDES:-}" ]]; then
|
|
6
|
-
IFS=',' read -r -a excludes <<<"${DOTFILES_CHEZMOI_DIFF_EXCLUDES}"
|
|
7
|
-
fi
|
|
8
|
-
|
|
9
|
-
args=()
|
|
10
|
-
for ex in "${excludes[@]}"; do
|
|
11
|
-
args+=("--exclude" "$ex")
|
|
12
|
-
done
|
|
13
|
-
|
|
14
|
-
chezmoi diff "${args[@]}" "$@"
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
set -euo pipefail
|
|
3
|
-
|
|
4
|
-
if [[ $# -lt 1 ]]; then
|
|
5
|
-
echo "Usage: dot remove <path> [--source] [--dry-run]" >&2
|
|
6
|
-
exit 1
|
|
7
|
-
fi
|
|
8
|
-
|
|
9
|
-
remove_source=0
|
|
10
|
-
args=()
|
|
11
|
-
paths=()
|
|
12
|
-
|
|
13
|
-
for arg in "$@"; do
|
|
14
|
-
case "$arg" in
|
|
15
|
-
--source)
|
|
16
|
-
remove_source=1
|
|
17
|
-
;;
|
|
18
|
-
--dry-run)
|
|
19
|
-
args+=("--dry-run")
|
|
20
|
-
;;
|
|
21
|
-
*)
|
|
22
|
-
paths+=("$arg")
|
|
23
|
-
;;
|
|
24
|
-
esac
|
|
25
|
-
done
|
|
26
|
-
|
|
27
|
-
if [[ ${#paths[@]} -eq 0 ]]; then
|
|
28
|
-
echo "No path provided." >&2
|
|
29
|
-
exit 1
|
|
30
|
-
fi
|
|
31
|
-
|
|
32
|
-
if [[ $remove_source -eq 0 ]]; then
|
|
33
|
-
args+=("--keep-source")
|
|
34
|
-
fi
|
|
35
|
-
|
|
36
|
-
printf "About to run: chezmoi remove %s %s\n" "${args[*]}" "${paths[*]}"
|
|
37
|
-
read -r -p "Proceed? [y/N] " confirm
|
|
38
|
-
if [[ "$confirm" != "y" && "$confirm" != "Y" ]]; then
|
|
39
|
-
echo "Aborted."
|
|
40
|
-
exit 1
|
|
41
|
-
fi
|
|
42
|
-
|
|
43
|
-
chezmoi remove "${args[@]}" "${paths[@]}"
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
set -euo pipefail
|
|
3
|
-
|
|
4
|
-
args=()
|
|
5
|
-
if [[ -n "${DOTFILES_CHEZMOI_UPDATE_FLAGS:-}" ]]; then
|
|
6
|
-
# Safely parse space-separated flags into array
|
|
7
|
-
read -ra flag_array <<<"$DOTFILES_CHEZMOI_UPDATE_FLAGS"
|
|
8
|
-
args+=("${flag_array[@]}")
|
|
9
|
-
fi
|
|
10
|
-
|
|
11
|
-
if [[ "${DOTFILES_CHEZMOI_VERBOSE:-0}" = "1" ]]; then
|
|
12
|
-
args+=("--verbose")
|
|
13
|
-
fi
|
|
14
|
-
|
|
15
|
-
echo "Updating dotfiles..."
|
|
16
|
-
chezmoi update "${args[@]}"
|