mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-03-01 06:59:09 +00:00
Compare commits
32 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 070c94a244 | |||
| 70cf8ccf6d | |||
| 63faf4c4bf | |||
|
|
d81ff6dabb | ||
| ed6bef5c7e | |||
| 46b9e3ebeb | |||
| f26303a0ff | |||
| 8379135c81 | |||
| 73d0d6b35f | |||
| 6a839eea56 | |||
| 28c8332058 | |||
| b956119b98 | |||
|
|
0f82f8e65b | ||
|
|
f1277ddf99 | ||
|
|
c834eab42b | ||
|
|
f93deb8bca | ||
|
|
248f57b914 | ||
|
|
86e4f9618c | ||
|
|
7eb97392fb | ||
|
|
8be1a9e7e2 | ||
|
|
a7c03fc3d6 | ||
|
|
3368e3b6dc | ||
|
|
5d87452224 | ||
|
|
d779d23723 | ||
|
|
ee812de4af | ||
| a18c16b0b9 | |||
| 785a8e8eb7 | |||
| 1cda859999 | |||
| bc69560da4 | |||
| 2ee9407a43 | |||
| 765c2fce72 | |||
| 88eceaf194 |
30
.claude/settings.json
Normal file
30
.claude/settings.json
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"hooks": {
|
||||
"PreToolUse": [
|
||||
{
|
||||
"matcher": "Edit|Write",
|
||||
"hooks": [
|
||||
{
|
||||
"type": "command",
|
||||
"command": "fp=$(cat | jq -r '.tool_input.file_path // empty') && [ -n \"$fp\" ] && case \"$fp\" in */fzf-tmux|*/yarn.lock|*/.yarn/*) echo \"BLOCKED: $fp is a vendor/lock file — do not edit directly\" >&2; exit 2;; esac; exit 0"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PostToolUse": [
|
||||
{
|
||||
"matcher": "Edit|Write",
|
||||
"hooks": [
|
||||
{
|
||||
"type": "command",
|
||||
"command": "fp=$(cat | jq -r '.tool_input.file_path // empty') && [ -n \"$fp\" ] && [ -f \"$fp\" ] && case \"$fp\" in *.sh|*/bin/*) head -1 \"$fp\" | grep -qE '^#!.*(ba)?sh' && command -v shfmt > /dev/null && shfmt -i 2 -bn -ci -sr -fn -w \"$fp\";; esac; exit 0"
|
||||
},
|
||||
{
|
||||
"type": "command",
|
||||
"command": "fp=$(cat | jq -r '.tool_input.file_path // empty') && [ -n \"$fp\" ] && [ -f \"$fp\" ] && case \"$fp\" in *.fish) command -v fish_indent > /dev/null && fish_indent -w \"$fp\";; esac; exit 0"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
38
.claude/skills/fish-validate/SKILL.md
Normal file
38
.claude/skills/fish-validate/SKILL.md
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
name: fish-validate
|
||||
description: >-
|
||||
Validate fish scripts after editing.
|
||||
Apply when writing or modifying any .fish file
|
||||
in config/fish/.
|
||||
user-invocable: false
|
||||
allowed-tools: Bash, Read
|
||||
---
|
||||
|
||||
After editing any `.fish` file in `config/fish/`, validate it:
|
||||
|
||||
## 1. Syntax check
|
||||
|
||||
```bash
|
||||
fish --no-execute <file>
|
||||
```
|
||||
|
||||
If syntax check fails, fix the issue before proceeding.
|
||||
|
||||
## 2. Format check
|
||||
|
||||
Run `fish_indent` to verify formatting:
|
||||
|
||||
```bash
|
||||
fish_indent --check <file>
|
||||
```
|
||||
|
||||
If formatting differs, apply it:
|
||||
|
||||
```bash
|
||||
fish_indent -w <file>
|
||||
```
|
||||
|
||||
## Key files to never validate
|
||||
|
||||
- Files inside `config/fish/functions/` prefixed with `_tide_`
|
||||
(managed by the tide prompt plugin)
|
||||
22
.claude/skills/lua-format/SKILL.md
Normal file
22
.claude/skills/lua-format/SKILL.md
Normal file
@@ -0,0 +1,22 @@
|
||||
---
|
||||
name: lua-format
|
||||
description: >-
|
||||
Format Lua files after editing.
|
||||
Apply when writing or modifying any .lua file.
|
||||
user-invocable: false
|
||||
allowed-tools: Bash
|
||||
---
|
||||
|
||||
After editing any `.lua` file, format it with stylua:
|
||||
|
||||
```bash
|
||||
stylua <file>
|
||||
```
|
||||
|
||||
Project settings are in `stylua.toml` (90-char line length).
|
||||
|
||||
If stylua is not available, skip formatting silently.
|
||||
|
||||
## Files to never format
|
||||
|
||||
- Files inside `config/nvim/` managed by plugins (lazy.nvim lockfile)
|
||||
44
.claude/skills/shell-validate/SKILL.md
Normal file
44
.claude/skills/shell-validate/SKILL.md
Normal file
@@ -0,0 +1,44 @@
|
||||
---
|
||||
name: shell-validate
|
||||
description: >-
|
||||
Validate shell scripts after editing.
|
||||
Apply when writing or modifying any shell script
|
||||
in local/bin/ or scripts/.
|
||||
user-invocable: false
|
||||
allowed-tools: Bash, Read, Grep
|
||||
---
|
||||
|
||||
After editing any shell script in `local/bin/`, `scripts/`, or `config/`
|
||||
(files with a `#!` shebang or `# shellcheck shell=` directive),
|
||||
validate it:
|
||||
|
||||
## 1. Determine the shell
|
||||
|
||||
- `/bin/sh` or `#!/usr/bin/env sh` shebang -> POSIX, use `sh -n`
|
||||
- `/bin/bash` or `#!/usr/bin/env bash` shebang -> Bash, use `bash -n`
|
||||
- `# shellcheck shell=bash` directive (no shebang) -> use `bash -n`
|
||||
- `# shellcheck shell=sh` directive (no shebang) -> use `sh -n`
|
||||
- No shebang and no directive -> default to `bash -n`
|
||||
|
||||
## 2. Syntax check
|
||||
|
||||
Run the appropriate syntax checker:
|
||||
|
||||
```bash
|
||||
bash -n <file> # for bash scripts
|
||||
sh -n <file> # for POSIX sh scripts
|
||||
```
|
||||
|
||||
If syntax check fails, fix the issue before proceeding.
|
||||
|
||||
## 3. ShellCheck
|
||||
|
||||
Run `shellcheck <file>`. The project `.shellcheckrc` already
|
||||
disables SC2039, SC2166, SC2154, SC1091, SC2174, SC2016.
|
||||
Only report and fix warnings that are NOT in that exclude list.
|
||||
|
||||
## Key files to never validate (not shell scripts)
|
||||
|
||||
- `local/bin/fzf-tmux` (vendor file)
|
||||
- `*.md` files
|
||||
- `*.bats` test files (Bats, not plain shell)
|
||||
4
.github/workflows/linters.yml
vendored
4
.github/workflows/linters.yml
vendored
@@ -31,9 +31,9 @@ jobs:
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
|
||||
- name: Yarn Lock Changes
|
||||
uses: Simek/yarn-lock-changes@c7543145aaafdd8fc925cea5d85b2bd5a73091f8 # v0.14.0
|
||||
uses: Simek/yarn-lock-changes@59f47ee499424d2c2437c5aebf863b5c6d50a5bc # v0.14.1
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Run PR Lint
|
||||
uses: ivuorinen/actions/pr-lint@f371da218e9152e7d29ee39358454e41010c36dc # v2026.02.03
|
||||
uses: ivuorinen/actions/pr-lint@8faacf8a1cae049c1471708dcb408a167e91afaf # v2026.02.24
|
||||
|
||||
2
.github/workflows/sync-labels.yml
vendored
2
.github/workflows/sync-labels.yml
vendored
@@ -30,4 +30,4 @@ jobs:
|
||||
issues: write
|
||||
|
||||
steps:
|
||||
- uses: ivuorinen/actions/sync-labels@f371da218e9152e7d29ee39358454e41010c36dc # v2026.02.03
|
||||
- uses: ivuorinen/actions/sync-labels@8faacf8a1cae049c1471708dcb408a167e91afaf # v2026.02.24
|
||||
|
||||
@@ -59,7 +59,7 @@ repos:
|
||||
args: [-i, "2", -bn, -ci, -sr, -fn, -w]
|
||||
|
||||
- repo: https://github.com/rhysd/actionlint
|
||||
rev: v1.7.10
|
||||
rev: v1.7.11
|
||||
hooks:
|
||||
- id: actionlint
|
||||
|
||||
@@ -76,7 +76,7 @@ repos:
|
||||
- id: fish_indent
|
||||
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
rev: v0.15.0
|
||||
rev: v0.15.4
|
||||
hooks:
|
||||
- id: ruff-check
|
||||
args: [--fix]
|
||||
|
||||
@@ -16,3 +16,4 @@ local/bin/antigen.zsh
|
||||
local/bin/asdf
|
||||
tools
|
||||
docs/plans
|
||||
config/gh/hosts.yml
|
||||
|
||||
@@ -1 +1 @@
|
||||
3.14.2
|
||||
3.14.3
|
||||
|
||||
41
CLAUDE.md
41
CLAUDE.md
@@ -34,6 +34,8 @@ yarn install
|
||||
yarn lint # Run biome + prettier + editorconfig-checker
|
||||
yarn lint:biome # Biome only
|
||||
yarn lint:ec # EditorConfig checker only
|
||||
yarn lint:md-table # Markdown table formatting check
|
||||
yarn fix:md-table # Auto-fix markdown tables
|
||||
|
||||
# Formatting
|
||||
yarn fix:biome # Autofix with biome (JS/TS/JSON/MD)
|
||||
@@ -48,6 +50,9 @@ yarn test # Run all tests in tests/
|
||||
|
||||
# Shell linting
|
||||
shellcheck <script> # Lint shell scripts
|
||||
|
||||
# Tooling maintenance
|
||||
yarn biome migrate --write # Update biome schema version
|
||||
```
|
||||
|
||||
## Pre-commit Hooks
|
||||
@@ -74,12 +79,24 @@ which loads:
|
||||
Zsh additionally uses **antidote** (in `tools/antidote/`)
|
||||
for plugin management and **oh-my-posh** for the prompt.
|
||||
|
||||
### msgr — Messaging Helper
|
||||
|
||||
`local/bin/msgr` provides colored output functions (`msgr msg`,
|
||||
`msgr run`, `msgr yay`, `msgr err`, `msgr warn`). Sourced by `dfm`
|
||||
and most scripts in `local/bin/`.
|
||||
|
||||
### dfm — Dotfiles Manager
|
||||
|
||||
`local/bin/dfm` is the main management script. Key commands:
|
||||
- `dfm install all` — install everything (called during `./install`)
|
||||
- `dfm install all` — install everything in tiered stages
|
||||
- `dfm brew install` / `dfm brew update` — Homebrew management
|
||||
- `dfm apt upkeep` — APT package maintenance (Debian/Ubuntu)
|
||||
- `dfm dotfiles fmt` / `dfm dotfiles shfmt` — format configs/scripts
|
||||
- `dfm helpers <name>` — inspect aliases, colors, env, functions, path
|
||||
- `dfm docs all` — regenerate documentation under `docs/`
|
||||
- `dfm check arch` / `dfm check host` — system info
|
||||
- `dfm scripts` — run scripts from `scripts/` (discovered via `@description` tags)
|
||||
- `dfm tests` — test visualization helpers
|
||||
|
||||
### Submodules
|
||||
|
||||
@@ -118,6 +135,28 @@ SC2039 (POSIX `local`), SC2166 (`-o` in test),
|
||||
SC2154 (unassigned variables), SC1091 (source following),
|
||||
SC2174 (mkdir -p -m), SC2016 (single-quote expressions).
|
||||
|
||||
## Gotchas
|
||||
|
||||
- **POSIX scripts**: `x-ssh-audit`, `x-codeql`, `x-until-error`,
|
||||
`x-until-success`, `x-ssl-expiry-date` use `/bin/sh`.
|
||||
Validate with `sh -n`, not `bash -n`.
|
||||
- **Vendor file**: `local/bin/fzf-tmux` is vendored from
|
||||
junegunn/fzf — do not modify.
|
||||
- **Fish config**: `config/fish/` has its own config chain
|
||||
(`config.fish`, `exports.fish`, `alias.fish`) plus 60+ functions.
|
||||
- **gh CLI config**: `config/gh/hosts.yml` is managed by `gh` CLI
|
||||
and excluded from prettier (see `.prettierignore`).
|
||||
- **Python**: Two scripts (`x-compare-versions.py`,
|
||||
`x-git-largest-files.py`) linted by Ruff (config in `pyproject.toml`).
|
||||
|
||||
## Claude Code Configuration
|
||||
|
||||
- **Hooks** (`.claude/settings.json`):
|
||||
- *PreToolUse*: Blocks edits to `fzf-tmux`, `yarn.lock`, `.yarn/`
|
||||
- *PostToolUse*: Auto-runs `shfmt` on shell scripts after Edit/Write
|
||||
- **Skills** (`.claude/skills/`):
|
||||
- `shell-validate`: Auto-validates shell scripts (syntax + shellcheck)
|
||||
|
||||
## Package Manager
|
||||
|
||||
Yarn (v4.12.0) is the package manager. Do not use npm.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"$schema": "https://biomejs.dev/schemas/2.3.11/schema.json",
|
||||
"$schema": "https://biomejs.dev/schemas/2.4.4/schema.json",
|
||||
"vcs": {
|
||||
"enabled": true,
|
||||
"clientKind": "git",
|
||||
|
||||
@@ -4,15 +4,15 @@
|
||||
|
||||
# Set XDG directories if not already set
|
||||
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||
[ -z "$XDG_CONFIG_HOME" ] && export XDG_CONFIG_HOME="$HOME/.config"
|
||||
[ -z "$XDG_DATA_HOME" ] && export XDG_DATA_HOME="$HOME/.local/share"
|
||||
[ -z "$XDG_CACHE_HOME" ] && export XDG_CACHE_HOME="$HOME/.cache"
|
||||
[ -z "$XDG_STATE_HOME" ] && export XDG_STATE_HOME="$HOME/.local/state"
|
||||
[ -z "$XDG_BIN_HOME" ] && export XDG_BIN_HOME="$HOME/.local/bin"
|
||||
[ -z "$XDG_RUNTIME_DIR" ] && export XDG_RUNTIME_DIR="$HOME/.local/run"
|
||||
[ -z "${XDG_CONFIG_HOME:-}" ] && export XDG_CONFIG_HOME="$HOME/.config"
|
||||
[ -z "${XDG_DATA_HOME:-}" ] && export XDG_DATA_HOME="$HOME/.local/share"
|
||||
[ -z "${XDG_CACHE_HOME:-}" ] && export XDG_CACHE_HOME="$HOME/.cache"
|
||||
[ -z "${XDG_STATE_HOME:-}" ] && export XDG_STATE_HOME="$HOME/.local/state"
|
||||
[ -z "${XDG_BIN_HOME:-}" ] && export XDG_BIN_HOME="$HOME/.local/bin"
|
||||
[ -z "${XDG_RUNTIME_DIR:-}" ] && export XDG_RUNTIME_DIR="$HOME/.local/run"
|
||||
|
||||
# if DOTFILES is not set, set it to the default location
|
||||
[ -z "$DOTFILES" ] && export DOTFILES="$HOME/.dotfiles"
|
||||
[ -z "${DOTFILES:-}" ] && export DOTFILES="$HOME/.dotfiles"
|
||||
|
||||
export PATH="$XDG_BIN_HOME:$DOTFILES/local/bin:$XDG_DATA_HOME/bob/nvim-bin:$XDG_DATA_HOME/cargo/bin:/opt/homebrew/bin:/usr/local/bin:$PATH"
|
||||
|
||||
@@ -448,9 +448,9 @@ export ZSHZ_DATA="$XDG_STATE_HOME/z"
|
||||
export CHEAT_USE_FZF=true
|
||||
export SQLITE_HISTORY="${XDG_CACHE_HOME}/sqlite_history"
|
||||
|
||||
[ -f "$XDG_CONFIG_HOME/exports-secret" ] && source "$XDG_CONFIG_HOME/exports-secret"
|
||||
[ -f "$XDG_CONFIG_HOME/exports-local" ] && source "$XDG_CONFIG_HOME/exports-local"
|
||||
if [ -f "$XDG_CONFIG_HOME/exports-secret" ]; then source "$XDG_CONFIG_HOME/exports-secret"; fi
|
||||
if [ -f "$XDG_CONFIG_HOME/exports-local" ]; then source "$XDG_CONFIG_HOME/exports-local"; fi
|
||||
# shellcheck source=./exports-lakka
|
||||
[ -f "$XDG_CONFIG_HOME/exports-$(hostname)" ] && source "$XDG_CONFIG_HOME/exports-$(hostname)"
|
||||
if [ -f "$XDG_CONFIG_HOME/exports-$(hostname)" ]; then source "$XDG_CONFIG_HOME/exports-$(hostname)"; fi
|
||||
# shellcheck source=./exports-lakka-secret
|
||||
[ -f "$XDG_CONFIG_HOME/exports-$(hostname)-secret" ] && source "$XDG_CONFIG_HOME/exports-$(hostname)-secret"
|
||||
if [ -f "$XDG_CONFIG_HOME/exports-$(hostname)-secret" ]; then source "$XDG_CONFIG_HOME/exports-$(hostname)-secret"; fi
|
||||
|
||||
@@ -2,21 +2,21 @@
|
||||
# Place in ~/.config/fish/completions/phpenv.fish
|
||||
|
||||
# Complete main commands
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "install" -d "Install a PHP version"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "uninstall" -d "Uninstall a PHP version"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "use" -d "Use PHP version for current shell"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "local" -d "Set PHP version for current project"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "global" -d "Set global PHP version"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "list" -d "List installed PHP versions"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "ls" -d "List installed PHP versions"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "current" -d "Show current PHP version"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "which" -d "Show path to PHP binary"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "versions" -d "Show all available versions"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "doctor" -d "Check phpenv installation"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "config" -d "Manage configuration"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "extensions" -d "Manage PHP extensions"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "ext" -d "Manage PHP extensions"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "help" -d "Show help"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a install -d "Install a PHP version"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a uninstall -d "Uninstall a PHP version"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a use -d "Use PHP version for current shell"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a local -d "Set PHP version for current project"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a global -d "Set global PHP version"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a list -d "List installed PHP versions"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a ls -d "List installed PHP versions"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a current -d "Show current PHP version"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a which -d "Show path to PHP binary"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a versions -d "Show all available versions"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a doctor -d "Check phpenv installation"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a config -d "Manage configuration"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a extensions -d "Manage PHP extensions"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a ext -d "Manage PHP extensions"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a help -d "Show help"
|
||||
|
||||
# Helper functions for completions
|
||||
function __phpenv_complete_installed_versions
|
||||
@@ -26,13 +26,13 @@ end
|
||||
function __phpenv_complete_available_versions
|
||||
# Try to get dynamic versions first
|
||||
if command -q curl -a command -q jq; and functions -q __phpenv_parse_version_field
|
||||
echo "latest"
|
||||
echo "nightly"
|
||||
echo latest
|
||||
echo nightly
|
||||
echo "5.x"
|
||||
echo "7.x"
|
||||
echo "8.x"
|
||||
__phpenv_parse_version_field "latest" "8.4"
|
||||
__phpenv_parse_version_field "nightly" "8.5"
|
||||
__phpenv_parse_version_field latest "8.4"
|
||||
__phpenv_parse_version_field nightly "8.5"
|
||||
__phpenv_parse_version_field "5.x" "5.6"
|
||||
__phpenv_parse_version_field "7.x" "7.4"
|
||||
__phpenv_parse_version_field "8.x" "8.4"
|
||||
@@ -64,18 +64,18 @@ complete -c phpenv -f -n "__fish_seen_subcommand_from uninstall use local global
|
||||
-a "(__phpenv_complete_installed_versions)" -d "Installed PHP version"
|
||||
|
||||
# Add system option for use command
|
||||
complete -c phpenv -f -n "__fish_seen_subcommand_from use" -a "system" -d "Use system PHP"
|
||||
complete -c phpenv -f -n "__fish_seen_subcommand_from use" -a system -d "Use system PHP"
|
||||
|
||||
# Complete binaries for which command
|
||||
complete -c phpenv -f -n "__fish_seen_subcommand_from which" -a "(__phpenv_complete_binaries)" -d "PHP binary"
|
||||
|
||||
# Complete config subcommands
|
||||
complete -c phpenv -f -n "__fish_seen_subcommand_from config; and not __fish_seen_subcommand_from get set list" \
|
||||
-a "get" -d "Get configuration value"
|
||||
-a get -d "Get configuration value"
|
||||
complete -c phpenv -f -n "__fish_seen_subcommand_from config; and not __fish_seen_subcommand_from get set list" \
|
||||
-a "set" -d "Set configuration value"
|
||||
-a set -d "Set configuration value"
|
||||
complete -c phpenv -f -n "__fish_seen_subcommand_from config; and not __fish_seen_subcommand_from get set list" \
|
||||
-a "list" -d "List all configuration"
|
||||
-a list -d "List all configuration"
|
||||
|
||||
# Complete config keys
|
||||
complete -c phpenv -f -n "__fish_seen_subcommand_from config; and __fish_seen_subcommand_from get set" \
|
||||
@@ -91,27 +91,27 @@ complete -c phpenv -f \
|
||||
complete -c phpenv -f \
|
||||
-n "__fish_seen_subcommand_from extensions ext" \
|
||||
-n "not __fish_seen_subcommand_from install uninstall remove list ls available" \
|
||||
-a "install" -d "Install PHP extension"
|
||||
-a install -d "Install PHP extension"
|
||||
complete -c phpenv -f \
|
||||
-n "__fish_seen_subcommand_from extensions ext" \
|
||||
-n "not __fish_seen_subcommand_from install uninstall remove list ls available" \
|
||||
-a "uninstall" -d "Uninstall PHP extension"
|
||||
-a uninstall -d "Uninstall PHP extension"
|
||||
complete -c phpenv -f \
|
||||
-n "__fish_seen_subcommand_from extensions ext" \
|
||||
-n "not __fish_seen_subcommand_from install uninstall remove list ls available" \
|
||||
-a "remove" -d "Remove PHP extension"
|
||||
-a remove -d "Remove PHP extension"
|
||||
complete -c phpenv -f \
|
||||
-n "__fish_seen_subcommand_from extensions ext" \
|
||||
-n "not __fish_seen_subcommand_from install uninstall remove list ls available" \
|
||||
-a "list" -d "List installed extensions"
|
||||
-a list -d "List installed extensions"
|
||||
complete -c phpenv -f \
|
||||
-n "__fish_seen_subcommand_from extensions ext" \
|
||||
-n "not __fish_seen_subcommand_from install uninstall remove list ls available" \
|
||||
-a "ls" -d "List installed extensions"
|
||||
-a ls -d "List installed extensions"
|
||||
complete -c phpenv -f \
|
||||
-n "__fish_seen_subcommand_from extensions ext" \
|
||||
-n "not __fish_seen_subcommand_from install uninstall remove list ls available" \
|
||||
-a "available" -d "Show available extensions"
|
||||
-a available -d "Show available extensions"
|
||||
|
||||
# Complete extension names
|
||||
complete -c phpenv -f \
|
||||
|
||||
@@ -23,7 +23,7 @@ if not set -q PHPENV_AUTO_SWITCH
|
||||
end
|
||||
|
||||
if not set -q PHPENV_DEFAULT_EXTENSIONS
|
||||
set -g PHPENV_DEFAULT_EXTENSIONS "opcache"
|
||||
set -g PHPENV_DEFAULT_EXTENSIONS opcache
|
||||
end
|
||||
|
||||
# Initialize PATH on shell startup if global version is set (less aggressive)
|
||||
|
||||
1
config/fish/conf.d/rustup.fish
Normal file
1
config/fish/conf.d/rustup.fish
Normal file
@@ -0,0 +1 @@
|
||||
source "/home/ivuorinen/.local/share/cargo/env.fish"
|
||||
@@ -21,6 +21,7 @@ if status is-interactive
|
||||
source "$HOME/.config/op/plugins.sh"
|
||||
|
||||
# version manager initializers
|
||||
type -q mise; and source (mise activate fish|psub)
|
||||
type -q rbenv; and source (rbenv init -|psub)
|
||||
type -q pyenv; and source (pyenv init -|psub)
|
||||
type -q pyenv; and source (pyenv virtualenv-init -|psub)
|
||||
|
||||
@@ -17,6 +17,9 @@ set -q HOSTNAME; or set -x HOSTNAME (hostname -s)
|
||||
# Add local bin to path
|
||||
fish_add_path "$XDG_BIN_HOME"
|
||||
|
||||
# Add mise shims to path
|
||||
fish_add_path "$XDG_DATA_HOME/mise/shims"
|
||||
|
||||
# Add cargo bin to path
|
||||
fish_add_path "$XDG_SHARE_HOME/cargo/bin"
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@ end
|
||||
|
||||
function __phpenv_find_version_file -a phpenv_filename
|
||||
set -l phpenv_dir (pwd)
|
||||
while test "$phpenv_dir" != "/"
|
||||
while test "$phpenv_dir" != /
|
||||
if test -f "$phpenv_dir/$phpenv_filename"
|
||||
echo "$phpenv_dir/$phpenv_filename"
|
||||
return
|
||||
@@ -130,13 +130,13 @@ function __phpenv_parse_composer_version
|
||||
end
|
||||
|
||||
set -l phpenv_platform_php (jq -r '.config.platform.php // empty' composer.json 2>/dev/null)
|
||||
if test $status -eq 0 -a -n "$phpenv_platform_php" -a "$phpenv_platform_php" != "null"
|
||||
if test $status -eq 0 -a -n "$phpenv_platform_php" -a "$phpenv_platform_php" != null
|
||||
echo $phpenv_platform_php
|
||||
return
|
||||
end
|
||||
|
||||
set -l phpenv_require_php (jq -r '.require.php // empty' composer.json 2>/dev/null)
|
||||
if test $status -eq 0 -a -n "$phpenv_require_php" -a "$phpenv_require_php" != "null"
|
||||
if test $status -eq 0 -a -n "$phpenv_require_php" -a "$phpenv_require_php" != null
|
||||
__phpenv_parse_semver_constraint $phpenv_require_php
|
||||
return
|
||||
end
|
||||
@@ -196,7 +196,7 @@ set -g __phpenv_version_cache_time 0
|
||||
|
||||
function __phpenv_get_version_info
|
||||
set -l current_time (date +%s)
|
||||
set -l cache_duration 300 # 5 minutes
|
||||
set -l cache_duration 300 # 5 minutes
|
||||
|
||||
# Return cached version if still valid
|
||||
if test -n "$__phpenv_version_cache"
|
||||
@@ -236,12 +236,12 @@ end
|
||||
# Check if Ondřej PPA is configured on the system
|
||||
function __phpenv_has_ondrej_ppa
|
||||
if test -d /etc/apt/sources.list.d
|
||||
if grep -rq "ondrej/php" /etc/apt/sources.list.d/ 2>/dev/null
|
||||
if grep -rq ondrej/php /etc/apt/sources.list.d/ 2>/dev/null
|
||||
return 0
|
||||
end
|
||||
end
|
||||
if test -f /etc/apt/sources.list
|
||||
if grep -q "ondrej/php" /etc/apt/sources.list 2>/dev/null
|
||||
if grep -q ondrej/php /etc/apt/sources.list 2>/dev/null
|
||||
return 0
|
||||
end
|
||||
end
|
||||
@@ -262,34 +262,34 @@ function __phpenv_get_provider
|
||||
end
|
||||
|
||||
# macOS always uses Homebrew
|
||||
if test (uname -s) = "Darwin"
|
||||
echo "homebrew"
|
||||
if test (uname -s) = Darwin
|
||||
echo homebrew
|
||||
return 0
|
||||
end
|
||||
|
||||
# Linux: check for apt with Ondřej PPA first
|
||||
if test (uname -s) = "Linux"
|
||||
if test (uname -s) = Linux
|
||||
if command -q apt-get; and __phpenv_has_ondrej_ppa
|
||||
echo "apt"
|
||||
echo apt
|
||||
return 0
|
||||
end
|
||||
|
||||
# Fall back to Homebrew (Linuxbrew) if available
|
||||
if command -q brew
|
||||
echo "homebrew"
|
||||
echo homebrew
|
||||
return 0
|
||||
end
|
||||
|
||||
# If apt is available but no PPA yet, still use apt provider
|
||||
# (it will prompt to add the PPA when needed)
|
||||
if command -q apt-get
|
||||
echo "apt"
|
||||
echo apt
|
||||
return 0
|
||||
end
|
||||
end
|
||||
|
||||
# Default fallback
|
||||
echo "homebrew"
|
||||
echo homebrew
|
||||
return 0
|
||||
end
|
||||
|
||||
@@ -319,7 +319,7 @@ function __phpenv_provider_homebrew_ensure_source
|
||||
end
|
||||
|
||||
# Check and add required taps only if missing
|
||||
set -l required_taps "shivammathur/php" "shivammathur/extensions"
|
||||
set -l required_taps shivammathur/php shivammathur/extensions
|
||||
for tap in $required_taps
|
||||
if not brew tap | grep -qx $tap 2>/dev/null
|
||||
if not brew tap $tap 2>/dev/null
|
||||
@@ -343,7 +343,7 @@ function __phpenv_provider_homebrew_list_installed
|
||||
continue
|
||||
end
|
||||
|
||||
if test "$phpenv_basename" = "php"
|
||||
if test "$phpenv_basename" = php
|
||||
set -l phpenv_latest (__phpenv_parse_version_field "latest" "8.4")
|
||||
set -a phpenv_versions $phpenv_latest
|
||||
else if echo $phpenv_basename | grep -qE '^php@[0-9]+\.[0-9]+$'
|
||||
@@ -375,7 +375,7 @@ function __phpenv_provider_homebrew_list_available
|
||||
continue
|
||||
end
|
||||
|
||||
if test "$phpenv_clean_name" = "php"
|
||||
if test "$phpenv_clean_name" = php
|
||||
set -a phpenv_versions "$phpenv_latest_version (latest)"
|
||||
else if echo $phpenv_clean_name | grep -qE '^php@[0-9]+\.[0-9]+$'
|
||||
set -l phpenv_version (echo $phpenv_clean_name | sed 's/php@//')
|
||||
@@ -502,7 +502,7 @@ function __phpenv_provider_homebrew_ext_list -a phpenv_version
|
||||
for phpenv_ext_dir in $phpenv_cellar_path/*@$phpenv_version
|
||||
if test -d $phpenv_ext_dir
|
||||
set -l phpenv_ext_name (basename $phpenv_ext_dir | sed "s/@$phpenv_version//")
|
||||
if test "$phpenv_ext_name" != "php"
|
||||
if test "$phpenv_ext_name" != php
|
||||
echo $phpenv_ext_name
|
||||
end
|
||||
end
|
||||
@@ -574,7 +574,7 @@ function __phpenv_provider_apt_ensure_source
|
||||
echo ""
|
||||
read -P "Add ppa:ondrej/php? [y/N] " -l confirm
|
||||
|
||||
if test "$confirm" = "y" -o "$confirm" = "Y"
|
||||
if test "$confirm" = y -o "$confirm" = Y
|
||||
echo "Adding ppa:ondrej/php..."
|
||||
if command -q add-apt-repository
|
||||
if sudo add-apt-repository -y ppa:ondrej/php
|
||||
@@ -603,8 +603,7 @@ function __phpenv_provider_apt_list_installed
|
||||
return 1
|
||||
end
|
||||
|
||||
dpkg -l 'php[0-9]*-cli' 2>/dev/null | grep '^ii' | \
|
||||
sed -E 's/^ii\s+php([0-9]+\.[0-9]+)-cli.*/\1/' | sort -V | uniq
|
||||
dpkg -l 'php[0-9]*-cli' 2>/dev/null | grep '^ii' | sed -E 's/^ii\s+php([0-9]+\.[0-9]+)-cli.*/\1/' | sort -V | uniq
|
||||
end
|
||||
|
||||
function __phpenv_provider_apt_list_available
|
||||
@@ -613,8 +612,7 @@ function __phpenv_provider_apt_list_available
|
||||
return
|
||||
end
|
||||
|
||||
apt-cache search '^php[0-9]+\.[0-9]+-cli$' 2>/dev/null | \
|
||||
sed -E 's/^php([0-9]+\.[0-9]+)-cli.*/\1/' | sort -V | uniq
|
||||
apt-cache search '^php[0-9]+\.[0-9]+-cli$' 2>/dev/null | sed -E 's/^php([0-9]+\.[0-9]+)-cli.*/\1/' | sort -V | uniq
|
||||
end
|
||||
|
||||
function __phpenv_provider_apt_get_php_path -a phpenv_version
|
||||
@@ -644,7 +642,7 @@ function __phpenv_provider_apt_get_php_path -a phpenv_version
|
||||
set -l temp_link "$target.$fish_pid"
|
||||
ln -s "$source" "$temp_link" 2>/dev/null
|
||||
and mv -f "$temp_link" "$target" 2>/dev/null
|
||||
else if test "$binary" = "phar"; and test -x "/usr/bin/phar$phpenv_version"
|
||||
else if test "$binary" = phar; and test -x "/usr/bin/phar$phpenv_version"
|
||||
set -l temp_link "$target.$fish_pid"
|
||||
ln -s "/usr/bin/phar$phpenv_version" "$temp_link" 2>/dev/null
|
||||
and mv -f "$temp_link" "$target" 2>/dev/null
|
||||
@@ -819,8 +817,7 @@ function __phpenv_provider_apt_ext_list -a phpenv_version
|
||||
# Filter out core packages (cli, common, etc.)
|
||||
set -l core_packages cli common opcache fpm cgi phpdbg
|
||||
|
||||
dpkg -l "php$phpenv_version-*" 2>/dev/null | grep '^ii' | awk '{print $2}' | \
|
||||
sed "s/php$phpenv_version-//" | while read ext
|
||||
dpkg -l "php$phpenv_version-*" 2>/dev/null | grep '^ii' | awk '{print $2}' | sed "s/php$phpenv_version-//" | while read ext
|
||||
# Skip core packages
|
||||
set -l is_core 0
|
||||
for core in $core_packages
|
||||
@@ -837,9 +834,7 @@ end
|
||||
|
||||
function __phpenv_provider_apt_ext_available -a phpenv_version
|
||||
# List available extensions from apt cache
|
||||
apt-cache search "^php$phpenv_version-" 2>/dev/null | \
|
||||
sed "s/php$phpenv_version-//" | awk '{print $1}' | \
|
||||
grep -v -E '^(cli|common|fpm|cgi|phpdbg|dev)$' | sort | uniq
|
||||
apt-cache search "^php$phpenv_version-" 2>/dev/null | sed "s/php$phpenv_version-//" | awk '{print $1}' | grep -v -E '^(cli|common|fpm|cgi|phpdbg|dev)$' | sort | uniq
|
||||
end
|
||||
|
||||
function __phpenv_provider_apt_get_path_pattern
|
||||
@@ -979,9 +974,9 @@ end
|
||||
function __phpenv_resolve_version_alias -a phpenv_version
|
||||
switch $phpenv_version
|
||||
case latest
|
||||
__phpenv_parse_version_field "latest" "8.4"
|
||||
__phpenv_parse_version_field latest "8.4"
|
||||
case nightly
|
||||
__phpenv_parse_version_field "nightly" "8.5"
|
||||
__phpenv_parse_version_field nightly "8.5"
|
||||
case '8.x'
|
||||
__phpenv_parse_version_field "8.x" "8.4"
|
||||
case '7.x'
|
||||
@@ -997,7 +992,7 @@ function __phpenv_get_formula_name -a phpenv_version
|
||||
set -l phpenv_latest_version (__phpenv_parse_version_field "latest" "8.4")
|
||||
|
||||
if test "$phpenv_version" = "$phpenv_latest_version"
|
||||
echo "shivammathur/php/php"
|
||||
echo shivammathur/php/php
|
||||
else
|
||||
echo "shivammathur/php/php@$phpenv_version"
|
||||
end
|
||||
@@ -1140,7 +1135,7 @@ function __phpenv_use
|
||||
set -l phpenv_version $argv[1]
|
||||
|
||||
# Handle special case: restore system PHP
|
||||
if test "$phpenv_version" = "system"
|
||||
if test "$phpenv_version" = system
|
||||
__phpenv_restore_system_path
|
||||
echo "Restored system PHP"
|
||||
return 0
|
||||
@@ -1157,7 +1152,7 @@ function __phpenv_use
|
||||
end
|
||||
|
||||
if not __phpenv_is_version_installed $phpenv_version
|
||||
if test "$(__phpenv_config_get auto-install)" = "true"
|
||||
if test "$(__phpenv_config_get auto-install)" = true
|
||||
__phpenv_install $phpenv_version
|
||||
else
|
||||
echo "PHP $phpenv_version is not installed. Install with: phpenv install $phpenv_version"
|
||||
@@ -1179,7 +1174,7 @@ function __phpenv_local -a phpenv_version
|
||||
return 1
|
||||
end
|
||||
|
||||
echo $phpenv_version > .php-version
|
||||
echo $phpenv_version >.php-version
|
||||
echo "Set local PHP version to $phpenv_version"
|
||||
end
|
||||
|
||||
@@ -1272,7 +1267,7 @@ function __phpenv_get_tap_versions
|
||||
continue
|
||||
end
|
||||
|
||||
if test "$phpenv_clean_name" = "php"
|
||||
if test "$phpenv_clean_name" = php
|
||||
set -a phpenv_versions "$phpenv_latest_version (latest)"
|
||||
else if echo $phpenv_clean_name | grep -qE '^php@[0-9]+\.[0-9]+$'
|
||||
set -l phpenv_version (echo $phpenv_clean_name | sed 's/php@//')
|
||||
@@ -1310,7 +1305,7 @@ function __phpenv_doctor
|
||||
|
||||
# Show provider information
|
||||
set -l provider (__phpenv_get_provider)
|
||||
set -l provider_source "auto-detected"
|
||||
set -l provider_source auto-detected
|
||||
if set -q PHPENV_PROVIDER; and test -n "$PHPENV_PROVIDER"
|
||||
set provider_source "PHPENV_PROVIDER override"
|
||||
end
|
||||
@@ -1429,7 +1424,7 @@ function __phpenv_config_get -a phpenv_key
|
||||
end
|
||||
end
|
||||
|
||||
if test "$argv[2]" = "--verbose"
|
||||
if test "$argv[2]" = --verbose
|
||||
if test -n "$phpenv_value"
|
||||
echo "$phpenv_key = $phpenv_value (from $phpenv_source)"
|
||||
else
|
||||
@@ -1581,19 +1576,18 @@ function __phpenv_get_tap_formulas -a tap_name
|
||||
return 1
|
||||
end
|
||||
|
||||
brew tap-info $tap_name --json 2>/dev/null | \
|
||||
jq -r '.[]|(.formula_names[]?)' 2>/dev/null
|
||||
brew tap-info $tap_name --json 2>/dev/null | jq -r '.[]|(.formula_names[]?)' 2>/dev/null
|
||||
end
|
||||
|
||||
function __phpenv_get_available_extensions
|
||||
__phpenv_get_tap_formulas "shivammathur/extensions"
|
||||
__phpenv_get_tap_formulas shivammathur/extensions
|
||||
end
|
||||
|
||||
function __phpenv_extension_available -a phpenv_extension phpenv_version
|
||||
set -l phpenv_available_extensions (__phpenv_get_available_extensions)
|
||||
|
||||
if test -z "$phpenv_available_extensions"
|
||||
return 0 # Assume available if can't check
|
||||
return 0 # Assume available if can't check
|
||||
end
|
||||
|
||||
for phpenv_ext_formula in $phpenv_available_extensions
|
||||
@@ -1695,7 +1689,7 @@ function __phpenv_auto_switch --on-variable PWD
|
||||
end
|
||||
|
||||
set -l phpenv_auto_switch (__phpenv_config_get auto-switch)
|
||||
if test "$phpenv_auto_switch" = "false"
|
||||
if test "$phpenv_auto_switch" = false
|
||||
return 0
|
||||
end
|
||||
|
||||
@@ -1718,7 +1712,7 @@ function __phpenv_auto_switch --on-variable PWD
|
||||
set -g PHPENV_LAST_SWITCH_TIME $phpenv_current_time
|
||||
else
|
||||
set -l phpenv_auto_install (__phpenv_config_get auto-install)
|
||||
if test "$phpenv_auto_install" = "true"
|
||||
if test "$phpenv_auto_install" = true
|
||||
echo "Auto-installing PHP $phpenv_new_version..."
|
||||
if phpenv install "$phpenv_new_version"
|
||||
set -g PHPENV_LAST_SWITCH_TIME $phpenv_current_time
|
||||
@@ -1771,7 +1765,7 @@ function __phpenv_help
|
||||
end
|
||||
|
||||
function __phpenv_validate_boolean -a phpenv_value
|
||||
test "$phpenv_value" = "true" -o "$phpenv_value" = "false"
|
||||
test "$phpenv_value" = true -o "$phpenv_value" = false
|
||||
end
|
||||
|
||||
function __phpenv_validate_version -a phpenv_version
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
---
|
||||
github.com:
|
||||
git_protocol: https
|
||||
users:
|
||||
ivuorinen:
|
||||
user: ivuorinen
|
||||
git_protocol: ssh
|
||||
users:
|
||||
ivuorinen:
|
||||
user: ivuorinen
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
# shellcheck shell=bash
|
||||
|
||||
# Defaults
|
||||
[[ -z "$DOTFILES" ]] && export DOTFILES="$HOME/.dotfiles"
|
||||
[[ -z "${DOTFILES:-}" ]] && export DOTFILES="$HOME/.dotfiles"
|
||||
DOTFILES_CURRENT_SHELL=$(basename "$SHELL")
|
||||
export DOTFILES_CURRENT_SHELL
|
||||
|
||||
@@ -76,9 +76,9 @@ x-path-prepend "$DOTFILES/local/bin"
|
||||
x-path-prepend "$XDG_BIN_HOME"
|
||||
|
||||
# Custom completion paths
|
||||
[[ -z "$ZSH_CUSTOM_COMPLETION_PATH" ]] && export ZSH_CUSTOM_COMPLETION_PATH="$XDG_CONFIG_HOME/zsh/completion"
|
||||
[[ -z "${ZSH_CUSTOM_COMPLETION_PATH:-}" ]] && export ZSH_CUSTOM_COMPLETION_PATH="$XDG_CONFIG_HOME/zsh/completion"
|
||||
x-dc "$ZSH_CUSTOM_COMPLETION_PATH"
|
||||
export FPATH="$ZSH_CUSTOM_COMPLETION_PATH:$FPATH"
|
||||
export FPATH="$ZSH_CUSTOM_COMPLETION_PATH:${FPATH:-}"
|
||||
|
||||
if ! declare -f msg > /dev/null; then
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
|
||||
@@ -10,7 +10,7 @@ config.color_scheme_dirs = {
|
||||
}
|
||||
|
||||
-- Font and font size
|
||||
config.font_size = 16
|
||||
config.font_size = 12
|
||||
config.font = wezterm.font_with_fallback {
|
||||
{
|
||||
family = 'Monaspace Argon NF',
|
||||
@@ -48,9 +48,9 @@ config.window_background_opacity = 0.97
|
||||
config.window_decorations = 'RESIZE'
|
||||
config.macos_window_background_blur = 10
|
||||
config.window_padding = {
|
||||
left = 5,
|
||||
right = 5,
|
||||
top = 5,
|
||||
left = 10,
|
||||
right = 10,
|
||||
top = 10,
|
||||
bottom = 5,
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
: "${DOTFILES:=$HOME/.dotfiles}"
|
||||
: "${BREWFILE:=$DOTFILES/config/homebrew/Brewfile}"
|
||||
: "${HOSTFILES:=$DOTFILES/hosts}"
|
||||
export DOTFILES BREWFILE HOSTFILES
|
||||
|
||||
SCRIPT=$(basename "$0")
|
||||
|
||||
@@ -71,33 +72,57 @@ section_install()
|
||||
|
||||
MENU=(
|
||||
"all:Installs everything in the correct order"
|
||||
"apt-packages:Install apt packages (Debian/Ubuntu)"
|
||||
"cargo:Install rust/cargo packages"
|
||||
"cheat-databases:Install cheat external cheatsheet databases"
|
||||
"composer:Install composer"
|
||||
"dnf-packages:Install dnf packages (Fedora/RHEL)"
|
||||
"fonts:Install programming fonts"
|
||||
"gh:Install GitHub CLI Extensions"
|
||||
"git-crypt:Install git-crypt from source"
|
||||
"go:Install Go Packages"
|
||||
"imagick:Install ImageMagick CLI"
|
||||
"macos:Setup nice macOS defaults"
|
||||
"npm-packages:Install NPM Packages"
|
||||
"ntfy:Install ntfy notification tool"
|
||||
"nvm-latest:Install latest lts node using nvm"
|
||||
"nvm:Install Node Version Manager (nvm)"
|
||||
"python-packages:Install Python packages via uv"
|
||||
"xcode-cli-tools:Install Xcode CLI tools (macOS)"
|
||||
"z:Install z"
|
||||
)
|
||||
|
||||
case "$1" in
|
||||
all)
|
||||
msgr msg "Starting to install all and reloading configurations..."
|
||||
$0 install macos
|
||||
$0 install fonts
|
||||
|
||||
# Tier 0: Platform foundations (OS packages, build tools)
|
||||
[[ "$(uname)" == "Darwin" ]] && $0 install macos
|
||||
[[ "$(uname)" == "Darwin" ]] && $0 install xcode-cli-tools
|
||||
command -v apt &> /dev/null && $0 install apt-packages
|
||||
command -v dnf &> /dev/null && $0 install dnf-packages
|
||||
|
||||
# Tier 1: Package managers & fonts
|
||||
$0 brew install
|
||||
$0 install fonts
|
||||
|
||||
# Tier 2: Language packages (depend on runtimes from Tier 1)
|
||||
$0 install cargo
|
||||
$0 install go
|
||||
$0 install composer
|
||||
$0 install cheat-databases
|
||||
$0 install nvm
|
||||
$0 install npm-packages
|
||||
$0 install python-packages
|
||||
|
||||
# Tier 3: Tool-dependent installers
|
||||
$0 install cheat-databases
|
||||
$0 install gh
|
||||
$0 install git-crypt
|
||||
$0 install ntfy
|
||||
|
||||
# Tier 4: Independent utilities
|
||||
$0 install z
|
||||
|
||||
msgr msg "Reloading configurations again..."
|
||||
# shellcheck disable=SC1091
|
||||
source "$DOTFILES/config/shared.sh"
|
||||
@@ -112,7 +137,7 @@ section_install()
|
||||
|
||||
cheat-databases)
|
||||
msgr run "Installing cheat databases..."
|
||||
for database in "$DOTFILES"/scripts/install-cheat-*; do
|
||||
for database in "$DOTFILES"/scripts/install-cheat-*.sh; do
|
||||
bash "$database" \
|
||||
&& msgr run_done "Cheat: $database run"
|
||||
done
|
||||
@@ -184,6 +209,42 @@ section_install()
|
||||
&& msgr yay "NPM Packages have been installed!"
|
||||
;;
|
||||
|
||||
apt-packages)
|
||||
msgr run "Installing apt packages..."
|
||||
bash "$DOTFILES/scripts/install-apt-packages.sh" \
|
||||
&& msgr yay "apt packages installed!"
|
||||
;;
|
||||
|
||||
dnf-packages)
|
||||
msgr run "Installing dnf packages..."
|
||||
bash "$DOTFILES/scripts/install-dnf-packages.sh" \
|
||||
&& msgr yay "dnf packages installed!"
|
||||
;;
|
||||
|
||||
git-crypt)
|
||||
msgr run "Installing git-crypt..."
|
||||
bash "$DOTFILES/scripts/install-git-crypt.sh" \
|
||||
&& msgr yay "git-crypt installed!"
|
||||
;;
|
||||
|
||||
ntfy)
|
||||
msgr run "Installing ntfy..."
|
||||
bash "$DOTFILES/scripts/install-ntfy.sh" \
|
||||
&& msgr yay "ntfy installed!"
|
||||
;;
|
||||
|
||||
python-packages)
|
||||
msgr run "Installing Python packages..."
|
||||
bash "$DOTFILES/scripts/install-python-packages.sh" \
|
||||
&& msgr yay "Python packages installed!"
|
||||
;;
|
||||
|
||||
xcode-cli-tools)
|
||||
msgr run "Installing Xcode CLI tools..."
|
||||
bash "$DOTFILES/scripts/install-xcode-cli-tools.sh" \
|
||||
&& msgr yay "Xcode CLI tools installed!"
|
||||
;;
|
||||
|
||||
z)
|
||||
msgr run "Installing z..."
|
||||
bash "$DOTFILES/scripts/install-z.sh" \
|
||||
|
||||
13
package.json
13
package.json
@@ -34,13 +34,16 @@
|
||||
},
|
||||
"homepage": "https://github.com/ivuorinen/dotfiles#readme",
|
||||
"devDependencies": {
|
||||
"@biomejs/biome": "^2.3.1",
|
||||
"@types/node": "^24.0.1",
|
||||
"bats": "^1.12.0",
|
||||
"editorconfig-checker": "^6.1.0",
|
||||
"@biomejs/biome": "^2.4.4",
|
||||
"@types/node": "^25.3.2",
|
||||
"bats": "^1.13.0",
|
||||
"editorconfig-checker": "^6.1.1",
|
||||
"markdown-table-formatter": "^1.7.0",
|
||||
"prettier": "^3.8.1",
|
||||
"typescript": "^5.8.3"
|
||||
"typescript": "^5.9.3"
|
||||
},
|
||||
"resolutions": {
|
||||
"minimatch": "^10.2.4"
|
||||
},
|
||||
"packageManager": "yarn@4.12.0"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
set -uo pipefail
|
||||
# @description Install cargo/rust packages.
|
||||
#
|
||||
# shellcheck source=shared.sh
|
||||
|
||||
133
tests/dfm.bats
133
tests/dfm.bats
@@ -5,8 +5,141 @@ setup()
|
||||
export DOTFILES="$PWD"
|
||||
}
|
||||
|
||||
# ── Group 1: Main help & routing ──────────────────────────────
|
||||
|
||||
@test "dfm help shows usage" {
|
||||
run bash local/bin/dfm help
|
||||
[ "$status" -eq 0 ]
|
||||
[[ "$output" == *"Usage: dfm"* ]]
|
||||
}
|
||||
|
||||
@test "dfm with no args shows full usage with all sections" {
|
||||
run bash local/bin/dfm
|
||||
[ "$status" -eq 0 ]
|
||||
[[ "$output" == *"Usage: dfm"* ]]
|
||||
[[ "$output" == *"dfm install"* ]]
|
||||
[[ "$output" == *"dfm check"* ]]
|
||||
[[ "$output" == *"dfm helpers"* ]]
|
||||
[[ "$output" == *"dfm docs"* ]]
|
||||
[[ "$output" == *"dfm dotfiles"* ]]
|
||||
[[ "$output" == *"dfm scripts"* ]]
|
||||
}
|
||||
|
||||
@test "dfm with invalid section shows usage" {
|
||||
run bash local/bin/dfm nonexistent
|
||||
[ "$status" -eq 0 ]
|
||||
[[ "$output" == *"Usage: dfm"* ]]
|
||||
}
|
||||
|
||||
# ── Group 2: Install menu completeness ────────────────────────
|
||||
|
||||
@test "dfm install menu shows all entries" {
|
||||
run bash local/bin/dfm install
|
||||
[ "$status" -eq 0 ]
|
||||
[[ "$output" == *"all"* ]]
|
||||
[[ "$output" == *"apt-packages"* ]]
|
||||
[[ "$output" == *"cargo"* ]]
|
||||
[[ "$output" == *"cheat-databases"* ]]
|
||||
[[ "$output" == *"composer"* ]]
|
||||
[[ "$output" == *"dnf-packages"* ]]
|
||||
[[ "$output" == *"fonts"* ]]
|
||||
[[ "$output" == *"gh"* ]]
|
||||
[[ "$output" == *"git-crypt"* ]]
|
||||
[[ "$output" == *"go"* ]]
|
||||
[[ "$output" == *"imagick"* ]]
|
||||
[[ "$output" == *"macos"* ]]
|
||||
[[ "$output" == *"npm-packages"* ]]
|
||||
[[ "$output" == *"ntfy"* ]]
|
||||
[[ "$output" == *"nvm-latest"* ]]
|
||||
[[ "$output" == *"nvm"* ]]
|
||||
[[ "$output" == *"python-packages"* ]]
|
||||
[[ "$output" == *"xcode-cli-tools"* ]]
|
||||
[[ "$output" == *"z"* ]]
|
||||
}
|
||||
|
||||
@test "dfm install with invalid subcommand shows menu" {
|
||||
run bash local/bin/dfm install nonexistent
|
||||
[ "$status" -eq 0 ]
|
||||
[[ "$output" == *"dfm install"* ]]
|
||||
}
|
||||
|
||||
# ── Group 3: Other section menus ──────────────────────────────
|
||||
|
||||
@test "dfm helpers menu shows entries" {
|
||||
run bash local/bin/dfm helpers
|
||||
[ "$status" -eq 0 ]
|
||||
[[ "$output" == *"aliases"* ]]
|
||||
[[ "$output" == *"colors"* ]]
|
||||
[[ "$output" == *"path"* ]]
|
||||
[[ "$output" == *"env"* ]]
|
||||
}
|
||||
|
||||
@test "dfm docs menu shows entries" {
|
||||
run bash local/bin/dfm docs
|
||||
[ "$status" -eq 0 ]
|
||||
[[ "$output" == *"all"* ]]
|
||||
[[ "$output" == *"tmux"* ]]
|
||||
[[ "$output" == *"nvim"* ]]
|
||||
[[ "$output" == *"wezterm"* ]]
|
||||
}
|
||||
|
||||
@test "dfm dotfiles menu shows entries" {
|
||||
run bash local/bin/dfm dotfiles
|
||||
[ "$status" -eq 0 ]
|
||||
[[ "$output" == *"fmt"* ]]
|
||||
[[ "$output" == *"shfmt"* ]]
|
||||
[[ "$output" == *"yamlfmt"* ]]
|
||||
}
|
||||
|
||||
@test "dfm check menu shows entries" {
|
||||
run bash local/bin/dfm check
|
||||
[ "$status" -eq 0 ]
|
||||
[[ "$output" == *"arch"* ]]
|
||||
[[ "$output" == *"host"* ]]
|
||||
}
|
||||
|
||||
@test "dfm scripts menu lists install scripts" {
|
||||
run bash local/bin/dfm scripts
|
||||
[ "$status" -eq 0 ]
|
||||
[[ "$output" == *"cargo-packages"* ]]
|
||||
[[ "$output" == *"fonts"* ]]
|
||||
[[ "$output" == *"z"* ]]
|
||||
}
|
||||
|
||||
@test "dfm tests menu shows entries" {
|
||||
run bash local/bin/dfm tests
|
||||
[ "$status" -eq 0 ]
|
||||
[[ "$output" == *"msgr"* ]]
|
||||
[[ "$output" == *"params"* ]]
|
||||
}
|
||||
|
||||
# ── Group 4: Check commands ───────────────────────────────────
|
||||
|
||||
@test "dfm check arch returns current arch" {
|
||||
run bash local/bin/dfm check arch
|
||||
[ "$status" -eq 0 ]
|
||||
[ -n "$output" ]
|
||||
}
|
||||
|
||||
@test "dfm check arch with matching value exits 0" {
|
||||
local current_arch
|
||||
current_arch="$(uname)"
|
||||
run bash local/bin/dfm check arch "$current_arch"
|
||||
[ "$status" -eq 0 ]
|
||||
}
|
||||
|
||||
@test "dfm check arch with non-matching value exits 1" {
|
||||
run bash local/bin/dfm check arch FakeArch
|
||||
[ "$status" -eq 1 ]
|
||||
}
|
||||
|
||||
@test "dfm check host returns current hostname" {
|
||||
run bash local/bin/dfm check host
|
||||
[ "$status" -eq 0 ]
|
||||
[ -n "$output" ]
|
||||
}
|
||||
|
||||
@test "dfm check host with non-matching value exits 1" {
|
||||
run bash local/bin/dfm check host fakehostname
|
||||
[ "$status" -eq 1 ]
|
||||
}
|
||||
|
||||
178
yarn.lock
178
yarn.lock
@@ -5,18 +5,18 @@ __metadata:
|
||||
version: 8
|
||||
cacheKey: 10c0
|
||||
|
||||
"@biomejs/biome@npm:^2.3.1":
|
||||
version: 2.3.11
|
||||
resolution: "@biomejs/biome@npm:2.3.11"
|
||||
"@biomejs/biome@npm:^2.4.4":
|
||||
version: 2.4.4
|
||||
resolution: "@biomejs/biome@npm:2.4.4"
|
||||
dependencies:
|
||||
"@biomejs/cli-darwin-arm64": "npm:2.3.11"
|
||||
"@biomejs/cli-darwin-x64": "npm:2.3.11"
|
||||
"@biomejs/cli-linux-arm64": "npm:2.3.11"
|
||||
"@biomejs/cli-linux-arm64-musl": "npm:2.3.11"
|
||||
"@biomejs/cli-linux-x64": "npm:2.3.11"
|
||||
"@biomejs/cli-linux-x64-musl": "npm:2.3.11"
|
||||
"@biomejs/cli-win32-arm64": "npm:2.3.11"
|
||||
"@biomejs/cli-win32-x64": "npm:2.3.11"
|
||||
"@biomejs/cli-darwin-arm64": "npm:2.4.4"
|
||||
"@biomejs/cli-darwin-x64": "npm:2.4.4"
|
||||
"@biomejs/cli-linux-arm64": "npm:2.4.4"
|
||||
"@biomejs/cli-linux-arm64-musl": "npm:2.4.4"
|
||||
"@biomejs/cli-linux-x64": "npm:2.4.4"
|
||||
"@biomejs/cli-linux-x64-musl": "npm:2.4.4"
|
||||
"@biomejs/cli-win32-arm64": "npm:2.4.4"
|
||||
"@biomejs/cli-win32-x64": "npm:2.4.4"
|
||||
dependenciesMeta:
|
||||
"@biomejs/cli-darwin-arm64":
|
||||
optional: true
|
||||
@@ -36,92 +36,83 @@ __metadata:
|
||||
optional: true
|
||||
bin:
|
||||
biome: bin/biome
|
||||
checksum: 10c0/b9764070c3d1583466a8861d37dc480c18103f7bb52115db0f265a38e6343d69792c9beea094e0b3db0905cb365b9a82ad2a0f3f05b7f04873a8f9b444263140
|
||||
checksum: 10c0/f2b7620d39caeeb9e0ed070dd1065cc2378626c7fa6ecda3db84b64df4c94fb4909407726044e28c83e8a95121ad389498cc3f0e5be600a421d906ca705b821c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@biomejs/cli-darwin-arm64@npm:2.3.11":
|
||||
version: 2.3.11
|
||||
resolution: "@biomejs/cli-darwin-arm64@npm:2.3.11"
|
||||
"@biomejs/cli-darwin-arm64@npm:2.4.4":
|
||||
version: 2.4.4
|
||||
resolution: "@biomejs/cli-darwin-arm64@npm:2.4.4"
|
||||
conditions: os=darwin & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@biomejs/cli-darwin-x64@npm:2.3.11":
|
||||
version: 2.3.11
|
||||
resolution: "@biomejs/cli-darwin-x64@npm:2.3.11"
|
||||
"@biomejs/cli-darwin-x64@npm:2.4.4":
|
||||
version: 2.4.4
|
||||
resolution: "@biomejs/cli-darwin-x64@npm:2.4.4"
|
||||
conditions: os=darwin & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@biomejs/cli-linux-arm64-musl@npm:2.3.11":
|
||||
version: 2.3.11
|
||||
resolution: "@biomejs/cli-linux-arm64-musl@npm:2.3.11"
|
||||
"@biomejs/cli-linux-arm64-musl@npm:2.4.4":
|
||||
version: 2.4.4
|
||||
resolution: "@biomejs/cli-linux-arm64-musl@npm:2.4.4"
|
||||
conditions: os=linux & cpu=arm64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@biomejs/cli-linux-arm64@npm:2.3.11":
|
||||
version: 2.3.11
|
||||
resolution: "@biomejs/cli-linux-arm64@npm:2.3.11"
|
||||
"@biomejs/cli-linux-arm64@npm:2.4.4":
|
||||
version: 2.4.4
|
||||
resolution: "@biomejs/cli-linux-arm64@npm:2.4.4"
|
||||
conditions: os=linux & cpu=arm64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@biomejs/cli-linux-x64-musl@npm:2.3.11":
|
||||
version: 2.3.11
|
||||
resolution: "@biomejs/cli-linux-x64-musl@npm:2.3.11"
|
||||
"@biomejs/cli-linux-x64-musl@npm:2.4.4":
|
||||
version: 2.4.4
|
||||
resolution: "@biomejs/cli-linux-x64-musl@npm:2.4.4"
|
||||
conditions: os=linux & cpu=x64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@biomejs/cli-linux-x64@npm:2.3.11":
|
||||
version: 2.3.11
|
||||
resolution: "@biomejs/cli-linux-x64@npm:2.3.11"
|
||||
"@biomejs/cli-linux-x64@npm:2.4.4":
|
||||
version: 2.4.4
|
||||
resolution: "@biomejs/cli-linux-x64@npm:2.4.4"
|
||||
conditions: os=linux & cpu=x64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@biomejs/cli-win32-arm64@npm:2.3.11":
|
||||
version: 2.3.11
|
||||
resolution: "@biomejs/cli-win32-arm64@npm:2.3.11"
|
||||
"@biomejs/cli-win32-arm64@npm:2.4.4":
|
||||
version: 2.4.4
|
||||
resolution: "@biomejs/cli-win32-arm64@npm:2.4.4"
|
||||
conditions: os=win32 & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@biomejs/cli-win32-x64@npm:2.3.11":
|
||||
version: 2.3.11
|
||||
resolution: "@biomejs/cli-win32-x64@npm:2.3.11"
|
||||
"@biomejs/cli-win32-x64@npm:2.4.4":
|
||||
version: 2.4.4
|
||||
resolution: "@biomejs/cli-win32-x64@npm:2.4.4"
|
||||
conditions: os=win32 & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@isaacs/balanced-match@npm:^4.0.1":
|
||||
version: 4.0.1
|
||||
resolution: "@isaacs/balanced-match@npm:4.0.1"
|
||||
checksum: 10c0/7da011805b259ec5c955f01cee903da72ad97c5e6f01ca96197267d3f33103d5b2f8a1af192140f3aa64526c593c8d098ae366c2b11f7f17645d12387c2fd420
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@isaacs/brace-expansion@npm:^5.0.1":
|
||||
version: 5.0.1
|
||||
resolution: "@isaacs/brace-expansion@npm:5.0.1"
|
||||
"@types/node@npm:^25.3.2":
|
||||
version: 25.3.2
|
||||
resolution: "@types/node@npm:25.3.2"
|
||||
dependencies:
|
||||
"@isaacs/balanced-match": "npm:^4.0.1"
|
||||
checksum: 10c0/e5d67c7bbf1f17b88132a35bc638af306d48acbb72810d48fa6e6edd8ab375854773108e8bf70f021f7ef6a8273455a6d1f0c3b5aa2aff06ce7894049ab77fb8
|
||||
undici-types: "npm:~7.18.0"
|
||||
checksum: 10c0/946c8758668762d3c3b475281b420e580d0ce828c6847534a822b92be791e23e5879b53001ea928e5352dec8908082d854b8076b7bcfc69549e23ad54b1f98ab
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/node@npm:^24.0.1":
|
||||
version: 24.10.9
|
||||
resolution: "@types/node@npm:24.10.9"
|
||||
dependencies:
|
||||
undici-types: "npm:~7.16.0"
|
||||
checksum: 10c0/e9e436fcd2136bddb1bbe3271a89f4653910bcf6ee8047c4117f544c7905a106c039e2720ee48f28505ef2560e22fb9ead719f28bf5e075fdde0c1120e38e3b2
|
||||
"balanced-match@npm:^4.0.2":
|
||||
version: 4.0.4
|
||||
resolution: "balanced-match@npm:4.0.4"
|
||||
checksum: 10c0/07e86102a3eb2ee2a6a1a89164f29d0dbaebd28f2ca3f5ca786f36b8b23d9e417eb3be45a4acf754f837be5ac0a2317de90d3fcb7f4f4dc95720a1f36b26a17b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"bats@npm:^1.12.0":
|
||||
"bats@npm:^1.13.0":
|
||||
version: 1.13.0
|
||||
resolution: "bats@npm:1.13.0"
|
||||
bin:
|
||||
@@ -130,6 +121,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"brace-expansion@npm:^5.0.2":
|
||||
version: 5.0.3
|
||||
resolution: "brace-expansion@npm:5.0.3"
|
||||
dependencies:
|
||||
balanced-match: "npm:^4.0.2"
|
||||
checksum: 10c0/e474d300e581ec56851b3863ff1cf18573170c6d06deb199ccbd03b2119c36975f6ce2abc7b770f5bebddc1ab022661a9fea9b4d56f33315d7bef54d8793869e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"debug@npm:^4.3.4":
|
||||
version: 4.4.3
|
||||
resolution: "debug@npm:4.4.3"
|
||||
@@ -149,7 +149,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"editorconfig-checker@npm:^6.1.0":
|
||||
"editorconfig-checker@npm:^6.1.1":
|
||||
version: 6.1.1
|
||||
resolution: "editorconfig-checker@npm:6.1.1"
|
||||
bin:
|
||||
@@ -185,13 +185,13 @@ __metadata:
|
||||
linkType: hard
|
||||
|
||||
"glob@npm:^13.0.0":
|
||||
version: 13.0.1
|
||||
resolution: "glob@npm:13.0.1"
|
||||
version: 13.0.6
|
||||
resolution: "glob@npm:13.0.6"
|
||||
dependencies:
|
||||
minimatch: "npm:^10.1.2"
|
||||
minipass: "npm:^7.1.2"
|
||||
path-scurry: "npm:^2.0.0"
|
||||
checksum: 10c0/af7b863dec8dff74f61d7d6e53104e1f6bbdd482157a196cade8ed857481e876ec35181b38a059b2a7b93ea3b08248f4ff0792fef6dc91814fd5097a716f48e4
|
||||
minimatch: "npm:^10.2.2"
|
||||
minipass: "npm:^7.1.3"
|
||||
path-scurry: "npm:^2.0.2"
|
||||
checksum: 10c0/269c236f11a9b50357fe7a8c6aadac667e01deb5242b19c84975628f05f4438d8ee1354bb62c5d6c10f37fd59911b54d7799730633a2786660d8c69f1d18120a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -206,13 +206,13 @@ __metadata:
|
||||
version: 0.0.0-use.local
|
||||
resolution: "ivuorinen-dotfiles@workspace:."
|
||||
dependencies:
|
||||
"@biomejs/biome": "npm:^2.3.1"
|
||||
"@types/node": "npm:^24.0.1"
|
||||
bats: "npm:^1.12.0"
|
||||
editorconfig-checker: "npm:^6.1.0"
|
||||
"@biomejs/biome": "npm:^2.4.4"
|
||||
"@types/node": "npm:^25.3.2"
|
||||
bats: "npm:^1.13.0"
|
||||
editorconfig-checker: "npm:^6.1.1"
|
||||
markdown-table-formatter: "npm:^1.7.0"
|
||||
prettier: "npm:^3.8.1"
|
||||
typescript: "npm:^5.8.3"
|
||||
typescript: "npm:^5.9.3"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@@ -240,9 +240,9 @@ __metadata:
|
||||
linkType: hard
|
||||
|
||||
"lru-cache@npm:^11.0.0":
|
||||
version: 11.2.5
|
||||
resolution: "lru-cache@npm:11.2.5"
|
||||
checksum: 10c0/cc98958d25dddf1c8a8cbdc49588bd3b24450e8dfa78f32168fd188a20d4a0331c7406d0f3250c86a46619ee288056fd7a1195e8df56dc8a9592397f4fbd8e1d
|
||||
version: 11.2.6
|
||||
resolution: "lru-cache@npm:11.2.6"
|
||||
checksum: 10c0/73bbffb298760e71b2bfe8ebc16a311c6a60ceddbba919cfedfd8635c2d125fbfb5a39b71818200e67973b11f8d59c5a9e31d6f90722e340e90393663a66e5cd
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -271,19 +271,19 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"minimatch@npm:^10.1.2":
|
||||
version: 10.1.2
|
||||
resolution: "minimatch@npm:10.1.2"
|
||||
"minimatch@npm:^10.2.4":
|
||||
version: 10.2.4
|
||||
resolution: "minimatch@npm:10.2.4"
|
||||
dependencies:
|
||||
"@isaacs/brace-expansion": "npm:^5.0.1"
|
||||
checksum: 10c0/0cccef3622201703de6ecf9d772c0be1d5513dcc038ed9feb866c20cf798243e678ac35605dac3f1a054650c28037486713fe9e9a34b184b9097959114daf086
|
||||
brace-expansion: "npm:^5.0.2"
|
||||
checksum: 10c0/35f3dfb7b99b51efd46afd378486889f590e7efb10e0f6a10ba6800428cf65c9a8dedb74427d0570b318d749b543dc4e85f06d46d2858bc8cac7e1eb49a95945
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"minipass@npm:^7.1.2":
|
||||
version: 7.1.2
|
||||
resolution: "minipass@npm:7.1.2"
|
||||
checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557
|
||||
"minipass@npm:^7.1.2, minipass@npm:^7.1.3":
|
||||
version: 7.1.3
|
||||
resolution: "minipass@npm:7.1.3"
|
||||
checksum: 10c0/539da88daca16533211ea5a9ee98dc62ff5742f531f54640dd34429e621955e91cc280a91a776026264b7f9f6735947629f920944e9c1558369e8bf22eb33fbb
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -308,13 +308,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"path-scurry@npm:^2.0.0":
|
||||
version: 2.0.1
|
||||
resolution: "path-scurry@npm:2.0.1"
|
||||
"path-scurry@npm:^2.0.2":
|
||||
version: 2.0.2
|
||||
resolution: "path-scurry@npm:2.0.2"
|
||||
dependencies:
|
||||
lru-cache: "npm:^11.0.0"
|
||||
minipass: "npm:^7.1.2"
|
||||
checksum: 10c0/2a16ed0e81fbc43513e245aa5763354e25e787dab0d539581a6c3f0f967461a159ed6236b2559de23aa5b88e7dc32b469b6c47568833dd142a4b24b4f5cd2620
|
||||
checksum: 10c0/b35ad37cf6557a87fd057121ce2be7695380c9138d93e87ae928609da259ea0a170fac6f3ef1eb3ece8a068e8b7f2f3adf5bb2374cf4d4a57fe484954fcc9482
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -343,7 +343,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"typescript@npm:^5.8.3":
|
||||
"typescript@npm:^5.9.3":
|
||||
version: 5.9.3
|
||||
resolution: "typescript@npm:5.9.3"
|
||||
bin:
|
||||
@@ -353,7 +353,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"typescript@patch:typescript@npm%3A^5.8.3#optional!builtin<compat/typescript>":
|
||||
"typescript@patch:typescript@npm%3A^5.9.3#optional!builtin<compat/typescript>":
|
||||
version: 5.9.3
|
||||
resolution: "typescript@patch:typescript@npm%3A5.9.3#optional!builtin<compat/typescript>::version=5.9.3&hash=5786d5"
|
||||
bin:
|
||||
@@ -363,10 +363,10 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"undici-types@npm:~7.16.0":
|
||||
version: 7.16.0
|
||||
resolution: "undici-types@npm:7.16.0"
|
||||
checksum: 10c0/3033e2f2b5c9f1504bdc5934646cb54e37ecaca0f9249c983f7b1fc2e87c6d18399ebb05dc7fd5419e02b2e915f734d872a65da2e3eeed1813951c427d33cc9a
|
||||
"undici-types@npm:~7.18.0":
|
||||
version: 7.18.2
|
||||
resolution: "undici-types@npm:7.18.2"
|
||||
checksum: 10c0/85a79189113a238959d7a647368e4f7c5559c3a404ebdb8fc4488145ce9426fcd82252a844a302798dfc0e37e6fb178ff481ed03bc4caf634c5757d9ef43521d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
||||
Reference in New Issue
Block a user