1#!/bin/bash 2 3export MLT_PROFILE=dv_pal 4export LC_NUMERIC=C 5 6function show_consumers( ) 7{ 8 awk -F '\t' '{ printf( "%d. %s\n", ++ i, $1 ); }' < consumers.ini 9} 10 11function get_consumer( ) 12{ 13 option=$1 14 [ "$option" != "" ] && [ $option -gt 0 ] && sed 's/\t\+/\t/g' < consumers.ini | cut -f 2 | head -n $option | tail -n -1 15} 16 17function show_menu( ) 18{ 19 sed 's/\t\+/\t/g' < demo.ini | 20 awk -F '\t' '{ printf( "%2d. %-30.30s", ++ i, $2 ); if ( i % 2 == 0 ) printf( "\n" ); } END { if ( i % 2 == 1 ) printf( "\n" ); }' 21} 22 23function check_dependencies( ) 24{ 25 option=$1 26 if [ $option -gt 0 ] 27 then 28 deps=`sed 's/\t\+/\t/g' < demo.ini | cut -f 3 | head -n $option | tail -n -1` 29 if [ "$deps" != "" ] 30 then 31 echo "$deps" | 32 tr ',' '\n' | 33 while read dep 34 do 35 ls $dep > /dev/null 2>&1 36 val=$? 37 [ $val != 0 ] && echo Failed to find $dep >&2 && echo $val 38 done 39 fi 40 echo 0 41 fi 42} 43 44function get_demo( ) 45{ 46 option=$1 47 if [ $option -gt 0 ] 48 then 49 cut -f 1 demo.ini | head -n $option | tail -n -1 50 fi 51} 52 53while [ 1 ] 54do 55 56 echo Select Consumer 57 echo 58 59 show_consumers 60 61 echo 62 echo 0. Exit 63 echo 64 echo -n "Option: " 65 read option 66 echo 67 68 [ "$option" == "0" ] && break 69 70 export MLT_CONSUMER=`get_consumer $option` 71 72 while [ "$option" != "0" -a "$MLT_CONSUMER" != "" ] 73 do 74 echo Choose Demo 75 echo 76 77 show_menu 78 79 echo 80 echo -n "Option: " 81 read option 82 echo 83 84 [ "$option" == "" ] && break 85 86 demo=`get_demo $option` 87 usable=`check_dependencies $option` 88 89 if [ "$usable" = "0" -a "$demo" != "" ] 90 then 91 if [ "$MLT_CONSUMER" == "xml:" ] 92 then export XML_CONSUMER="xml:$demo.mlt" 93 bash $demo -consumer $XML_CONSUMER 94 melt +$demo.txt out=100 $demo.mlt $demo.mlt -filter watermark:watermark1.png composite.fill=1 composite.geometry=85%/5%:10%x10% 95 elif [ "$MLT_CONSUMER" == "xml" ] 96 then bash $demo -consumer $MLT_CONSUMER | less 97 else bash $demo -consumer $MLT_CONSUMER 98 fi 99 elif [ "$usable" != "" ] 100 then 101 echo 102 echo Unable to locate suitable files for the demo - please provide them. 103 read pause 104 fi 105 106 stty sane 107 done 108 109done 110