Browse Source

If package.json exists recommend dependencies for `npm uninstall`

pull/6/head
Luke Childs 8 years ago
parent
commit
fd1a2af647
  1. 29
      zsh-better-npm-completion.plugin.zsh

29
zsh-better-npm-completion.plugin.zsh

@ -30,6 +30,18 @@ _zbnc_parse_package_json_for_script_suggestions() {
sed 's/\(:\)$[^ ]/\\&/g' # Escape ":$" without a space in commands sed 's/\(:\)$[^ ]/\\&/g' # Escape ":$" without a space in commands
} }
_zbnc_parse_package_json_for_deps() {
local package_json="$1"
cat "$package_json" |
sed -nE '/^ "dependencies": \{$/,/^ \},?$/p' | # Grab scripts object
sed '1d;$d' | # Remove first/last lines
sed -E 's/ "([^"]+)": "(.+)",?/\1/' # Parse commands into suggestions
cat "$package_json" |
sed -nE '/^ "devDependencies": \{$/,/^ \},?$/p' | # Grab scripts object
sed '1d;$d' | # Remove first/last lines
sed -E 's/ "([^"]+)": "(.+)",?/\1/' # Parse commands into suggestions
}
_zbnc_npm_install_completion() { _zbnc_npm_install_completion() {
# Only run on `npm install ?` # Only run on `npm install ?`
@ -45,6 +57,20 @@ _zbnc_npm_install_completion() {
custom_completion=true custom_completion=true
} }
_zbnc_npm_uninstall_completion() {
# Look for a package.json file
local package_json="$(_zbnc_recursively_look_for package.json)"
# Return if we can't find package.json
[[ "$package_json" = "" ]] && return
_values $(_zbnc_parse_package_json_for_deps "$package_json")
# Make sure we don't run default completion
custom_completion=true
}
_zbnc_npm_run_completion() { _zbnc_npm_run_completion() {
# Only run on `npm run ?` # Only run on `npm run ?`
@ -88,6 +114,9 @@ _zbnc_zsh_better_npm_completion() {
i|install) i|install)
_zbnc_npm_install_completion _zbnc_npm_install_completion
;; ;;
r|uninstall)
_zbnc_npm_uninstall_completion
;;
run) run)
_zbnc_npm_run_completion _zbnc_npm_run_completion
;; ;;

Loading…
Cancel
Save