#!/bin/sh
#
# GNU Copyleft 1997, 1998 Marcelo Magallon <mmagallo@debian.org>
# This ought to be perl... would be much faster.

update_menus=/usr/bin/update-menus
progname=`basename $0`

make_menu_entries ()
{
  if [ "$1" = "--themes" ] ; then
    class=theme
    shift
  else
    class=style
  fi
  while [ $1 ]
  do
    file=$1
    stylename=`basename $file .$class`
    [ $transform ] && file=$transform/$stylename.$class
    section=Styles`expr match $file $stylesdir'\(/.*\)/.*\.'$class`

    echo -e \
      '?package('$package'):\\\n' \
      '  needs="wmstyle"\\\n' \
      '  section="'$section'"\\\n' \
      '  title="'$stylename'"\\\n' \
      '  command="'$file'"\n'
    
    shift
  done
}

usage ()
{
  cat <<EOF
Usage: $progname [options]

Options:

  --stylesdir STYLESDIR      Directory to be scanned for style files
  --package PACKAGENAME      Package to make menu entries depend on
  --transform NEWDIR         Transforms STYLESDIR->NEWDIR
  --output OUTPUTFILE        Output file
  --no-update                Does not run update-menus

Defaults:

  STYLESDIR: $stylesdir
  PACKAGENAME: $package
  NEWDIR: $transform
  OUTPUTFILE: $output
EOF
}

if [ "$UID" = "0" ] ; then
  stylesdir=/etc/X11/WindowMaker/Style
  package=wmaker
  transform=
  output=/etc/menu/wmstyles
  update=1
  menu_methods=/etc/menu-methods
  menu_methods_backup=`tempfile -d /etc`
else
  stylesdir=~/GNUstep/Library/WindowMaker/Style
  package=local.wmaker
  transform=
  output=~/.menu/wmaker_styles
  update=1
  menu_methods=~/.menu-methods
  system_menu_methods=/etc/menu-methods
  menu_methods_backup=`tempfile -d ~/`
fi

rm $menu_methods_backup

while [ $1 ]
do
  case $1 in
    --stylesdir|--package|--transform|--output)
      if ( [ -z $2 ] || expr match $2 '--.*' > /dev/null )
      then
        usage
	exit 1
      else
        eval `expr match $1 '--\(.*\)'`=$2
      fi
      shift 2
    ;;
    --no-update)
      update=0
      shift
    ;;
    *)
      usage
      exit 1
    ;;
  esac
done

[ ! -e $stylesdir -o ! -r $stylesdir ] && \
  echo "$progname: $stylesdir not found or not readable" && exit 1

dirname=`expr match $output '\(.*\)/.*'`
[ $dirname -a ! -e $dirname ] && install -d $dirname

make_menu_entries `find $stylesdir -name \*.style` > $output
make_menu_entries --themes `find $stylesdir -name \*.theme` >> $output

# easy here...

[ $update != 1 -o ! -x $update_menus ] && exit 0

# does the menu_method directory exist?

if [ -d $menu_methods ] ; then
  restore_menu_methods=1
  mv $menu_methods $menu_methods_backup
else
  restore_menu_methods=0
fi

mkdir $menu_methods

# now copy the requiered menu_method and the translation file

for file in wmstyle translate_menus ; do
  if [ -f $menu_methods_backup/$file ] ; then
    cp $menu_methods_backup/$file $menu_methods
  else
    cp $system_menu_methods/$file $menu_methods
  fi
done

# run update-menus

$update_menus

# undo things...

rm -rf $menu_methods

[ $restore_menu_methods = 1 ] && mv $menu_methods_backup $menu_methods

exit 0







