mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-03-15 22:04:52 +00:00
Compare commits
32 Commits
26.2.17
...
renovate/s
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
daa1253d9c | ||
| 8a5c9f9089 | |||
|
|
2410f343c2 | ||
|
|
d120839830 | ||
|
|
5662d09202 | ||
|
|
076050ad58 | ||
|
|
313915e55c | ||
|
|
e490a735c8 | ||
|
|
5fe82b2898 | ||
|
|
6621bcb470 | ||
| 3b6ace12e9 | |||
|
|
f92e4a606f | ||
| fae7a8f13f | |||
| eaa7680671 | |||
| 070c94a244 | |||
| 70cf8ccf6d | |||
| 63faf4c4bf | |||
|
|
d81ff6dabb | ||
| ed6bef5c7e | |||
| 46b9e3ebeb | |||
| f26303a0ff | |||
| 8379135c81 | |||
| 73d0d6b35f | |||
| 6a839eea56 | |||
| 28c8332058 | |||
| b956119b98 | |||
|
|
0f82f8e65b | ||
|
|
f1277ddf99 | ||
|
|
c834eab42b | ||
|
|
f93deb8bca | ||
|
|
248f57b914 | ||
|
|
86e4f9618c |
14
.claude/agents/code-reviewer.md
Normal file
14
.claude/agents/code-reviewer.md
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: code-reviewer
|
||||
description: Reviews shell/fish/lua changes for correctness and style
|
||||
tools: [Read, Grep, Glob, Bash]
|
||||
---
|
||||
|
||||
Review the changed files for:
|
||||
|
||||
1. **Shell scripts**: POSIX compliance for /bin/sh scripts, proper quoting, shellcheck issues
|
||||
2. **Fish files**: fish syntax correctness, consistent function patterns
|
||||
3. **Lua files**: stylua compliance, Neovim API usage patterns
|
||||
4. **All**: EditorConfig compliance (2-space indent, LF endings)
|
||||
|
||||
Report only high-confidence issues. Skip vendor files (fzf-tmux).
|
||||
@@ -18,6 +18,14 @@
|
||||
{
|
||||
"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"
|
||||
},
|
||||
{
|
||||
"type": "command",
|
||||
"command": "fp=$(cat | jq -r '.tool_input.file_path // empty') && [ -n \"$fp\" ] && [ -f \"$fp\" ] && case \"$fp\" in *.lua) command -v stylua > /dev/null && stylua \"$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)
|
||||
@@ -1,11 +1,16 @@
|
||||
---
|
||||
name: shell-validate
|
||||
description: Validate shell scripts after editing. Apply when writing or modifying any shell script in local/bin/ or scripts/.
|
||||
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:
|
||||
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
|
||||
|
||||
@@ -28,7 +33,9 @@ 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.
|
||||
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)
|
||||
|
||||
|
||||
38
.claude/skills/yaml-validate/SKILL.md
Normal file
38
.claude/skills/yaml-validate/SKILL.md
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
name: yaml-validate
|
||||
description: >-
|
||||
Validate YAML files after editing.
|
||||
Apply when writing or modifying any .yml or .yaml file.
|
||||
user-invocable: false
|
||||
allowed-tools: Bash, Read
|
||||
---
|
||||
|
||||
After editing any YAML file, validate it:
|
||||
|
||||
## 1. Syntax check
|
||||
|
||||
Run yamllint on the file:
|
||||
|
||||
```bash
|
||||
yamllint <file>
|
||||
```
|
||||
|
||||
If yamllint is not available, fall back to:
|
||||
|
||||
```bash
|
||||
python3 -c "import yaml; yaml.safe_load(open('<file>'))"
|
||||
```
|
||||
|
||||
## 2. GitHub Actions workflows
|
||||
|
||||
If the file is under `.github/workflows/`, also run:
|
||||
|
||||
```bash
|
||||
actionlint <file>
|
||||
```
|
||||
|
||||
If actionlint is not available, skip silently.
|
||||
|
||||
## Files to skip
|
||||
|
||||
- `config/gh/hosts.yml` — managed by `gh` CLI, not hand-edited
|
||||
2
.github/workflows/changelog.yml
vendored
2
.github/workflows/changelog.yml
vendored
@@ -24,7 +24,7 @@ jobs:
|
||||
|
||||
- name: Create changelog text
|
||||
id: changelog
|
||||
uses: loopwerk/tag-changelog@941366edb8920e2071eae0449031830984b9f26e # v1.3.0
|
||||
uses: loopwerk/tag-changelog@8dd150d55fbf1fe93e0ea00a29a6153aaeb81912 # v1.5.0
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
config_file: .github/tag-changelog-config.js
|
||||
|
||||
4
.github/workflows/linters.yml
vendored
4
.github/workflows/linters.yml
vendored
@@ -5,7 +5,7 @@ name: Lint Code Base
|
||||
# yamllint disable-line
|
||||
on:
|
||||
pull_request:
|
||||
branches: [master, main]
|
||||
branches: [main]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
@@ -36,4 +36,4 @@ jobs:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Run PR Lint
|
||||
uses: ivuorinen/actions/pr-lint@c40f80e9c569f700ce5275766dcfeba99c168899 # v2026.02.10
|
||||
uses: ivuorinen/actions/pr-lint@7f6a23b59316795c4b3cb3b3b28dd53e53655a33 # v2026.03.11
|
||||
|
||||
4
.github/workflows/new-release.yml
vendored
4
.github/workflows/new-release.yml
vendored
@@ -35,14 +35,14 @@ jobs:
|
||||
- name: Create changelog text
|
||||
if: steps.daily-version.outputs.created
|
||||
id: changelog
|
||||
uses: loopwerk/tag-changelog@941366edb8920e2071eae0449031830984b9f26e # v1.3.0
|
||||
uses: loopwerk/tag-changelog@8dd150d55fbf1fe93e0ea00a29a6153aaeb81912 # v1.5.0
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
config_file: .github/tag-changelog-config.js
|
||||
|
||||
- name: Create release
|
||||
if: steps.daily-version.outputs.created
|
||||
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2.5.0
|
||||
uses: softprops/action-gh-release@26e8ad27a09a225049a7075d7ec1caa2df6ff332 # v2.6.0
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
tag_name: ${{ steps.daily-version.outputs.version }}
|
||||
|
||||
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@c40f80e9c569f700ce5275766dcfeba99c168899 # v2026.02.10
|
||||
- uses: ivuorinen/actions/sync-labels@7f6a23b59316795c4b3cb3b3b28dd53e53655a33 # v2026.03.11
|
||||
|
||||
2
.github/workflows/update-submodules.yml
vendored
2
.github/workflows/update-submodules.yml
vendored
@@ -5,7 +5,7 @@ name: Update submodules
|
||||
on:
|
||||
schedule:
|
||||
# At 04:00 on Monday and Thursday.
|
||||
- cron: "0 4 * * 1"
|
||||
- cron: "0 4 * * 1,4"
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
|
||||
@@ -39,13 +39,13 @@ repos:
|
||||
hooks:
|
||||
- id: yamllint
|
||||
|
||||
- repo: https://github.com/pre-commit/mirrors-prettier
|
||||
rev: v4.0.0-alpha.8
|
||||
- repo: local
|
||||
hooks:
|
||||
- id: prettier
|
||||
name: Prettier (YAML)
|
||||
entry: yarn prettier --write
|
||||
language: system
|
||||
types_or: [yaml]
|
||||
additional_dependencies:
|
||||
- prettier@3.8.1
|
||||
|
||||
- repo: https://github.com/shellcheck-py/shellcheck-py
|
||||
rev: v0.11.0.1
|
||||
@@ -64,7 +64,7 @@ repos:
|
||||
- id: actionlint
|
||||
|
||||
- repo: https://github.com/JohnnyMorganz/StyLua
|
||||
rev: v2.3.1
|
||||
rev: v2.4.0
|
||||
hooks:
|
||||
- id: stylua # or stylua-system / stylua-github
|
||||
exclude: hammerspoon\.types\.lua$
|
||||
@@ -76,7 +76,7 @@ repos:
|
||||
- id: fish_indent
|
||||
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
rev: v0.15.1
|
||||
rev: v0.15.6
|
||||
hooks:
|
||||
- id: ruff-check
|
||||
args: [--fix]
|
||||
|
||||
@@ -15,4 +15,4 @@ config/zsh
|
||||
local/bin/antigen.zsh
|
||||
local/bin/asdf
|
||||
tools
|
||||
docs/plans
|
||||
config/gh/hosts.yml
|
||||
|
||||
55
AGENTS.md
55
AGENTS.md
@@ -1,55 +0,0 @@
|
||||
# Project guidelines
|
||||
|
||||
This repository contains configuration files and helper scripts for managing
|
||||
a development environment.
|
||||
Dotbot drives installation, and host-specific folders under `hosts/` contain extra configs.
|
||||
|
||||
## Setup
|
||||
|
||||
1. Run `yarn install` to fetch linting tools and the Bats test framework.
|
||||
2. Re-run `yarn install` whenever `package.json` changes.
|
||||
3. Yarn is the package manager of choice; avoid `npm` commands.
|
||||
|
||||
## Keeping the repository up to date
|
||||
|
||||
1. Update submodules with `git submodule update --remote --merge`.
|
||||
2. Pull the latest changes and run `./install`.
|
||||
|
||||
## Linting and tests
|
||||
|
||||
- Format files with:
|
||||
|
||||
```bash
|
||||
yarn fix:prettier
|
||||
yarn fix:markdown
|
||||
```
|
||||
|
||||
- Shell scripts must pass `shellcheck`.
|
||||
|
||||
```bash
|
||||
find . -path ./node_modules -prune -o -name '*.sh' -print0 | xargs -0 shellcheck
|
||||
```
|
||||
|
||||
- Ensure `.editorconfig` rules pass:
|
||||
|
||||
```bash
|
||||
tools/install-ec.sh
|
||||
ec
|
||||
```
|
||||
|
||||
- Execute tests with `yarn test` when code changes.
|
||||
|
||||
## Debugging lint issues
|
||||
|
||||
- `yarn lint:prettier` and `yarn lint:markdown` show formatting errors.
|
||||
- Ensure shell scripts have a shebang or `# shellcheck shell=bash` directive.
|
||||
- Consult `.shellcheckrc` for project specific checks.
|
||||
|
||||
Scripts rely on helpers in `config/shared.sh` so they run under Bash, Zsh and Fish by default.
|
||||
|
||||
## Commits and PRs
|
||||
|
||||
- Use Semantic Commit messages: `type(scope): summary`.
|
||||
- Keep PR titles in the same format.
|
||||
|
||||
<!-- vim: set ft=markdown spell spelllang=en_us cc=80 : -->
|
||||
20
CLAUDE.md
20
CLAUDE.md
@@ -50,12 +50,15 @@ yarn test # Run all tests in tests/
|
||||
|
||||
# Shell linting
|
||||
shellcheck <script> # Lint shell scripts
|
||||
|
||||
# Tooling maintenance
|
||||
npx @biomejs/biome migrate --write # Update biome schema version
|
||||
```
|
||||
|
||||
## Pre-commit Hooks
|
||||
|
||||
Configured in `.pre-commit-config.yaml`: shellcheck, shfmt, biome,
|
||||
yamllint, prettier, actionlint, stylua, fish_syntax/fish_indent.
|
||||
yamllint, prettier, actionlint, stylua, fish_syntax/fish_indent, ruff.
|
||||
Run `pre-commit run --all-files` to check everything.
|
||||
|
||||
## Commit Convention
|
||||
@@ -121,7 +124,7 @@ These are layered on top of the global config during installation.
|
||||
- **Lua** (neovim config): Formatted with stylua (`stylua.toml`),
|
||||
90-char line length.
|
||||
- **JSON/JS/TS/Markdown**: Formatted with Biome (`biome.json`),
|
||||
80-char width.
|
||||
80-char width (Markdown uses 120-char override).
|
||||
- **YAML**: Formatted with Prettier (`.prettierrc.json`),
|
||||
validated with yamllint (`.yamllint.yml`).
|
||||
|
||||
@@ -140,7 +143,9 @@ SC2174 (mkdir -p -m), SC2016 (single-quote expressions).
|
||||
- **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 80+ functions.
|
||||
(`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`).
|
||||
|
||||
@@ -149,8 +154,17 @@ SC2174 (mkdir -p -m), SC2016 (single-quote expressions).
|
||||
- **Hooks** (`.claude/settings.json`):
|
||||
- *PreToolUse*: Blocks edits to `fzf-tmux`, `yarn.lock`, `.yarn/`
|
||||
- *PostToolUse*: Auto-runs `shfmt` on shell scripts after Edit/Write
|
||||
- *PostToolUse*: Auto-runs `fish_indent` on `.fish` files after Edit/Write
|
||||
- *PostToolUse*: Auto-runs `stylua` on `.lua` files after Edit/Write
|
||||
- **Skills** (`.claude/skills/`):
|
||||
- `shell-validate`: Auto-validates shell scripts (syntax + shellcheck)
|
||||
- `fish-validate`: Auto-validates fish scripts (syntax + fish_indent)
|
||||
- `lua-format`: Auto-formats Lua files with stylua
|
||||
- `yaml-validate`: Auto-validates YAML files (yamllint + actionlint)
|
||||
- **Subagents** (`.claude/agents/`):
|
||||
- `code-reviewer`: Reviews shell/fish/lua changes for correctness and style
|
||||
- **MCP Servers**:
|
||||
- `context7`: Live documentation lookup for tools and libraries
|
||||
|
||||
## Package Manager
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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 \
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
function ___paths_plugin_set_colors
|
||||
if not set -q ___paths_plugin_colors
|
||||
set -Ux ___paths_plugin_colors 27e6ff 29e0ff 5cd8ff 77d0ff 8ac8ff 9cbfff afb5ff c5a7ff d99bfe ea8feb f684d5 fe7abd ff73a3 ff708a fa7070 ff708a ff73a3 fe7abd f684d5 ea8feb d99bfe c5a7ff afb5ff 9cbfff 8ac8ff 77d0ff 5cd8ff 29e0ff
|
||||
end
|
||||
return 0
|
||||
end
|
||||
|
||||
function _paths_uninstall --on-event paths_uninstall
|
||||
for i in ___paths_plugin_wrap_color ___paths_plugin_output ___paths_plugin_handle_found_item ___paths_plugin_handle_source ___paths_plugin_cycle_color
|
||||
functions -e $i
|
||||
end
|
||||
set -e ___paths_plugin_colors
|
||||
set -e ___paths_plugin_current_color
|
||||
end
|
||||
|
||||
function _paths_install --on-event _paths_install
|
||||
___paths_plugin_set_colors
|
||||
end
|
||||
|
||||
function _paths_update --on-event paths_update
|
||||
___paths_plugin_set_colors
|
||||
end
|
||||
@@ -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"
|
||||
@@ -2,6 +2,8 @@
|
||||
# │ fish/config.fish │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
|
||||
set -g fish_greeting
|
||||
|
||||
fish_config theme choose "Catppuccin Mocha"
|
||||
|
||||
test -e "$HOME/.config/fish/alias.fish" &&
|
||||
@@ -21,6 +23,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)
|
||||
@@ -32,7 +35,7 @@ if status is-interactive
|
||||
type -q zoxide; and zoxide init fish | source
|
||||
|
||||
# Start tmux if not already running and not in SSH
|
||||
#open-tmux # defined in functions/open-tmux.fish
|
||||
#.t # defined in functions/.t.fish
|
||||
end
|
||||
|
||||
# Added by LM Studio CLI (lms)
|
||||
@@ -47,3 +50,8 @@ fish_add_path $HOME/.opencode/bin
|
||||
# Added by OrbStack: command-line tools and integration
|
||||
# This won't be added again if you remove it.
|
||||
source ~/.orbstack/shell/init2.fish 2>/dev/null || :
|
||||
|
||||
# Warn if GITHUB_TOKEN is not set
|
||||
if status is-interactive; and not set -q GITHUB_TOKEN
|
||||
echo "Warning: GITHUB_TOKEN is not set" >&2
|
||||
end
|
||||
|
||||
@@ -17,8 +17,11 @@ 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"
|
||||
fish_add_path "$XDG_DATA_HOME/cargo/bin"
|
||||
|
||||
# NPM/NVM configuration
|
||||
set -q NVM_DIR; or set -x NVM_DIR "$XDG_DATA_HOME/nvm"
|
||||
@@ -125,7 +128,7 @@ set -q CARGO_BIN_HOME; or set -x CARGO_BIN_HOME "$XDG_BIN_HOME"
|
||||
set -q RUSTUP_HOME; or set -x RUSTUP_HOME "$XDG_DATA_HOME/rustup"
|
||||
set -x RUST_WITHOUT "clippy,docs,rls"
|
||||
fish_add_path "$CARGO_HOME/bin"
|
||||
fish_add_path "$XDG_SHARE_HOME/bob/nvim-bin"
|
||||
fish_add_path "$XDG_DATA_HOME/bob/nvim-bin"
|
||||
|
||||
# screen configuration
|
||||
set -q SCREENRC; or set -x SCREENRC "$XDG_CONFIG_HOME/misc/screenrc"
|
||||
|
||||
@@ -3,3 +3,4 @@ jethrokuan/z
|
||||
ivuorinen/phpenv.fish
|
||||
ilancosman/tide@v6
|
||||
catppuccin/fish
|
||||
edc/bass
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Description: Open tmux session if not already open
|
||||
# Dependencies: tmux
|
||||
# Usage: open-tmux
|
||||
function open-tmux --wraps='tmux attach-session -t main || tmux new-session -s main' --description 'open tmux session'
|
||||
# Usage: .t
|
||||
function .t --wraps='tmux attach-session -t main || tmux new-session -s main' --description 'open tmux session'
|
||||
# Check if not in an SSH session and not already in a tmux session
|
||||
if test -z "$SSH_TTY"; and not set -q TMUX
|
||||
command tmux attach-session -t main || command tmux new-session -s main
|
||||
@@ -1,175 +0,0 @@
|
||||
function ___paths_plugin_wrap_color
|
||||
set_color normal
|
||||
set_color "$argv[1]"
|
||||
echo -n (set_color "$argv[1]")"$argv[2..]"
|
||||
set_color normal
|
||||
end
|
||||
|
||||
# duplicated in conf.d
|
||||
function ___paths_plugin_set_colors
|
||||
if not set -q ___paths_plugin_colors
|
||||
set -Ux ___paths_plugin_colors 27e6ff 29e0ff 5cd8ff 77d0ff 8ac8ff 9cbfff afb5ff c5a7ff d99bfe ea8feb f684d5 fe7abd ff73a3 ff708a fa7070 ff708a ff73a3 fe7abd f684d5 ea8feb d99bfe c5a7ff afb5ff 9cbfff 8ac8ff 77d0ff 5cd8ff 29e0ff
|
||||
end
|
||||
return 0
|
||||
end
|
||||
|
||||
function ___paths_plugin_cycle_color
|
||||
if not set -q ___paths_plugin_current_color
|
||||
set -Ux ___paths_plugin_current_color 1
|
||||
else if test $___paths_plugin_current_color -gt (count $___paths_plugin_colors)
|
||||
set -Ux ___paths_plugin_current_color 1
|
||||
end
|
||||
echo $___paths_plugin_colors[$___paths_plugin_current_color]
|
||||
set -Ux ___paths_plugin_current_color (math $___paths_plugin_current_color + 1)
|
||||
end
|
||||
|
||||
function ___paths_plugin_handle_found_item -a testName outFlags
|
||||
set -f flags (string split -n ' ' -- "$outFlags")
|
||||
set -f options (fish_opt -s c -l clean)
|
||||
set -a options (fish_opt -s s -l single)
|
||||
set -a options (fish_opt -s k -l no-color)
|
||||
set -a options (fish_opt -s n -l inline)
|
||||
argparse $options -- $flags
|
||||
|
||||
set -f arrow "=>"
|
||||
# check if file exists
|
||||
if test -e "$testName"
|
||||
set -f nameOut (string trim -- "$testName")
|
||||
if not set -q _flag_c # is not clean
|
||||
if test -L "$testName" # is symlink
|
||||
set -f __linkname (readlink -f "$testName")
|
||||
set __linkname (string trim -- "$__linkname")
|
||||
set testName (string trim -- "$testName")
|
||||
if not set -q _flag_k # is color
|
||||
set nameOut (___paths_plugin_wrap_color (___paths_plugin_cycle_color) $testName) (___paths_plugin_wrap_color "yellow" "$arrow") (___paths_plugin_wrap_color (___paths_plugin_cycle_color) $__linkname)
|
||||
else # is color
|
||||
set nameOut (echo -n "$testName" "$arrow" "$__linkname")
|
||||
end
|
||||
else # is not symlink
|
||||
if not set -q _flag_k # is color
|
||||
set testName (string trim -- "$testName")
|
||||
set nameOut (___paths_plugin_wrap_color (___paths_plugin_cycle_color) "$testName")
|
||||
else
|
||||
set testName (string trim -- "$testName")
|
||||
set nameOut "$testName"
|
||||
end
|
||||
end
|
||||
|
||||
set nameOut (string trim -- "$nameOut")
|
||||
# do the tick
|
||||
if set -q _flag_k # is not color
|
||||
set nameOut "- $nameOut"
|
||||
else # is color
|
||||
set nameOut (___paths_plugin_wrap_color "yellow" "-") "$nameOut"
|
||||
end
|
||||
end
|
||||
set nameOut (string trim -- "$nameOut")
|
||||
echo -n $nameOut
|
||||
end
|
||||
end
|
||||
|
||||
function paths --description "Reveal the executable matches in shell paths or fish autoload."
|
||||
set -f options (fish_opt -s c -l clean)
|
||||
set -a options (fish_opt -s s -l single)
|
||||
set -a options (fish_opt -s k -l no-color)
|
||||
set -a options (fish_opt -s q -l quiet)
|
||||
set -a options (fish_opt -s n -l inline)
|
||||
argparse $options -- $argv
|
||||
|
||||
if test (count $argv) -lt 1
|
||||
echo "paths - executable matches in shell paths or fish autoload."
|
||||
and echo "usage: paths [-c|-s|-k] <name>"
|
||||
and echo -e "\t-c or --no-color: output without color"
|
||||
and echo -e "\t-s or --single: output without color or headers, the first result"
|
||||
and echo -e "\t-k or --clean: output without tick marks or headers"
|
||||
# and echo -e "\t-n or --inline: output without endline"
|
||||
and return 1
|
||||
end
|
||||
|
||||
set -f foundStatus 1
|
||||
set -f input (string trim -- $argv)
|
||||
# deprecated
|
||||
if set -q _flag_q
|
||||
set _flag_c True
|
||||
end
|
||||
|
||||
if set -q _flag_s
|
||||
set _flag_k True
|
||||
set _flag_c True
|
||||
end
|
||||
|
||||
set -f outFlags ''
|
||||
set -q _flag_n; and set -a outFlags -n
|
||||
set -q _flag_c; and set -a outFlags -c
|
||||
set -q _flag_k; and set -a outFlags -k
|
||||
set -q _flag_s; and set -a outFlags -s
|
||||
set outFlags (string split -n " " -- "$outFlags")
|
||||
___paths_plugin_set_colors
|
||||
# loop over list of path lists
|
||||
for pVar in VIRTUAL_ENV fisher_path fish_function_path fish_user_paths PATH
|
||||
set -e acc
|
||||
set -f acc ''
|
||||
set -e hit
|
||||
# see if variable is empty
|
||||
if test -z "$pVar"
|
||||
continue
|
||||
end
|
||||
set -f acc (begin
|
||||
for t in $$pVar
|
||||
for snit in "$t/$input.fish" "$t/$input"
|
||||
set -f found (___paths_plugin_handle_found_item "$snit" "$outFlags")
|
||||
set found (string trim -- "$found")
|
||||
if test -n "$found"
|
||||
set -f hit True
|
||||
echo "$found"
|
||||
if set -q _flag_s
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
if set -q _flag_s
|
||||
if set -q hit
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
# prepend source
|
||||
if not set -q _flag_c
|
||||
if set -q hit
|
||||
set pVar (string trim -- "$pVar")
|
||||
echo -e -n "$pVar\n"
|
||||
end
|
||||
end
|
||||
|
||||
if test -n "$acc"
|
||||
set foundStatus 0
|
||||
for fk in $acc
|
||||
echo $fk
|
||||
if set -q _flag_s
|
||||
# stop after one
|
||||
return $foundStatus
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# check
|
||||
set -l built (type --type $input 12&>/dev/null)
|
||||
if test -n "$built"
|
||||
and test "$built" = builtin
|
||||
set $foundStatus 0
|
||||
if not set -q _flag_c
|
||||
echo -e -n "builtin\n"
|
||||
if set -q _flag_k
|
||||
echo - "$input"
|
||||
else # is color
|
||||
echo (___paths_plugin_wrap_color "yellow" "-") (___paths_plugin_wrap_color (___paths_plugin_cycle_color) "$input")
|
||||
end
|
||||
else
|
||||
echo "$input"
|
||||
end
|
||||
end
|
||||
return $foundStatus
|
||||
end
|
||||
@@ -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
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
*-secret
|
||||
__secret
|
||||
__ignored
|
||||
__ignored/*
|
||||
__test_*.php
|
||||
__test_*.txt
|
||||
__test.php
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
logs = log --graph --pretty=format:'%C(magenta)%h%Creset -%C(red)%d%Creset %s %C(dim green)(%cr) %C(cyan)<%an>%Creset' --abbrev-commit
|
||||
nah = !git reset --hard && git clean -df
|
||||
recent = "!r() { count=$1; git for-each-ref --sort=-committerdate refs/heads --format='%(HEAD)%(color:yellow)%(refname:short)|%(color:bold green)%(committerdate:relative)|%(color:blue)%(subject)|%(color:magenta)%(authorname)%(color:reset)' --color=always --count=${count:=10} | column -ts'|';}; r"
|
||||
reset-origin = !git fetch origin && git reset --hard origin/master && git clean -f -d
|
||||
reset-upstream = !git fetch upstream && git reset --hard upstream/master && git clean -f -d
|
||||
reset-origin = !git fetch origin && git reset --hard origin/HEAD && git clean -f -d
|
||||
reset-upstream = !git fetch upstream && git reset --hard upstream/HEAD && git clean -f -d
|
||||
rl = reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%cr%C(reset) %gs (%s)'
|
||||
tagdate = log --date-order --graph --tags --simplify-by-decoration --pretty=format:\"%ai %h %d\"
|
||||
undo = reset --soft HEAD^
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
-- │ ivuorinen's Neovim configuration │
|
||||
-- ╰─────────────────────────────────────────────────────────╯
|
||||
|
||||
-- ── Install lazylazy ────────────────────────────────────────────────
|
||||
-- ── Install lazy ────────────────────────────────────────────────────
|
||||
-- https://github.com/folke/lazy.nvim
|
||||
local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
|
||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||
@@ -53,7 +53,7 @@ require('lazy').setup(
|
||||
path = '~/Code/nvim', -- Load wip plugins from this path
|
||||
},
|
||||
install = {
|
||||
colorscheme = { vim.g.colors_theme },
|
||||
colorscheme = { 'catppuccin' },
|
||||
},
|
||||
profiling = {
|
||||
loader = true,
|
||||
@@ -61,8 +61,6 @@ require('lazy').setup(
|
||||
}
|
||||
)
|
||||
|
||||
-- require('nvm-default').setup()
|
||||
|
||||
require 'keymaps'
|
||||
|
||||
-- vim: set ts=2 sts=2 sw=2 wrap et :
|
||||
|
||||
@@ -28,7 +28,6 @@ K.d('<C-k>', { 'n', 'v' }, ":m '<-2<CR>gv=gv", 'Move Block Up')
|
||||
K.d('<C-j>', { 'n', 'v' }, ":m '>+1<CR>gv=gv", 'Move Block Down')
|
||||
|
||||
-- ── Other operations ────────────────────────────────────────────────
|
||||
K.nl('o', function() require('snacks').gitbrowse() end, 'Open repo in browser')
|
||||
K.n('<C-s>', ':w!<cr>', { desc = 'Save', noremap = true })
|
||||
K.n('<esc><esc>', ':nohlsearch<cr>', { desc = 'Clear Search Highlighting' })
|
||||
|
||||
@@ -59,7 +58,6 @@ K.ld('cci', 'n', function() b().lsp_incoming_calls() end, 'Incoming calls')
|
||||
K.ld('cco', 'n', function() b().lsp_outgoing_calls() end, 'Outgoing calls')
|
||||
K.ld('cd', 'n', function() b().lsp_definitions() end, 'Definitions')
|
||||
K.ld('cf', { 'n', 'x' }, ':lua vim.lsp.buf.format()<CR>', 'Format')
|
||||
K.ld('cg', 'n', ':lua require("neogen").generate()<CR>', 'Generate annotations')
|
||||
K.ld('ci', 'n', function() b().lsp_implementations() end, 'Implementations')
|
||||
K.ld('cp', 'n', function() b().lsp_type_definitions() end, 'Type Definition')
|
||||
K.ld('cr', 'n', vim.lsp.buf.rename, 'Rename')
|
||||
|
||||
@@ -1,120 +0,0 @@
|
||||
-- Get nvm default version and use it in node_host_prog
|
||||
-- and g.copilot_node_command.
|
||||
--
|
||||
-- This module automatically configures Neovim to use the default Node.js version
|
||||
-- from NVM. It requires a working NVM installation and 'default' alias to be set,
|
||||
-- and also neovim npm package to be installed.
|
||||
--
|
||||
-- You can install the neovim package by running:
|
||||
-- npm i --global neovim
|
||||
--
|
||||
-- Usage:
|
||||
-- require('nvm-default').setup({
|
||||
-- add_to_path = true, -- optional: add NVM bin directory to PATH
|
||||
-- nvm_path = "~/.nvm", -- optional: custom NVM installation path
|
||||
-- notify_level = "info" -- optional: notification level
|
||||
-- })
|
||||
|
||||
local M = {}
|
||||
|
||||
M.name = 'nvm-default.nvim'
|
||||
M.version = '0.1.0' -- x-release-please-version
|
||||
|
||||
-- Helper function to run a shell command
|
||||
---@param cmd string Run a shell command
|
||||
---@return string? Return the result of the command
|
||||
local function run_command(cmd)
|
||||
local result = vim.fn.system(cmd)
|
||||
return vim.v.shell_error == 0 and result:gsub('%s+$', '') or nil
|
||||
end
|
||||
|
||||
-- Helper function to show a notification
|
||||
---@param msg string Show a message
|
||||
---@param level "info"|"warn"|"error"|"trace" Notification level
|
||||
local function n(msg, level)
|
||||
if msg == nil then msg = M.name .. ': No message provided' end
|
||||
if level == nil then level = 'trace' end
|
||||
|
||||
local log_level = vim.log.levels.INFO
|
||||
|
||||
if level == 'info' then
|
||||
log_level = vim.log.levels.INFO
|
||||
elseif level == 'warn' then
|
||||
log_level = vim.log.levels.WARN
|
||||
elseif level == 'error' then
|
||||
log_level = vim.log.levels.ERROR
|
||||
elseif level == 'trace' then
|
||||
log_level = vim.log.levels.TRACE
|
||||
end
|
||||
|
||||
vim.notify(M.name .. ': ' .. msg, log_level)
|
||||
end
|
||||
|
||||
---@class NvmDefaultOptions
|
||||
---@field add_to_path boolean Add found NVM bin directory to PATH
|
||||
---@field nvm_path string Where nvm installation is located
|
||||
---@field notify_level number|"info"|"warn"|"error"|"trace" Notification level filter
|
||||
|
||||
-- Default options
|
||||
---@type NvmDefaultOptions
|
||||
M.defaults = {
|
||||
add_to_path = vim.g.nvm_default_add_to_path or true,
|
||||
nvm_path = vim.fn.expand(os.getenv 'NVM_DIR' or '~/.nvm'),
|
||||
notify_level = vim.g.nvm_default_notify_level or 'info',
|
||||
}
|
||||
|
||||
-- Fetch the NVM default version or fallback to node version
|
||||
---@param opts? NvmDefaultOptions Plugin options
|
||||
function M.setup(opts)
|
||||
local options = vim.tbl_deep_extend('force', M.defaults, opts or {})
|
||||
|
||||
local nvm_path = options.nvm_path
|
||||
local node_version = run_command(
|
||||
string.format('. %s/nvm.sh && nvm version default', nvm_path)
|
||||
) or run_command(string.format('. %s/nvm.sh && nvm version node', nvm_path)) or nil
|
||||
|
||||
if node_version and node_version:match '^v' then
|
||||
-- Set vim.g.node_host_prog and vim.g.copilot_node_command
|
||||
local current_nvm_version_path =
|
||||
string.format('%s/versions/node/%s', nvm_path, node_version)
|
||||
local current_nvm_node_bin_path = string.format('%s/bin', current_nvm_version_path)
|
||||
local current_nvm_node_bin = string.format('%s/node', current_nvm_node_bin_path)
|
||||
local neovim_node_host_bin_path =
|
||||
string.format('%s/neovim-node-host', current_nvm_node_bin_path)
|
||||
|
||||
-- Collect missing files and directories errors for error output
|
||||
local missing = {}
|
||||
|
||||
-- If node_dir isn't there, stop and show error
|
||||
if not vim.fn.isdirectory(current_nvm_version_path) then
|
||||
table.insert(missing, 'Node.js directory: ' .. current_nvm_version_path)
|
||||
end
|
||||
|
||||
-- If node_bin isn't there, stop and show error
|
||||
if not vim.fn.filereadable(current_nvm_node_bin) then
|
||||
table.insert(missing, 'Node.js binary: ' .. current_nvm_node_bin)
|
||||
end
|
||||
|
||||
if not vim.fn.filereadable(neovim_node_host_bin_path) then
|
||||
table.insert(missing, 'Neovim host binary: ' .. neovim_node_host_bin_path)
|
||||
end
|
||||
|
||||
if #missing > 0 then
|
||||
n('Missing required files:\n- ' .. table.concat(missing, '\n- '), 'error')
|
||||
return
|
||||
end
|
||||
|
||||
-- Add to PATH if requested. Can be turned off by setting if it messes with
|
||||
-- other tools.
|
||||
if options.add_to_path then
|
||||
vim.env.PATH = current_nvm_node_bin_path .. ':' .. vim.env.PATH
|
||||
end
|
||||
|
||||
vim.g.node_host_prog = neovim_node_host_bin_path
|
||||
vim.g.copilot_node_command = current_nvm_node_bin
|
||||
else
|
||||
n('Unable to determine the Node.js version from nvm.', 'error')
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
||||
@@ -13,10 +13,6 @@ local a = vim.api -- A table to store API functions
|
||||
g.mapleader = ' ' -- Space as the leader key
|
||||
g.maplocalleader = ' ' -- Space as the local leader key
|
||||
|
||||
-- g.colors_theme = 'onedark' -- Set the colorscheme
|
||||
-- g.colors_variant_light = 'tokyonight-day' -- Set the light variant
|
||||
-- g.colors_variant_dark = 'tokyonight-storm' -- Set the dark variant
|
||||
|
||||
g.editorconfig = true -- Make sure editorconfig support is enabled
|
||||
g.loaded_perl_provider = 0 -- Disable perl provider
|
||||
g.loaded_ruby_provider = 0 -- Disable ruby provider
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
return {
|
||||
-- Performant, batteries-included completion plugin for Neovim
|
||||
-- https:/github.com/saghen/blink.cmp
|
||||
-- https://github.com/saghen/blink.cmp
|
||||
{
|
||||
'saghen/blink.cmp',
|
||||
version = '*',
|
||||
|
||||
@@ -24,7 +24,14 @@ return {
|
||||
-- https://github.com/fatih/vim-go
|
||||
{
|
||||
'fatih/vim-go',
|
||||
config = function() end,
|
||||
ft = 'go',
|
||||
config = function()
|
||||
vim.g.go_def_mode = 'gopls'
|
||||
vim.g.go_info_mode = 'gopls'
|
||||
vim.g.go_fmt_autosave = 0
|
||||
vim.g.go_imports_autosave = 0
|
||||
vim.g.go_mod_fmt_autosave = 0
|
||||
end,
|
||||
},
|
||||
|
||||
-- Clarify and beautify your comments using boxes and lines.
|
||||
|
||||
@@ -223,7 +223,7 @@ return {
|
||||
vim.env.VIMRUNTIME,
|
||||
}
|
||||
client.config.settings.Lua.runtime = { version = 'LuaJIT' }
|
||||
client.notify(
|
||||
client:notify(
|
||||
'workspace/didChangeConfiguration',
|
||||
{ settings = client.config.settings }
|
||||
)
|
||||
|
||||
@@ -89,15 +89,12 @@ return {
|
||||
'f-person/auto-dark-mode.nvim',
|
||||
opts = {
|
||||
update_interval = 1000,
|
||||
-- stylua: ignore
|
||||
set_dark_mode = function()
|
||||
vim.api.nvim_set_option_value('background', 'dark', {})
|
||||
-- vim.cmd.colorscheme(vim.g.colors_variant_dark)
|
||||
-- vim.cmd 'colorscheme rose-pine'
|
||||
end,
|
||||
set_light_mode = function()
|
||||
vim.api.nvim_set_option_value('background', 'light', {})
|
||||
-- vim.cmd.colorscheme(vim.g.colors_variant_light)
|
||||
-- vim.cmd 'colorscheme rose-pine-dawn'
|
||||
end,
|
||||
},
|
||||
},
|
||||
|
||||
@@ -100,5 +100,6 @@ function GetIntelephenseLicense()
|
||||
local f = assert(io.open(p, 'rb'))
|
||||
local content = f:read '*a'
|
||||
f:close()
|
||||
return string.gsub(content, '%s+', '')[1] or nil
|
||||
end
|
||||
local stripped = string.gsub(content, '%s+', '')
|
||||
return stripped == '' and nil or stripped
|
||||
end
|
||||
@@ -8,8 +8,11 @@
|
||||
#
|
||||
# Smart session manager for the terminal
|
||||
# https://github.com/joshmedeski/sesh
|
||||
#:schema https://github.com/joshmedeski/sesh/raw/main/sesh.schema.json
|
||||
|
||||
strict_mode = false
|
||||
dir_length = 2 # Uses last 2 directories: "projects/sesh" instead of just "sesh"
|
||||
cache = true
|
||||
|
||||
# [marker]
|
||||
# inactivity_threshold = 10 # Seconds before alerts start
|
||||
@@ -52,3 +55,7 @@ disable_startup_command = true
|
||||
name = "Downloads"
|
||||
path = "~/Downloads"
|
||||
startup_command = "lsa"
|
||||
|
||||
[[session]]
|
||||
name = "Code/ivuorinen"
|
||||
path = "~/Code/ivuorinen/"
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
|
||||
|
||||
@@ -88,6 +88,7 @@ section_install()
|
||||
"nvm-latest:Install latest lts node using nvm"
|
||||
"nvm:Install Node Version Manager (nvm)"
|
||||
"python-packages:Install Python packages via uv"
|
||||
"shellspec:Install shellspec testing framework"
|
||||
"xcode-cli-tools:Install Xcode CLI tools (macOS)"
|
||||
"z:Install z"
|
||||
)
|
||||
@@ -121,6 +122,7 @@ section_install()
|
||||
$0 install ntfy
|
||||
|
||||
# Tier 4: Independent utilities
|
||||
$0 install shellspec
|
||||
$0 install z
|
||||
|
||||
msgr msg "Reloading configurations again..."
|
||||
@@ -245,6 +247,12 @@ section_install()
|
||||
&& msgr yay "Xcode CLI tools installed!"
|
||||
;;
|
||||
|
||||
shellspec)
|
||||
msgr run "Installing shellspec..."
|
||||
bash "$DOTFILES/scripts/install-shellspec.sh" \
|
||||
&& msgr yay "shellspec has been installed!"
|
||||
;;
|
||||
|
||||
z)
|
||||
msgr run "Installing z..."
|
||||
bash "$DOTFILES/scripts/install-z.sh" \
|
||||
|
||||
103
local/bin/x-visit-folders
Executable file
103
local/bin/x-visit-folders
Executable file
@@ -0,0 +1,103 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Register level-1 subdirectories with zoxide so they appear
|
||||
# in `z` completions.
|
||||
# Usage: x-visit-folders [options] [directory]
|
||||
#
|
||||
# Example: x-visit-folders ~/Code/ivuorinen
|
||||
#
|
||||
# Copyright (c) 2026 Ismo Vuorinen. All Rights Reserved.
|
||||
# Licensed under the MIT license.
|
||||
#
|
||||
# @description Register level-1 subdirectories with zoxide
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Enable verbosity with VERBOSE=1
|
||||
VERBOSE="${VERBOSE:-0}"
|
||||
DRY_RUN=0
|
||||
|
||||
# Function to print usage information
|
||||
usage()
|
||||
{
|
||||
echo "Usage: $0 [options] [directory]"
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " -h, --help Show this help message"
|
||||
echo " -v, --verbose Print each directory as it is visited"
|
||||
echo " -n, --dry-run List directories without adding them"
|
||||
local code="${1:-1}"
|
||||
exit "$code"
|
||||
}
|
||||
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
# $1 - message (string)
|
||||
msg()
|
||||
{
|
||||
[[ "$VERBOSE" -eq 1 ]] && echo "$1"
|
||||
}
|
||||
|
||||
# Function to print error messages and exit
|
||||
# $1 - error message (string)
|
||||
msg_err()
|
||||
{
|
||||
echo "(!) ERROR: $1" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Function to register a directory with zoxide
|
||||
# $1 - directory path (string)
|
||||
visit_dir()
|
||||
{
|
||||
if zoxide add "$1" 2> /dev/null; then
|
||||
msg "Added: $1"
|
||||
else
|
||||
msg "zoxide add failed for: $1"
|
||||
fi
|
||||
}
|
||||
|
||||
# Main function
|
||||
main()
|
||||
{
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
-h | --help) usage 0 ;;
|
||||
-v | --verbose) VERBOSE=1 ;;
|
||||
-n | --dry-run) DRY_RUN=1 ;;
|
||||
-*)
|
||||
msg_err "Unknown option: $1"
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
local target="${1:-.}"
|
||||
|
||||
if [[ ! -d "$target" ]]; then
|
||||
msg_err "Not a directory: $target"
|
||||
fi
|
||||
|
||||
target="$(cd "$target" && pwd)"
|
||||
|
||||
local count=0
|
||||
for dir in "$target"/*/; do
|
||||
[[ -d "$dir" ]] || continue
|
||||
local name
|
||||
name="$(basename "$dir")"
|
||||
[[ "$name" == .* ]] && continue
|
||||
|
||||
if [[ "$DRY_RUN" -eq 1 ]]; then
|
||||
echo "(dry-run) $dir"
|
||||
else
|
||||
visit_dir "$dir"
|
||||
fi
|
||||
count=$((count + 1))
|
||||
done
|
||||
|
||||
echo "Visited $count directories."
|
||||
}
|
||||
|
||||
main "$@"
|
||||
23
local/bin/x-visit-folders.md
Normal file
23
local/bin/x-visit-folders.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# x-visit-folders
|
||||
|
||||
Register level-1 subdirectories with zoxide so they appear in
|
||||
`z` completions.
|
||||
|
||||
## Usage
|
||||
|
||||
```bash
|
||||
x-visit-folders [options] [directory]
|
||||
```
|
||||
|
||||
- `directory` – target directory (defaults to current directory)
|
||||
- `-n`, `--dry-run` – list directories without adding them
|
||||
- `-v`, `--verbose` – print each directory as it is visited
|
||||
- `-h`, `--help` – show usage information
|
||||
|
||||
## Example
|
||||
|
||||
```bash
|
||||
x-visit-folders ~/Code/ivuorinen
|
||||
```
|
||||
|
||||
<!-- vim: set ft=markdown spell spelllang=en_us cc=80 : -->
|
||||
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
|
||||
|
||||
16
scripts/install-shellspec.md
Normal file
16
scripts/install-shellspec.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# install-shellspec
|
||||
|
||||
Installs [shellspec](https://github.com/shellspec/shellspec), a BDD-style
|
||||
testing framework for shell scripts.
|
||||
|
||||
## Usage
|
||||
|
||||
```bash
|
||||
scripts/install-shellspec.sh
|
||||
```
|
||||
|
||||
The script resolves the latest release tag via `x-gh-get-latest-version`,
|
||||
clones shellspec to `~/.cache/shellspec` pinned to that tag, and runs
|
||||
`make install PREFIX=$HOME/.local`, placing the binary in `~/.local/bin/`.
|
||||
Re-running the script fetches and checks out the newest release tag
|
||||
before reinstalling.
|
||||
37
scripts/install-shellspec.sh
Executable file
37
scripts/install-shellspec.sh
Executable file
@@ -0,0 +1,37 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
# @description Install shellspec testing framework
|
||||
#
|
||||
# shellcheck source=shared.sh
|
||||
source "${DOTFILES}/config/shared.sh"
|
||||
|
||||
SHELLSPEC_REPO="https://github.com/shellspec/shellspec.git"
|
||||
SHELLSPEC_CACHE="$HOME/.cache/shellspec"
|
||||
|
||||
install_shellspec()
|
||||
{
|
||||
local version
|
||||
version=$(x-gh-get-latest-version shellspec/shellspec)
|
||||
msgr ok "Latest shellspec version: $version"
|
||||
|
||||
if [[ -d "$SHELLSPEC_CACHE" ]]; then
|
||||
msgr ok "shellspec repo already cloned, fetching $version..."
|
||||
git -C "$SHELLSPEC_CACHE" fetch --depth=1 origin "refs/tags/$version"
|
||||
git -C "$SHELLSPEC_CACHE" checkout "$version"
|
||||
else
|
||||
git clone --branch "$version" --depth=1 "$SHELLSPEC_REPO" "$SHELLSPEC_CACHE"
|
||||
fi
|
||||
|
||||
msgr run "Running make install..."
|
||||
make -C "$SHELLSPEC_CACHE" install PREFIX="$HOME/.local"
|
||||
msgr run_done "shellspec $version installed to $HOME/.local/bin/shellspec"
|
||||
return 0
|
||||
}
|
||||
|
||||
main()
|
||||
{
|
||||
install_shellspec
|
||||
return 0
|
||||
}
|
||||
|
||||
main "$@"
|
||||
577
yarn.lock
577
yarn.lock
@@ -1,403 +1,244 @@
|
||||
# This file is generated by running "yarn install" inside your project.
|
||||
# Manual changes might be lost - proceed with caution!
|
||||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||
# yarn lockfile v1
|
||||
|
||||
__metadata:
|
||||
version: 8
|
||||
cacheKey: 10c0
|
||||
|
||||
"@biomejs/biome@npm:^2.3.1":
|
||||
version: 2.4.0
|
||||
resolution: "@biomejs/biome@npm:2.4.0"
|
||||
"@biomejs/biome@^2.4.4":
|
||||
version "2.4.7"
|
||||
resolved "https://registry.npmjs.org/@biomejs/biome/-/biome-2.4.7.tgz"
|
||||
integrity sha512-vXrgcmNGZ4lpdwZSpMf1hWw1aWS6B+SyeSYKTLrNsiUsAdSRN0J4d/7mF3ogJFbIwFFSOL3wT92Zzxia/d5/ng==
|
||||
optionalDependencies:
|
||||
"@biomejs/cli-darwin-arm64" "2.4.7"
|
||||
"@biomejs/cli-darwin-x64" "2.4.7"
|
||||
"@biomejs/cli-linux-arm64" "2.4.7"
|
||||
"@biomejs/cli-linux-arm64-musl" "2.4.7"
|
||||
"@biomejs/cli-linux-x64" "2.4.7"
|
||||
"@biomejs/cli-linux-x64-musl" "2.4.7"
|
||||
"@biomejs/cli-win32-arm64" "2.4.7"
|
||||
"@biomejs/cli-win32-x64" "2.4.7"
|
||||
|
||||
"@biomejs/cli-darwin-arm64@2.4.7":
|
||||
version "2.4.7"
|
||||
resolved "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.4.7.tgz"
|
||||
integrity sha512-Oo0cF5mHzmvDmTXw8XSjhCia8K6YrZnk7aCS54+/HxyMdZMruMO3nfpDsrlar/EQWe41r1qrwKiCa2QDYHDzWA==
|
||||
|
||||
"@biomejs/cli-darwin-x64@2.4.7":
|
||||
version "2.4.7"
|
||||
resolved "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.4.7.tgz"
|
||||
integrity sha512-I+cOG3sd/7HdFtvDSnF9QQPrWguUH7zrkIMMykM3PtfWU9soTcS2yRb9Myq6MHmzbeCT08D1UmY+BaiMl5CcoQ==
|
||||
|
||||
"@biomejs/cli-linux-arm64-musl@2.4.7":
|
||||
version "2.4.7"
|
||||
resolved "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.4.7.tgz"
|
||||
integrity sha512-I2NvM9KPb09jWml93O2/5WMfNR7Lee5Latag1JThDRMURVhPX74p9UDnyTw3Ae6cE1DgXfw7sqQgX7rkvpc0vw==
|
||||
|
||||
"@biomejs/cli-linux-arm64@2.4.7":
|
||||
version "2.4.7"
|
||||
resolved "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.4.7.tgz"
|
||||
integrity sha512-om6FugwmibzfP/6ALj5WRDVSND4H2G9X0nkI1HZpp2ySf9lW2j0X68oQSaHEnls6666oy4KDsc5RFjT4m0kV0w==
|
||||
|
||||
"@biomejs/cli-linux-x64-musl@2.4.7":
|
||||
version "2.4.7"
|
||||
resolved "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.4.7.tgz"
|
||||
integrity sha512-00kx4YrBMU8374zd2wHuRV5wseh0rom5HqRND+vDldJPrWwQw+mzd/d8byI9hPx926CG+vWzq6AeiT7Yi5y59g==
|
||||
|
||||
"@biomejs/cli-linux-x64@2.4.7":
|
||||
version "2.4.7"
|
||||
resolved "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.4.7.tgz"
|
||||
integrity sha512-bV8/uo2Tj+gumnk4sUdkerWyCPRabaZdv88IpbmDWARQQoA/Q0YaqPz1a+LSEDIL7OfrnPi9Hq1Llz4ZIGyIQQ==
|
||||
|
||||
"@biomejs/cli-win32-arm64@2.4.7":
|
||||
version "2.4.7"
|
||||
resolved "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.4.7.tgz"
|
||||
integrity sha512-hOUHBMlFCvDhu3WCq6vaBoG0dp0LkWxSEnEEsxxXvOa9TfT6ZBnbh72A/xBM7CBYB7WgwqboetzFEVDnMxelyw==
|
||||
|
||||
"@biomejs/cli-win32-x64@2.4.7":
|
||||
version "2.4.7"
|
||||
resolved "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.4.7.tgz"
|
||||
integrity sha512-qEpGjSkPC3qX4ycbMUthXvi9CkRq7kZpkqMY1OyhmYlYLnANnooDQ7hDerM8+0NJ+DZKVnsIc07h30XOpt7LtQ==
|
||||
|
||||
"@types/node@^25.3.2":
|
||||
version "25.5.0"
|
||||
resolved "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz"
|
||||
integrity sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==
|
||||
dependencies:
|
||||
"@biomejs/cli-darwin-arm64": "npm:2.4.0"
|
||||
"@biomejs/cli-darwin-x64": "npm:2.4.0"
|
||||
"@biomejs/cli-linux-arm64": "npm:2.4.0"
|
||||
"@biomejs/cli-linux-arm64-musl": "npm:2.4.0"
|
||||
"@biomejs/cli-linux-x64": "npm:2.4.0"
|
||||
"@biomejs/cli-linux-x64-musl": "npm:2.4.0"
|
||||
"@biomejs/cli-win32-arm64": "npm:2.4.0"
|
||||
"@biomejs/cli-win32-x64": "npm:2.4.0"
|
||||
dependenciesMeta:
|
||||
"@biomejs/cli-darwin-arm64":
|
||||
optional: true
|
||||
"@biomejs/cli-darwin-x64":
|
||||
optional: true
|
||||
"@biomejs/cli-linux-arm64":
|
||||
optional: true
|
||||
"@biomejs/cli-linux-arm64-musl":
|
||||
optional: true
|
||||
"@biomejs/cli-linux-x64":
|
||||
optional: true
|
||||
"@biomejs/cli-linux-x64-musl":
|
||||
optional: true
|
||||
"@biomejs/cli-win32-arm64":
|
||||
optional: true
|
||||
"@biomejs/cli-win32-x64":
|
||||
optional: true
|
||||
bin:
|
||||
biome: bin/biome
|
||||
checksum: 10c0/c10de983720ac20df56755f42f48b2b56fcc1082d364193f1410d07b62c4b7c3437abdbc9cfd60f2a65cd0f3baa7abf8d09a85cd6962b1363f77034e877c13b3
|
||||
languageName: node
|
||||
linkType: hard
|
||||
undici-types "~7.18.0"
|
||||
|
||||
"@biomejs/cli-darwin-arm64@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@biomejs/cli-darwin-arm64@npm:2.4.0"
|
||||
conditions: os=darwin & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
balanced-match@^4.0.2:
|
||||
version "4.0.4"
|
||||
resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz"
|
||||
integrity sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==
|
||||
|
||||
"@biomejs/cli-darwin-x64@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@biomejs/cli-darwin-x64@npm:2.4.0"
|
||||
conditions: os=darwin & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
bats@^1.13.0:
|
||||
version "1.13.0"
|
||||
resolved "https://registry.npmjs.org/bats/-/bats-1.13.0.tgz"
|
||||
integrity sha512-giSYKGTOcPZyJDbfbTtzAedLcNWdjCLbXYU3/MwPnjyvDXzu6Dgw8d2M+8jHhZXSmsCMSQqCp+YBsJ603UO4vQ==
|
||||
|
||||
"@biomejs/cli-linux-arm64-musl@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@biomejs/cli-linux-arm64-musl@npm:2.4.0"
|
||||
conditions: os=linux & cpu=arm64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@biomejs/cli-linux-arm64@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@biomejs/cli-linux-arm64@npm:2.4.0"
|
||||
conditions: os=linux & cpu=arm64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@biomejs/cli-linux-x64-musl@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@biomejs/cli-linux-x64-musl@npm:2.4.0"
|
||||
conditions: os=linux & cpu=x64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@biomejs/cli-linux-x64@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@biomejs/cli-linux-x64@npm:2.4.0"
|
||||
conditions: os=linux & cpu=x64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@biomejs/cli-win32-arm64@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@biomejs/cli-win32-arm64@npm:2.4.0"
|
||||
conditions: os=win32 & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@biomejs/cli-win32-x64@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@biomejs/cli-win32-x64@npm:2.4.0"
|
||||
conditions: os=win32 & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@isaacs/cliui@npm:^9.0.0":
|
||||
version: 9.0.0
|
||||
resolution: "@isaacs/cliui@npm:9.0.0"
|
||||
checksum: 10c0/971063b7296419f85053dacd0a0285dcadaa3dfc139228b23e016c1a9848121ad4aa5e7fcca7522062014e1eb6239a7424188b9f2cba893a79c90aae5710319c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/node@npm:^24.0.1":
|
||||
version: 24.10.13
|
||||
resolution: "@types/node@npm:24.10.13"
|
||||
brace-expansion@^5.0.2:
|
||||
version "5.0.4"
|
||||
resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz"
|
||||
integrity sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==
|
||||
dependencies:
|
||||
undici-types: "npm:~7.16.0"
|
||||
checksum: 10c0/4ff0b9b060b5477c0fec5b11a176f294be588104ab546295db65b17a92ba0a6077b52ad92dd3c0d2154198c7f9d0021e6c1d42b00c9ac7ebfd85632afbcc48a4
|
||||
languageName: node
|
||||
linkType: hard
|
||||
balanced-match "^4.0.2"
|
||||
|
||||
"balanced-match@npm:^4.0.2":
|
||||
version: 4.0.2
|
||||
resolution: "balanced-match@npm:4.0.2"
|
||||
debug@^4.3.4:
|
||||
version "4.4.3"
|
||||
resolved "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz"
|
||||
integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==
|
||||
dependencies:
|
||||
jackspeak: "npm:^4.2.3"
|
||||
checksum: 10c0/493eee4bece3f8b270cea8d3d6d1122ce008dd6b0d5aca8a3f1e623be6897be18c926018eadc454bd719bb7cc46d939c39fa2a05fff86b30f65382f020f6926d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
ms "^2.1.3"
|
||||
|
||||
"bats@npm:^1.12.0":
|
||||
version: 1.13.0
|
||||
resolution: "bats@npm:1.13.0"
|
||||
bin:
|
||||
bats: bin/bats
|
||||
checksum: 10c0/7f697d6305d80d328d620bd58c658f7830fbed57e28a43f18771d89fb6f941a131b440ab18d951fd15fdd23f3c687687d607d7fc03ac4c99f4725e64d2432832
|
||||
languageName: node
|
||||
linkType: hard
|
||||
deep-is@^0.1.3:
|
||||
version "0.1.4"
|
||||
resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
|
||||
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
|
||||
|
||||
"brace-expansion@npm:^5.0.2":
|
||||
version: 5.0.2
|
||||
resolution: "brace-expansion@npm:5.0.2"
|
||||
editorconfig-checker@^6.1.1:
|
||||
version "6.1.1"
|
||||
resolved "https://registry.npmjs.org/editorconfig-checker/-/editorconfig-checker-6.1.1.tgz"
|
||||
integrity sha512-kiOb6qaWpMNt7Z/43ba0Pa1Inhr2/t9nKbvEKtCeXJ5AesztoM9AgLOOQVB4QUv/nGjgz3xkbx4pcogVRD2NWw==
|
||||
|
||||
fast-levenshtein@^2.0.6:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
|
||||
integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
|
||||
|
||||
find-package-json@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.npmjs.org/find-package-json/-/find-package-json-1.2.0.tgz"
|
||||
integrity sha512-+SOGcLGYDJHtyqHd87ysBhmaeQ95oWspDKnMXBrnQ9Eq4OkLNqejgoaD8xVWu6GPa0B6roa6KinCMEMcVeqONw==
|
||||
|
||||
fs-extra@^11.1.1:
|
||||
version "11.3.4"
|
||||
resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz"
|
||||
integrity sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==
|
||||
dependencies:
|
||||
balanced-match: "npm:^4.0.2"
|
||||
checksum: 10c0/60c765e5df6fc0ceca3d5703202ae6779db61f28ea3bf93a04dbf0d50c22ef8e4644e09d0459c827077cd2d09ba8f199a04d92c36419fcf874601a5565013174
|
||||
languageName: node
|
||||
linkType: hard
|
||||
graceful-fs "^4.2.0"
|
||||
jsonfile "^6.0.1"
|
||||
universalify "^2.0.0"
|
||||
|
||||
"debug@npm:^4.3.4":
|
||||
version: 4.4.3
|
||||
resolution: "debug@npm:4.4.3"
|
||||
glob@^13.0.0:
|
||||
version "13.0.6"
|
||||
resolved "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz"
|
||||
integrity sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==
|
||||
dependencies:
|
||||
ms: "npm:^2.1.3"
|
||||
peerDependenciesMeta:
|
||||
supports-color:
|
||||
optional: true
|
||||
checksum: 10c0/d79136ec6c83ecbefd0f6a5593da6a9c91ec4d7ddc4b54c883d6e71ec9accb5f67a1a5e96d00a328196b5b5c86d365e98d8a3a70856aaf16b4e7b1985e67f5a6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
minimatch "^10.2.2"
|
||||
minipass "^7.1.3"
|
||||
path-scurry "^2.0.2"
|
||||
|
||||
"deep-is@npm:^0.1.3":
|
||||
version: 0.1.4
|
||||
resolution: "deep-is@npm:0.1.4"
|
||||
checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
graceful-fs@^4.1.6, graceful-fs@^4.2.0:
|
||||
version "4.2.11"
|
||||
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz"
|
||||
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
|
||||
|
||||
"editorconfig-checker@npm:^6.1.0":
|
||||
version: 6.1.1
|
||||
resolution: "editorconfig-checker@npm:6.1.1"
|
||||
bin:
|
||||
ec: dist/index.js
|
||||
editorconfig-checker: dist/index.js
|
||||
checksum: 10c0/0a46ce93e2821041c4b4bbf2ab9dc30e1b4eb03d3f20e5b14bbe45767f6f2aafd5e1310ea737c15402d8e193f702a421a814041e072584250e8a7d5e63d83741
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fast-levenshtein@npm:^2.0.6":
|
||||
version: 2.0.6
|
||||
resolution: "fast-levenshtein@npm:2.0.6"
|
||||
checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"find-package-json@npm:^1.2.0":
|
||||
version: 1.2.0
|
||||
resolution: "find-package-json@npm:1.2.0"
|
||||
checksum: 10c0/85d6c97afb9f8f0deb0d344a1c4eb8027347cf4d61666c28d3ac3f913e916684441218682b3dd6f8ad570e5d43c96a7db521f70183d70df559d07e1f99cdc635
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fs-extra@npm:^11.1.1":
|
||||
version: 11.3.3
|
||||
resolution: "fs-extra@npm:11.3.3"
|
||||
jsonfile@^6.0.1:
|
||||
version "6.2.0"
|
||||
resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz"
|
||||
integrity sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==
|
||||
dependencies:
|
||||
graceful-fs: "npm:^4.2.0"
|
||||
jsonfile: "npm:^6.0.1"
|
||||
universalify: "npm:^2.0.0"
|
||||
checksum: 10c0/984924ff4104e3e9f351b658a864bf3b354b2c90429f57aec0acd12d92c4e6b762cbacacdffb4e745b280adce882e1f980c485d9f02c453f769ab4e7fc646ce3
|
||||
languageName: node
|
||||
linkType: hard
|
||||
universalify "^2.0.0"
|
||||
optionalDependencies:
|
||||
graceful-fs "^4.1.6"
|
||||
|
||||
"glob@npm:^13.0.0":
|
||||
version: 13.0.3
|
||||
resolution: "glob@npm:13.0.3"
|
||||
levn@^0.4.1:
|
||||
version "0.4.1"
|
||||
resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz"
|
||||
integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
|
||||
dependencies:
|
||||
minimatch: "npm:^10.2.0"
|
||||
minipass: "npm:^7.1.2"
|
||||
path-scurry: "npm:^2.0.0"
|
||||
checksum: 10c0/333dc5c40ca0e50400465d8f5c45aa7cdd32580c4d1a4c502dfb4fb9c469a936b8e0c6bbd09cd6353fd05982e48d7f79e819159a36fb3e0a41ee722607bc11a9
|
||||
languageName: node
|
||||
linkType: hard
|
||||
prelude-ls "^1.2.1"
|
||||
type-check "~0.4.0"
|
||||
|
||||
"graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0":
|
||||
version: 4.2.11
|
||||
resolution: "graceful-fs@npm:4.2.11"
|
||||
checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2
|
||||
languageName: node
|
||||
linkType: hard
|
||||
lru-cache@^11.0.0:
|
||||
version "11.2.7"
|
||||
resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz"
|
||||
integrity sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==
|
||||
|
||||
"ivuorinen-dotfiles@workspace:.":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "ivuorinen-dotfiles@workspace:."
|
||||
markdown-table-formatter@^1.7.0:
|
||||
version "1.7.0"
|
||||
resolved "https://registry.npmjs.org/markdown-table-formatter/-/markdown-table-formatter-1.7.0.tgz"
|
||||
integrity sha512-/yddr66lbp5N1HESvkJoFIQq2VUUdFoBEJ+jAU/Mm/H2xaK80Nq2e0ugkJPWCRrix4GXhTUAccbsg1tQg5jiew==
|
||||
dependencies:
|
||||
"@biomejs/biome": "npm:^2.3.1"
|
||||
"@types/node": "npm:^24.0.1"
|
||||
bats: "npm:^1.12.0"
|
||||
editorconfig-checker: "npm:^6.1.0"
|
||||
markdown-table-formatter: "npm:^1.7.0"
|
||||
prettier: "npm:^3.8.1"
|
||||
typescript: "npm:^5.8.3"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
debug "^4.3.4"
|
||||
find-package-json "^1.2.0"
|
||||
fs-extra "^11.1.1"
|
||||
glob "^13.0.0"
|
||||
markdown-table-prettify "^3.6.0"
|
||||
optionator "^0.9.4"
|
||||
|
||||
"jackspeak@npm:^4.2.3":
|
||||
version: 4.2.3
|
||||
resolution: "jackspeak@npm:4.2.3"
|
||||
markdown-table-prettify@^3.6.0:
|
||||
version "3.7.0"
|
||||
resolved "https://registry.npmjs.org/markdown-table-prettify/-/markdown-table-prettify-3.7.0.tgz"
|
||||
integrity sha512-woZ1X+u0HsTygXL5kcptMSDwnjU//3UKTOH6fGdaABSSLOxTdWjr2P6i7dVrru5t/pxyEOT48/skv/8m8/VqdA==
|
||||
|
||||
minimatch@^10.2.2:
|
||||
version "10.2.4"
|
||||
resolved "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz"
|
||||
integrity sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==
|
||||
dependencies:
|
||||
"@isaacs/cliui": "npm:^9.0.0"
|
||||
checksum: 10c0/b5c0c414f1607c2aa0597f4bf2c03b8443897fccd5fd3c2b3e4f77d556b2bc7c3d3413828ba91e0789f6fb40ad90242f7f89fb20aee9e9d705bc1681f7564f67
|
||||
languageName: node
|
||||
linkType: hard
|
||||
brace-expansion "^5.0.2"
|
||||
|
||||
"jsonfile@npm:^6.0.1":
|
||||
version: 6.2.0
|
||||
resolution: "jsonfile@npm:6.2.0"
|
||||
minipass@^7.1.2, minipass@^7.1.3:
|
||||
version "7.1.3"
|
||||
resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz"
|
||||
integrity sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==
|
||||
|
||||
ms@^2.1.3:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
|
||||
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
||||
|
||||
optionator@^0.9.4:
|
||||
version "0.9.4"
|
||||
resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz"
|
||||
integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==
|
||||
dependencies:
|
||||
graceful-fs: "npm:^4.1.6"
|
||||
universalify: "npm:^2.0.0"
|
||||
dependenciesMeta:
|
||||
graceful-fs:
|
||||
optional: true
|
||||
checksum: 10c0/7f4f43b08d1869ded8a6822213d13ae3b99d651151d77efd1557ced0889c466296a7d9684e397bd126acf5eb2cfcb605808c3e681d0fdccd2fe5a04b47e76c0d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
deep-is "^0.1.3"
|
||||
fast-levenshtein "^2.0.6"
|
||||
levn "^0.4.1"
|
||||
prelude-ls "^1.2.1"
|
||||
type-check "^0.4.0"
|
||||
word-wrap "^1.2.5"
|
||||
|
||||
"levn@npm:^0.4.1":
|
||||
version: 0.4.1
|
||||
resolution: "levn@npm:0.4.1"
|
||||
path-scurry@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz"
|
||||
integrity sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==
|
||||
dependencies:
|
||||
prelude-ls: "npm:^1.2.1"
|
||||
type-check: "npm:~0.4.0"
|
||||
checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
lru-cache "^11.0.0"
|
||||
minipass "^7.1.2"
|
||||
|
||||
"lru-cache@npm:^11.0.0":
|
||||
version: 11.2.6
|
||||
resolution: "lru-cache@npm:11.2.6"
|
||||
checksum: 10c0/73bbffb298760e71b2bfe8ebc16a311c6a60ceddbba919cfedfd8635c2d125fbfb5a39b71818200e67973b11f8d59c5a9e31d6f90722e340e90393663a66e5cd
|
||||
languageName: node
|
||||
linkType: hard
|
||||
prelude-ls@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz"
|
||||
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
|
||||
|
||||
"markdown-table-formatter@npm:^1.7.0":
|
||||
version: 1.7.0
|
||||
resolution: "markdown-table-formatter@npm:1.7.0"
|
||||
prettier@^3.8.1:
|
||||
version "3.8.1"
|
||||
resolved "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz"
|
||||
integrity sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==
|
||||
|
||||
type-check@^0.4.0, type-check@~0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz"
|
||||
integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
|
||||
dependencies:
|
||||
debug: "npm:^4.3.4"
|
||||
find-package-json: "npm:^1.2.0"
|
||||
fs-extra: "npm:^11.1.1"
|
||||
glob: "npm:^13.0.0"
|
||||
markdown-table-prettify: "npm:^3.6.0"
|
||||
optionator: "npm:^0.9.4"
|
||||
bin:
|
||||
markdown-table-formatter: lib/index.js
|
||||
checksum: 10c0/0f0d5eaec2c3bb9c60328ffbb4652305845def5387f4c87dd6e83559ef793961353af64ae44bce9cda3394469e419e046ae42fe7e9cafd47414b42deaa28f3b7
|
||||
languageName: node
|
||||
linkType: hard
|
||||
prelude-ls "^1.2.1"
|
||||
|
||||
"markdown-table-prettify@npm:^3.6.0":
|
||||
version: 3.7.0
|
||||
resolution: "markdown-table-prettify@npm:3.7.0"
|
||||
bin:
|
||||
markdown-table-prettify: cli/index.js
|
||||
checksum: 10c0/f387b1ca81ceaa201bda2ce1db8e4d392a4d4ac3d7bb3173c7d9e3d9ca389e31d247eee2ccd2fa30f3132ae2447dc51285fb68636cdaf825633a43a499f41cd6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
typescript@^5.9.3:
|
||||
version "5.9.3"
|
||||
resolved "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz"
|
||||
integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==
|
||||
|
||||
"minimatch@npm:^10.2.0":
|
||||
version: 10.2.0
|
||||
resolution: "minimatch@npm:10.2.0"
|
||||
dependencies:
|
||||
brace-expansion: "npm:^5.0.2"
|
||||
checksum: 10c0/256e72812bb99a86cdc788bf46a4da3f6e139db9123e20ed85a6795b93fdc0b76468ac511eb5535a023adb02a53fd598f971e990d0ca3bd6de6d41ea0199def1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
undici-types@~7.18.0:
|
||||
version "7.18.2"
|
||||
resolved "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz"
|
||||
integrity sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==
|
||||
|
||||
"minipass@npm:^7.1.2":
|
||||
version: 7.1.2
|
||||
resolution: "minipass@npm:7.1.2"
|
||||
checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557
|
||||
languageName: node
|
||||
linkType: hard
|
||||
universalify@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz"
|
||||
integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
|
||||
|
||||
"ms@npm:^2.1.3":
|
||||
version: 2.1.3
|
||||
resolution: "ms@npm:2.1.3"
|
||||
checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"optionator@npm:^0.9.4":
|
||||
version: 0.9.4
|
||||
resolution: "optionator@npm:0.9.4"
|
||||
dependencies:
|
||||
deep-is: "npm:^0.1.3"
|
||||
fast-levenshtein: "npm:^2.0.6"
|
||||
levn: "npm:^0.4.1"
|
||||
prelude-ls: "npm:^1.2.1"
|
||||
type-check: "npm:^0.4.0"
|
||||
word-wrap: "npm:^1.2.5"
|
||||
checksum: 10c0/4afb687a059ee65b61df74dfe87d8d6815cd6883cb8b3d5883a910df72d0f5d029821f37025e4bccf4048873dbdb09acc6d303d27b8f76b1a80dd5a7d5334675
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"path-scurry@npm:^2.0.0":
|
||||
version: 2.0.1
|
||||
resolution: "path-scurry@npm:2.0.1"
|
||||
dependencies:
|
||||
lru-cache: "npm:^11.0.0"
|
||||
minipass: "npm:^7.1.2"
|
||||
checksum: 10c0/2a16ed0e81fbc43513e245aa5763354e25e787dab0d539581a6c3f0f967461a159ed6236b2559de23aa5b88e7dc32b469b6c47568833dd142a4b24b4f5cd2620
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"prelude-ls@npm:^1.2.1":
|
||||
version: 1.2.1
|
||||
resolution: "prelude-ls@npm:1.2.1"
|
||||
checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"prettier@npm:^3.8.1":
|
||||
version: 3.8.1
|
||||
resolution: "prettier@npm:3.8.1"
|
||||
bin:
|
||||
prettier: bin/prettier.cjs
|
||||
checksum: 10c0/33169b594009e48f570471271be7eac7cdcf88a209eed39ac3b8d6d78984039bfa9132f82b7e6ba3b06711f3bfe0222a62a1bfb87c43f50c25a83df1b78a2c42
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"type-check@npm:^0.4.0, type-check@npm:~0.4.0":
|
||||
version: 0.4.0
|
||||
resolution: "type-check@npm:0.4.0"
|
||||
dependencies:
|
||||
prelude-ls: "npm:^1.2.1"
|
||||
checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"typescript@npm:^5.8.3":
|
||||
version: 5.9.3
|
||||
resolution: "typescript@npm:5.9.3"
|
||||
bin:
|
||||
tsc: bin/tsc
|
||||
tsserver: bin/tsserver
|
||||
checksum: 10c0/6bd7552ce39f97e711db5aa048f6f9995b53f1c52f7d8667c1abdc1700c68a76a308f579cd309ce6b53646deb4e9a1be7c813a93baaf0a28ccd536a30270e1c5
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"typescript@patch:typescript@npm%3A^5.8.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:
|
||||
tsc: bin/tsc
|
||||
tsserver: bin/tsserver
|
||||
checksum: 10c0/ad09fdf7a756814dce65bc60c1657b40d44451346858eea230e10f2e95a289d9183b6e32e5c11e95acc0ccc214b4f36289dcad4bf1886b0adb84d711d336a430
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"undici-types@npm:~7.16.0":
|
||||
version: 7.16.0
|
||||
resolution: "undici-types@npm:7.16.0"
|
||||
checksum: 10c0/3033e2f2b5c9f1504bdc5934646cb54e37ecaca0f9249c983f7b1fc2e87c6d18399ebb05dc7fd5419e02b2e915f734d872a65da2e3eeed1813951c427d33cc9a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"universalify@npm:^2.0.0":
|
||||
version: 2.0.1
|
||||
resolution: "universalify@npm:2.0.1"
|
||||
checksum: 10c0/73e8ee3809041ca8b818efb141801a1004e3fc0002727f1531f4de613ea281b494a40909596dae4a042a4fb6cd385af5d4db2e137b1362e0e91384b828effd3a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"word-wrap@npm:^1.2.5":
|
||||
version: 1.2.5
|
||||
resolution: "word-wrap@npm:1.2.5"
|
||||
checksum: 10c0/e0e4a1ca27599c92a6ca4c32260e8a92e8a44f4ef6ef93f803f8ed823f486e0889fc0b93be4db59c8d51b3064951d25e43d434e95dc8c960cc3a63d65d00ba20
|
||||
languageName: node
|
||||
linkType: hard
|
||||
word-wrap@^1.2.5:
|
||||
version "1.2.5"
|
||||
resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz"
|
||||
integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
|
||||
Reference in New Issue
Block a user