#!/bin/bash

bin_path="./bin/bin.jar"
src_path="./src"
class_path="./classes"
plib_path="./libs" #project libs
res_path="./res"

llib_path="./libs" #global libs
stubs_path='./stubs'

canvas_type=1 #1 - MIDP1.0, 2 - MIDP2.0, 3 - NOKIAAPI
math_type=0 #0 - fixed, 1 - float
create_jar=1

while [[ $#>0 ]]; do
 case "$1" in
  '-h' )
   echo "Скрипт сборки проектов MidletPascal Сompiler 3.5"
   echo "   -bin 	путь и название результирующего jar-файла"
   echo "   -src 	путь к директории с исходниками(*.mpsrc и/или *.pas)"
   echo "   -libs	путь к директории с библиотеками проекта"
   echo "   -classes	путь к директории для результирующих *.class и *.bsf файлов"
   echo "   -canvas	тип мидлета:"
   echo "   		 MIDP1"
   echo "   		 MIDP2"
   echo "   		 NOKIA"
   echo "   -math	способ кодирования типа данных real:"
   echo "   		 FIXED"
   echo "   		 FLOAT"
   echo "   -njar	не собирать в jar"
   exit 1
  ;;
  '-bin' )
   shift
   bin_path=$1
  ;;
  '-src' )
   shift
   src_path=$1
  ;;
  '-libs' )
   shift
   plib_path=$1
  ;;
  '-classes' )
   shift
   class_path=$1
  ;;
  '-canvas' )
   shift
   case "$1" in
    'MIDP1' )
     canvas_type=0
    ;;
    'MIDP2' )
     canvas_type=1
    ;;
    'NOKIA' )
     canvas_type=2
    ;;
    * )
     echo "Unknown canvas type '$1'"
     exit 1
    ;;
   esac
  ;;
  '-math' )
   shift
   case "$1" in
    'FIXED' )
     math_type=0
    ;;
    'FLOAT' )
     math_type=1
    ;;
    * )
     echo "Unknown math type '$1'"
     exit 1
    ;;
   esac
  ;;
  '-njar' )
   shift
   create_jar=0
  ;;
  * )
   echo "Unknown argument '$1'"
   exit 1
  ;;
 esac
 shift
done

#Ищем все файлы исходников в папке src
sources=$(ls -R $src_path/*.pas $src_path/*.mpsrc)

rm -rf classes
mkdir classes

#Генерируем bsf файлы, необходимые для использования модулей.
for file in $sources; do
 ./mp3CC -s$file -o$class_path -p$plib_path -l$llib_path -c$canvas_type -m$math_type -d
 if [[ $? != '0' ]]; then
  exit 1
 fi
done

#Собираем все исходники
for file in $sources; do
 ./mp3CC -s$file -o$class_path -p$plib_path -l$llib_path -c$canvas_type -m$math_type -c1
 if [[ $? != '0' ]]; then
  exit 1
 fi
done

#Упаковываем в jar
if [[ $create_jar>0 ]]; then
 rm -f $bin_path

 cd $stubs_path
 files=$(ls *.class)
 zip -Z deflate -9 ../$bin_path $files

 cd ../$llib_path
 files=$(ls *.class)
 zip -Z deflate -u -9 ../$bin_path $files

 cd ../$plib_path
 files=$(ls *.class)
 zip -Z deflate -u -9 ../$bin_path $files

 cd ../$class_path
 files=$(ls *.class)
 zip -Z deflate -u -9 ../$bin_path $files

 cd ../$res_path
 files=$(find)
 zip -Z deflate -u -9 ../$bin_path $files
 cd ..
fi

echo "Done!"