| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- #!/usr/bin/env bash
- # qmd - Quick Markdown Search
- set -euo pipefail
- # Find node - prefer PATH, fallback to known locations
- find_node() {
- if command -v node &>/dev/null; then
- local ver=$(node --version 2>/dev/null | sed 's/^v//' || echo "0")
- local major="${ver%%.*}"
- if [[ "$major" -ge 22 ]]; then
- command -v node
- return 0
- fi
- fi
- # Fallback: derive paths (need HOME)
- : "${HOME:=$(eval echo ~)}"
- # Check known locations
- local candidates=(
- "$HOME/.local/share/mise/installs/node/latest/bin/node"
- "$HOME/.local/share/mise/shims/node"
- "$HOME/.asdf/shims/node"
- "/opt/homebrew/bin/node"
- "/usr/local/bin/node"
- "$HOME/.nvm/current/bin/node"
- )
- for c in "${candidates[@]}"; do
- [[ -x "$c" ]] && { echo "$c"; return 0; }
- done
- return 1
- }
- NODE=$(find_node) || { echo "Error: node (>=22) not found. Install from https://nodejs.org" >&2; exit 1; }
- # Resolve symlinks to find script location
- SOURCE="${BASH_SOURCE[0]}"
- while [[ -L "$SOURCE" ]]; do
- DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
- SOURCE="$(readlink "$SOURCE")"
- [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
- done
- SCRIPT_DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
- exec "$NODE" --import tsx "$SCRIPT_DIR/src/qmd.ts" "$@"
|