The Memory: Don't create empty file on first write.
[goaljobs.git] / goaljobs
index 93dd844..b7f929a 100755 (executable)
--- a/goaljobs
+++ b/goaljobs
@@ -104,6 +104,15 @@ if [ "$output" = "" ]; then
     output=`basename "$final" .ml`
 fi
 
+# Create a temporary 'main' file to handle command line args.
+main=$(mktemp --suffix=.ml /tmp/goaljobsmainXXXXXX)
+echo "let modules = [" > $main
+for module in "${modules[@]}"; do
+    echo "    \"$module\";" >> $main
+done
+echo "] ;;" >> $main
+echo "Goaljobs.init ()" >> $main
+
 # Either use installed package or if user selected --pkgdir then
 # use goaljobs from that directory.
 declare -a pkg
@@ -111,16 +120,25 @@ if [ "$pkgdir" = "" ]; then
     pkg[0]="-package"
     pkg[1]="goaljobs,goaljobs.syntax"
 else
+    # Get the dependencies manually.  Note that calendar requires
+    # unix & str.
     pkgdir="$(cd $pkgdir; pwd)"
     pkg[0]="-I"
     pkg[1]="$pkgdir"
     pkg[2]="unix.$libext"
-    pkg[3]="goaljobs.$libext"
-    pkg[4]="-pp"
-    pkg[5]="camlp4o $pkgdir/pa_goal.cmo"
+    pkg[3]="str.$libext"
+    pkg[4]="-I"
+    pkg[5]="+calendar"
+    pkg[6]="calendarLib.$libext"
+    pkg[7]="goaljobs.$libext"
+    pkg[8]="-pp"
+    pkg[9]="camlp4o $pkgdir/pa_goal.cmo"
 fi
 
 # Compile the input file(s).
 echo \
-ocamlfind $best "${passthru[@]}" "${pkg[@]}" "$@" -o "$output"
-ocamlfind $best "${passthru[@]}" "${pkg[@]}" "$@" -o "$output"
+ocamlfind $best "${passthru[@]}" "${pkg[@]}" "$@" $main -o "$output"
+ocamlfind $best "${passthru[@]}" "${pkg[@]}" "$@" $main -o "$output"
+
+mainbase="$(echo $main | sed s,\.ml$,,)"
+rm -f "$mainbase"*