build_gui_user_menu.sh 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #!/bin/sh
  2. # Build addon menu files, from the global /Library/GRASS/$GRASS_MMVER/Modules
  3. # and the user's $HOME/Library/GRASS/$GRASS_MMVER/Modules.
  4. # test files to make sure they are appropriate for adding to the GUI menu.
  5. # Using 'file', assume executable binaries OK. Check scripts to see if they
  6. # have GRASS options configured - a simple grep for #%Module.
  7. # Other script languages may need their own test.
  8. # addon commands can't have spaces in them or sh for loop messes up.
  9. # may be my limited knowledge of sh scripting and there could be a way.
  10. GRASS_MMVER=`cut -d . -f 1-2 "$GISBASE/etc/VERSIONNUMBER"`
  11. BINDIR="$GISBASE_USER/Modules/bin"
  12. SCRIPTDIR="$GISBASE_USER/Modules/scripts"
  13. BINDIRG="$GISBASE_SYSTEM/Modules/bin"
  14. SCRIPTDIRG="$GISBASE_SYSTEM/Modules/scripts"
  15. MENUDIR="$GISBASE_USER/Modules/etc"
  16. echo "Rebuilding Addon menu..."
  17. # just to make sure (startup should have created it)
  18. mkdir -p "$MENUDIR"
  19. echo "# generated by grass startup" > "$MENUDIR/xtnmenu.dat"
  20. # global addons:
  21. if [ -d "$BINDIRG" ] ; then
  22. cd "$BINDIRG"
  23. CMDLISTG=`ls -1 2> /dev/null`
  24. else
  25. CMDLISTG=""
  26. fi
  27. if [ -d "$SCRIPTDIRG" ] ; then
  28. cd "$SCRIPTDIRG"
  29. CMDLISTG="$CMDLISTG"$'\n'"`ls -1 2> /dev/null`"
  30. fi
  31. CMDLISTG=`echo "$CMDLISTG" | sort -u`
  32. CMDGFOUND=""
  33. if [ "$CMDLISTG" != "" ] ; then
  34. for i in $CMDLISTG
  35. do
  36. if [ -f "$BINDIRG/$i" ] ; then
  37. ftype="`file $BINDIRG/$i`"
  38. else
  39. ftype="`file $SCRIPTDIRG/$i`"
  40. fi
  41. if [ "`echo $ftype | grep 'Mach-O'`" ] || [ "`grep '#% *Module' $BINDIRG/$i 2> /dev/null`" ] || [ "`grep '#% *Module' $SCRIPTDIRG/$i 2> /dev/null`" ] ; then
  42. echo "main:$i:$i:$i" >> "$MENUDIR/xtnmenu.dat"
  43. CMDGFOUND="1"
  44. fi
  45. done
  46. fi
  47. # user addons:
  48. CMDFIRST="1"
  49. cd "$BINDIR"
  50. CMDLIST=`ls -1 2> /dev/null`
  51. if [ -d "$SCRIPTDIR" ] ; then
  52. cd "$SCRIPTDIR"
  53. CMDLIST="$CMDLIST"$'\n'"`ls -1 2> /dev/null`"
  54. fi
  55. CMDLIST=`echo "$CMDLIST" | sort -u`
  56. if [ "$CMDLIST" != "" ] ; then
  57. for i in $CMDLIST
  58. do
  59. if [ -f "$BINDIR/$i" ] ; then
  60. ftype="`file $BINDIR/$i`"
  61. else
  62. ftype="`file $SCRIPTDIR/$i`"
  63. fi
  64. if [ "`echo $ftype | grep 'Mach-O'`" ] || [ "`grep '#% *Module' $BINDIR/$i 2> /dev/null`" ] || [ "`grep '#% *Module' $SCRIPTDIR/$i 2> /dev/null`" ] ; then
  65. if [ "$CMDFIRST" ] && [ "$CMDGFOUND" ] ; then
  66. echo "separator" >> "$MENUDIR/xtnmenu.dat"
  67. CMDFIRST=""
  68. fi
  69. echo "main:$i:$i:$i" >> "$MENUDIR/xtnmenu.dat"
  70. fi
  71. done
  72. fi