grails.plugin.zsh 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. | sed -E -e 's/^_?([^_]+)_?.groovy/\1/'\
  35. -e 's/([a-z])([A-Z])/\1-\2/g' \
  36. | tr "[:upper:]" "[:lower:]" \
  37. | sort \
  38. | uniq
  39. }
  40. _grails() {
  41. if (( CURRENT == 2 )); then
  42. scripts=( $(_enumerateGrailsScripts) )
  43. if [ ${#scripts} -ne 0 ];
  44. then
  45. _multi_parts / scripts
  46. return
  47. fi
  48. fi
  49. _files
  50. }
  51. compdef _grails grails