#!/bin/sh

usage(){
  echo "$0 "'<dist-id>'
}

okay(){
  if [ ! -z "$1" ] ; then
    echo -n "$1" "? (y/n) "
  else
    echo -n "okay? (y/n) "
  fi
  read answer
  if [ -z "$answer" ] ; then
    echo "n"
  fi
  [ "$answer" = "y" -o "$answer" = "yes" -o "$answer" = "Y" ]
}

if [ -z "$1" ] ; then
  usage; exit 1
fi

if [ -z "$M3DIST" ] ; then
  export M3DIST=/pub/lang/m3/m3dist
fi

if [ -z "$M3BASE" ] ; then
  export M3BASE=/usr/contrib
fi

if [ -z "$TARGET" ] ; then
  export TARGET=FreeBSD2
fi

echo 'M3DIST = ' $M3DIST
echo 'M3BASE = ' $M3BASE
echo 'TARGET = ' $TARGET
export M3FILES

while [ ! -z "$1" ] ; do
  case $1 in 
    bin) M3FILES=m3bin.files; 
      FILES='lib/m3/${TARGET}/* bin/m3* bin/quake* bin/ar bin/ranlib'
      PKGS="m3build"
      ;;
    lib) M3FILES=m3lib.files;
      FILES=""
      PKGS="m3core libm3 realgeometry parseparams"
      ;;
    x) M3FILES=m3x.files; 
      FILES=""
      PKGS="tcp X11R4 ui vbtkit"
      ;;
    forms) M3FILES=m3forms.files; 
      FILES="bin/m3bundle"
      PKGS="formsvbtpixmaps formsvbt videovbt images jvideo"
      ;;
    utils) M3FILES=m3utils.files; 
      FILES='bin/show* bin/m3* bin/record* bin/replay*'
      PKGS="tempfiles m3tools"
      ;;
    netobj) M3FILES=m3netobj.files; 
      FILES='bin/netobj* bin/stubgen*'
      PKGS="tcp netobj netobjd m3tk stubgen"
      ;;
    *)
      echo "unknown distribution: $1"
      shift; continue
  esac

  ACT=`pwd`
  if okay "creating files list in ${ACT}/${M3FILES}" ; then
    M3FILES=${ACT}/${M3FILES}.new
  else
    if okay "creating files list in ${M3DIST}/${M3FILES}" ; then
      M3FILES=${M3DIST}/${M3FILES}.new
    else
      M3FILES=/tmp/${M3FILES}.new
    fi
  fi

  cp /dev/null ${M3FILES}

  cd ${M3BASE}
    FILES=`eval echo ${FILES}`
    for f in ${FILES} ; do
      if okay "include file ${f}" ; then
        echo ${f} >> ${M3FILES}
      fi
    done
  
    for p in ${PKGS} ; do
      if okay "include package ${p}" ; then
        echo lib/m3/pkg/${p} >> ${M3FILES}
      fi
    done

  cd ${ACT}
  p=`dirname ${M3FILES}`
  b=`basename ${M3FILES} .new`
  b=${p}/${b}
  if [ -f ${b} ] ; then
    mv ${b} ${b}.old
  fi
  mv ${M3FILES} ${b}
  shift
done

