#!/bin/sh # -*- shell-script -*- # [ x"$1" = x-n ] && { TE=echo; shift; } || TE= e2 () { echo "$@" >&2; } ee () { e2 "$@"; exit 1; } erun () { e2 + "$@"; "$@"; } usage () { e2 Usage: $0 $cm "$@"; exit 1; } needvar () { [ x"$1" = x ] && { shift 1; "$@"; }; } startdate () { date sdate=`date +%s` } enddate () { date elapsed=`expr \`date +%s\` - $sdate` echo Execution time: `expr $elapsed / 60` min, `expr $elapsed % 60` secs. } cmd_mplex () # # # # run mplex with correct args { needvar "$3" usage ofile ifile1 ifile2 [ -f "$1" ] && ee Output file \`"$1"\' exists. [ -f "$2" ] || ee Input file \`"$2"\' does not exist. [ -f "$3" ] || ee Input file \`"$3"\' does not exist. startdate erun mplex -f 8 -o "$1" "$2" "$3" enddate } cmd_spumux () # # # # spumux subtitles to mpg file { needvar "$3" usage xmlfile ifile ofile [ -f "$1" ] || ee xml file file \`"$1"\' does not exist. [ -f "$2" ] || ee Input file \`"$2"\' does not exist. [ -f "$3" ] && ee Output file \`"$3"\' exists. startdate ( set -x; spumux "$1" < "$2" > "$3" ) enddate } cmd_pretest () # # test before author, using mplayer { needvar "$1" usage file.mpg mplayer -sid 0 "$1" } cmd_author () # # # # author to given outputdir { needvar "$2" usage input.xml outputdir [ -f "$1" ] || ee $1: not a file. [ -s "$2" ] && ee $2 exists. rm -rf "$2" startdate erun dvdauthor -o "$2" -x "$1" enddate } cmd_test () # # # # # test dvd image with xine { needvar "$1" usage '' case $1 in /*) erun xine dvd:$1/VIDEO_TS/ ;; *) erun xine dvd:`pwd`/$1/VIDEO_TS/ ;; esac } cmd_burn () # # # # # burn dvd image { needvar "$2" usage '' '' startdate erun growisofs -speed="$1" -dvd-compat -Z /dev/dvd -dvd-video -udf "$2" enddate } cmd_extract () # # # get data (back) from dvd image { needvar "$2" usage directory output-filename test -f "$1/VIDEO_TS" || ee Directory '"'$1/VIDEO_TS'"' does not exist erun tccat -i "$1" -T 1,-1 > "$2" } cmd_template () # # # create simple xml template for dvdauthor { needvar "$1" usage filenames... [ -f dvda-template.xml ] && ee dvda-template.xml exists. exec 3> dvda-template.xml blob='dvdauthor -o dvdimage -x dvdimage.xml xine dvd:`pwd`/dvdimage/VIDEO_TS/ growisofs -speed=4 -dvd-compat -Z /dev/dvd -dvd-video -udf dvdimage ... or use dvdatool commands.' echo '' >&3 echo >&3 for i in "$@"; do echo " " >&3; done cat >&3 <<'EOF' --/\/-- jump titleset 1 menu; jump titleset 2 menu; ---
 jump title 1; 
---
 jump title 1; 
...
EOF echo echo Created dvda-template.xml '(edit it!)'. echo echo Remember: "$blob" echo } # -- [ x"$1" = x ] && { echo echo Usage: $0 ' [args]' echo echo $0 commands available: echo sed -n '/^cmd_/ { s/cmd_/ /; s/ () [ -#]*/ / s/\(.\{11\}\) */\1/p; }' $0 echo echo Commands may be abbreviated down to no ambiguity echo exit 0 } cmd=$1; shift #case $cmd in # d) cmd=diff ;; #esac cc= cp= for m in `sed -n 's/^cmd_\([a-z0-9_]*\) (.*/\1/p' $0` do case $m in $cmd) cp= cc=$cmd cm=$cmd; break ;; $cmd*) cp=$cc; cc="$m $cc"; cm=$m ;; esac done [ x"$cc" = x ] && { echo $0: $cmd -- command not found.; exit 1; } [ x"$cp" != x ] && { echo $0: $cmd -- ambiquous command: matches $cc; exit 1; } cmd=$cm cmd_$cm "$@"