grails.plugin.zsh 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. if [[ ! -d $GRAILS_HOME/scripts ]];
  2. then
  3. echo "$0:"
  4. echo "Please set \$GRAILS_HOME to use the 'grails' plugin, and ensure that \$GRAILS_HOME/scripts exists"
  5. fi
  6. _enumerateGrailsScripts() {
  7. # Default directoryies
  8. directories=($GRAILS_HOME/scripts ~/.grails/scripts ./scripts)
  9. # Check all of the plugins directories, if they exist
  10. if [ -d plugins ]
  11. then
  12. directories+=(plugins/*/scripts)
  13. fi
  14. # Enumerate all of the Groovy files
  15. files=()
  16. for dir in $directories;
  17. do
  18. if [ -d $dir ]
  19. then
  20. files+=($dir/*.groovy)
  21. fi
  22. done
  23. # Don't try to basename ()
  24. if [ ${#files} -eq 0 ];
  25. then
  26. return
  27. fi
  28. # - Strip the path
  29. # - Remove all scripts with a leading '_'
  30. # - PackagePlugin_.groovy -> PackagePlugin
  31. # - PackagePlugin -> Package-Plugin
  32. # - Package-Plugin -> package-plugin
  33. basename $files \
  34. | grep -vE -e '^_' \
  35. | sed -E -e 's/^_?([^_]+)_?.groovy/\1/'\
  36. -e 's/([a-z])([A-Z])/\1-\2/g' \
  37. | tr "[:upper:]" "[:lower:]" \
  38. | sort \
  39. | uniq
  40. }
  41. _grails() {
  42. if (( CURRENT == 2 )); then
  43. scripts=( $(_enumerateGrailsScripts) )
  44. if [ ${#scripts} -ne 0 ];
  45. then
  46. _multi_parts / scripts
  47. return
  48. fi
  49. fi
  50. _files
  51. }
  52. compdef _grails grails