#!/bin/bash
set -a 
shopt -s extglob 
#shopt -s nullglob
usage="twiki-module-dependencies module [terse]
For Freetown version (4.2.x)

if terse is present, outputs a machine-parsable result for internal use
"
tfd=${TWIKI_FREETOWN_DIST:-$HOME/.twiki_freetown_dist}
command="$0"

# core also needs CGI::Session  Locale::Maketext::Lexicon Time::Local
while test -z "${1##-*}" -a -n "$1";do case $1 in
  *) echo "$usage"; exit;;
  esac;shift
done

mdir="${1%/}"
module="${mdir##*/}"
case "$mdir" in */*) mdir="${mdir%/*}";; *) mdir=;; esac
shift
deps=
terse=false
if test -n "$1"; then terse=true; fi

p1=
p2=$tfd/twikiplugins/$module/lib/TWiki/*/$module/DEPENDENCIES

if   test -n "$mdir" -a -e $mdir/$module/lib/TWiki/*/$module/DEPENDENCIES; then
  depfile=$mdir/$module/lib/TWiki/*/$module/DEPENDENCIES
elif test -e $tfd/twikiplugins/$module/lib/TWiki/*/$module/DEPENDENCIES; then
  depfile=$tfd/twikiplugins/$module/lib/TWiki/*/$module/DEPENDENCIES
  mdir=$tfd/twikiplugins
else
  echo "Could not find $module. Aborting"; exit 1
fi

cat $depfile | ( while read line; do
  dep="${line%%,*}"
  case $dep in 
    TWiki::Plugins::*) deps="$deps $dep `$command $mdir/${dep##*::} terse`";;
    *) deps="$deps $dep";;
  esac
done

if $terse; then echo $deps
else
  echo "${deps// /
}"|sort|uniq| sed -e '/^$/d'

  echo "Missing dependencies:"
  miss=false
  for i in $deps; do
    case $i in 
      TWiki::*) module=${i##*::}
         if test ! -e $mdir/$module/lib/TWiki/*/$module/DEPENDENCIES; then
           echo "    $i"; miss=true
	 fi
	 ;;	 
      *) echo "require $i;"| if ! perl 2>/dev/null;then 
           echo "    $i"; miss=true
	   fi 
	   ;;
    esac
  done
  if ! $miss; then echo none; fi
fi

)
