You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

34 lines
979 B

_npm_run_completion() {
8 years ago
# If we're on the run command
if [ "${words[2]}" = "run" ]; then
8 years ago
# Look for a package.json file
local filename="package.json"
local dir=$PWD
while [ ! -e "$dir/$filename" ]; do
dir=${dir%/*}
if [ "$dir" = "" ]; then
break
fi
done
8 years ago
# If we have one, parse the scripts
if [ ! "$dir" = "" ] && type node > /dev/null; then
local options=("${(@f)$(node -e "var pkg = require('$dir/$filename'); pkg.scripts && Object.keys(pkg.scripts).forEach(function(script) { console.log(script.replace(':', '\\\:')+':$ '+pkg.scripts[script]) })")}")
_describe 'values' options
fi
8 years ago
# Fall back to default completion for all other npm commands
else
compadd -- $(COMP_CWORD=$((CURRENT-1)) \
8 years ago
COMP_LINE=$BUFFER \
COMP_POINT=0 \
npm completion -- "${words[@]}" \
2>/dev/null)
IFS=$si
fi
}
compdef _npm_run_completion npm