#! /bin/bash
#
# The System Manager
# An Administration Tool For UNIX
#
# Copyright (c) 1994 Stuart Herbert
# Released under the GNU GPL v2
#
# Bugs/comments/contributions to S.Herbert@Sheffield.ac.uk

MANIFEST="/var/adm/sysman/.MANIFEST"

function SpodThroughModules()
{
  local Manifest
  local x
  
  echo "#! /bin/bash" > $MANIFEST/$2
  echo "# Generated by MANIFEST" >> $MANIFEST/$2
  echo "# See INSTALL for details of format" >> $MANIFEST/$2
  echo "" >> $MANIFEST/$2
  
  if [ "$2" != "base" ]; then
    echo "depend -d /var/adm/sysman/$3" >> $MANIFEST/$2
    echo "if [ \$? -eq 254 ]; then" >> $MANIFEST/$2
    echo "  log \"You must install the 'base' module of the System Manager\" y " >> $MANIFEST/$2
    echo "  log \"before installing this module.\" y " >> $MANIFEST/$2
    echo "  log \"\" y " >> $MANIFEST/$2
    echo "  exit" >> $MANIFEST/$2
    echo "fi" >> $MANIFEST/$2
  fi
  
  if [ -r README.module ]; then
    cat README.module >> $MANIFEST/$2
  fi
  
  echo "dir \$TARGETDIR/$1 755 y" >> $MANIFEST/$2
  
  for x in * ; do
    if [ -d $x ]; then
      cd $x
      SpodThroughModules "$1/$x" "$x" "$1"
      cd ..
    elif [ -L $x ]; then
      echo > /dev/null
    elif [ -x $x ]; then
      echo "file $1/$x /var/adm/sysman/$1/$x 755" >> $MANIFEST/$2
    elif [ "$x" != "Root.menu" -a "$x" != "User.menu" ]; then
      echo "file $1/$x /var/adm/sysman/$1/$x 644" >> $MANIFEST/$2
    fi
  done
}

function main()
{
  InfoBox "Building MANIFEST files ... please wait"
  
  pushd . > /dev/null
  
  cd /var/adm/sysman/modules
  SpodThroughModules "modules" "base"
  
  cat $MANIFEST/Sysman >> $MANIFEST/base
  rm -f $MANIFEST/Sysman
  
  popd > /dev/null
}

# main code
if [ -n "$1" ]; then
  case "$1" in
    --SysmanInstall)
      echo "Y : Y : MANIFEST : Build Installation Manifest :$0"
      exit
      ;;
    --SysmanAuthor)
      echo "MANIFEST: Build a manifest of modules"
      echo "Copyright (c) 1994 Stuart Herbert"
      exit
      ;;
  esac
else
  main
fi

# clean up here
for x in $SysmanFile1 $SysmanFile2 $SysmanFile3 ; do
  if [ -f $x ]; then rm -f $x ; fi
done

# that's it, folks
