34 lines
794 B
Bash
Executable File
34 lines
794 B
Bash
Executable File
#!/bin/sh
|
|
if [ $# = 0 ]; then >&2 echo 'Arguments: <package>... [<src search root> <package>...]...'; exit 1; fi
|
|
dir="$PWD"
|
|
src_search_root=.
|
|
for pkg in "$@"; do
|
|
case "$pkg" in
|
|
.*|/*)
|
|
src_search_root="$(readlink --canonicalize "$pkg")"
|
|
continue
|
|
;;
|
|
esac
|
|
base="$(basename "$pkg")"
|
|
while :; do
|
|
if [ -e node_modules/"$pkg" ]; then
|
|
dest="$PWD"/node_modules/"$pkg"
|
|
cd "$src_search_root"
|
|
while :; do
|
|
if [ -d "$base" ]; then
|
|
echo "$dest -> $PWD/$base"
|
|
rm --force --recursive "$dest"
|
|
ln --relative --symbolic "$base" "$dest"
|
|
break
|
|
fi
|
|
if [ "$PWD" = / ]; then >&2 echo Could not find source of $pkg; break; fi
|
|
cd ..
|
|
done
|
|
break
|
|
fi
|
|
if [ "$PWD" = / ]; then >&2 echo Could not find usage of $pkg; break; fi
|
|
cd ..
|
|
done
|
|
cd "$dir"
|
|
done
|