source: roaraudio/compbins/ast2roar @ 3520:be1498bb88bb

Last change on this file since 3520:be1498bb88bb was 3520:be1498bb88bb, checked in by phi, 14 years ago

support to write DOS batch job files

  • Property exe set to *
File size: 4.8 KB
Line 
1#!/bin/sh
2
3DOS=false
4SECTIONC=0
5
6if [ "$1" = '--dos' ]
7then
8 DOS=true;
9 shift;
10fi
11
12OUT="$1"
13IN="$2"
14
15HELPFILE=`tempfile -p $$- -s .help`
16HELPOPTS=''
17
18ARGS_END_OPTS_ON_NON_OPT=false
19
20ast2roar_help() {
21 HELPOPTS="$*"
22
23 cat > $HELPFILE
24}
25
26
27if [ -r $IN ]
28then
29 . ./$IN
30else
31 rm $HELPFILE
32 exit 1;
33fi
34
35{
36 $DOS && echo '@ECHO OFF'
37 $DOS || echo '#!/bin/sh'
38 echo
39
40 $DOS && echo "SET _ARGS=$ARGS_ADD_OPTS"
41 $DOS || echo "_args='$ARGS_ADD_OPTS';"
42
43 if $DOS
44 then
45  cat <<_E_O_F_
46
47:mloop
48IF "x%1" == "x" GOTO mloopend
49SET k=%1
50SHIFT
51
52IF "%k%" == "--" GOTO mloopend
53_E_O_F_
54 else
55  cat <<_E_O_F_
56
57while [ -n "\$1" ]
58do
59 k="\$1";
60 shift;
61
62 case "\$k" in
63  '--')
64   break;
65  ;;
66_E_O_F_
67 fi
68
69 if [ "$HELPOPTS" != '' ]
70 then
71  if $DOS
72  then
73   for o in $HELPOPTS
74   do
75    echo "IF \"%k%\" == \"$o\" GOTO help"
76   done
77  else
78   _opts=`echo "$HELPOPTS" | sed "s/^/\'/; s/$/\'/; s/ /\'\|\'/g"`
79   echo "  $_opts)";
80   echo '   cat <<__AST2ROAR__END_OF_HELP_TEXT__'
81   cat $HELPFILE
82   echo '__AST2ROAR__END_OF_HELP_TEXT__'
83   echo '   exit 0;'
84   echo '  ;;';
85  fi
86 fi
87
88 for o in $ARGS_IGNORE_OPTS
89 do
90  on=`echo $o | cut -d: -f1`
91  oa=`echo $o | cut -d: -f2`
92  if $DOS
93  then
94   if $oa
95   then
96    echo "IF \"%k%\" == \"$on\" GOTO nextshift"
97   else
98    echo "IF \"%k%\" == \"$on\" GOTO next"
99   fi
100  else
101   echo "  '$on')";
102   if $oa
103   then
104    echo '   shift;';
105   fi
106   echo '  ;;';
107  fi
108 done
109
110 for o in $ARGS_PASS_OPTS
111 do
112  on=`echo $o | cut -d: -f1`
113  oa=`echo $o | cut -d: -f2`
114  if $DOS
115  then
116   if $oa
117   then
118    echo 'IF "%k%" == "'"$on"'" GOTO passval';
119   else
120    echo 'IF "%k%" == "'"$on"'" GOTO pass';
121   fi
122  else
123   echo "  '$on')";
124   if $oa
125   then
126    echo '   _args="$_args '"$on"' $1";';
127    echo '   shift;';
128   else
129    echo '   _args="$_args '"$on"'";';
130   fi
131   echo '  ;;';
132  fi
133 done
134
135 for o in $ARGS_MAP_OPTS
136 do
137  on=`echo $o | cut -d: -f1`
138  oa=`echo $o | cut -d: -f2`
139  or=`echo $o | cut -d: -f3`
140  if $DOS
141  then
142   sec=sec$SECTIONC
143   SECTIONC=`expr $SECTIONC + 1`
144   if $oa
145   then
146    cat <<_E_O_F_
147IF NOT "%k%" == "$on" GOTO ${sec}end
148SET _ARGV=%_ARGV% $or %1
149GOTO nextshift
150:${sec}end
151
152_E_O_F_
153   else
154    cat <<_E_O_F_
155IF NOT "%k%" == "$on" GOTO ${sec}end
156SET _ARGV=%_ARGV% $or
157GOTO next
158:${sec}end
159
160_E_O_F_
161   fi
162  else
163   echo "  '$on')";
164   if $oa
165   then
166    echo '   _args="$_args '"$or"' $1";';
167    echo '   shift;';
168   else
169    echo '   _args="$_args '"$or"'";';
170   fi
171   echo '  ;;';
172  fi
173 done
174
175 for o in $ARGS_DEEQ_OPTS
176 do
177  if $DOS
178  then
179   echo "REM IGNORED DEEQ: $o";
180   echo "Warning: can not compile DEEQ as target does not support DEEQ: $o" >&2
181  else
182   echo "  '$o='*)";
183   echo '   _para=`echo "$k" | cut -d= -f2`;';
184   echo '   _args="$_args '"$o"' $_para";';
185   echo '  ;;';
186  fi
187 done
188
189 for o in $ARGS_ENV_OPTS
190 do
191  on=`echo $o | cut -d: -f1`
192  or=`echo $o | cut -d: -f2`
193  if $DOS
194  then
195   sec=sec$SECTIONC
196   SECTIONC=`expr $SECTIONC + 1`
197   cat <<_E_O_F_
198IF NOT "%k%" == "$on" GOTO ${sec}end
199SET $or=%1
200GOTO nextshift
201:${sec}end
202_E_O_F_
203  else
204   echo "  '$on')";
205   echo "   export $or=\"\$1\"";
206   echo '   shift;';
207   echo '  ;;';
208   echo "  '$on='*)";
209   echo '   _para=`echo "$k" | cut -d= -f2`;';
210   echo "   export $or=\"\$_para\"";
211   echo '  ;;';
212  fi
213 done
214
215 if $DOS
216 then
217  : # we ignore this here and handle in the next section
218 else
219  cat <<_E_O_F_
220  '-'*)
221   echo "Unknown option" >&2;
222   exit 1;
223  ;;
224  *)
225_E_O_F_
226 fi
227
228 if $ARGS_PASS_NON_OPTS
229 then
230  if $DOS
231  then
232   echo "Warning: can not compile unknown options check in as target does not support it" >&2
233   echo "REM IGNORED UNKNOWN OPTION CHECK"
234   if $ARGS_END_OPTS_ON_NON_OPT
235   then
236    cat <<_E_O_F_
237SET _ARGV=%_ARGV% %k%
238GOTO mloopend
239_E_O_F_
240   else
241    echo 'GOTO addshift';
242   fi
243  else
244   echo '   _args="$_args $k";';
245   if $ARGS_END_OPTS_ON_NON_OPT
246   then
247    echo '   break;';
248   fi
249  fi
250 else
251  if $DOS
252  then
253   echo 'GOTO erruopt'
254  else
255   echo '   echo "Unknown option" >&2;';
256   echo '   exit 1;';
257  fi
258 fi
259
260 if $DOS
261 then
262  cat <<_E_O_F_
263
264GOTO next
265:pass
266SET _ARGV=%_ARGV% %k%
267GOTO next
268:passval
269SET _ARGV=%_ARGV% %k%
270:addshift
271SET _ARGV=%_ARGV% %1
272:nextshift
273SHIFT
274
275:next
276GOTO mloop
277:mloopend
278
279_E_O_F_
280 else
281  cat <<_E_O_F_
282  ;;
283 esac;
284done
285
286_E_O_F_
287 fi
288
289 if $ARGS_PASS_NON_OPTS
290 then
291  $DOS && echo "SET _ARGS=%_ARGS% %1 %2 %3 %4 %5 %6 %7 %8 %9"
292  $DOS || echo '_args="$_args $*";';
293 else
294  if $DOS
295  then
296   echo 'IF "%1%2%3%4%5%6%7%8%9" GOTO erruopt'
297  else
298   echo 'if [ "$*" != '' ]';
299   echo 'then';
300   echo ' echo "Unknown option" >&2;';
301   echo ' exit 1;';
302   echo 'fi';
303  fi
304 fi
305
306 if $DOS
307 then
308  cat <<_E_O_F_
309
310$RNAME %_ARGS%
311
312GOTO end
313
314:erruopt
315ECHO Unknown option
316EXIT 1
317GOTO end
318
319:help
320_E_O_F_
321  if [ "$HELPOPTS" != '' ]
322  then
323   sed 's/^$/./; s/^/echo /; s/</#/g; s/>/#/g;' $HELPFILE
324  fi
325  cat <<_E_O_F_
326GOTO end
327
328:end
329
330_E_O_F_
331 else
332  cat <<_E_O_F_
333
334exec $RNAME \$_args
335
336_E_O_F_
337 fi
338
339 echo
340 $DOS && echo 'REM ll'
341 $DOS || echo '#ll'
342} > $OUT
343
344chmod a+rx $OUT
345
346rm $HELPFILE
347
348exit 0;
349
350#ll
Note: See TracBrowser for help on using the repository browser.