RecomposePass.sh 6.77 KB
#!/bin/bash

#####################################################
# File :    RecomposePass.sh                        #
# Brief :   Get missing res pass from previous pass #
# Author :  Jean-François Rey                       #
# Version : 1.0                                     #
# Date :    25/07/13                                #
#####################################################

echo "### RecomposePass.sh ###"


# Check OTMEDIA_HOME env var
if [ -z ${OTMEDIA_HOME} ]
then
    OTMEDIA_HOME=$(dirname $(dirname $(readlink -e $0)))
    export OTMEDIA_HOME=$OTMEDIA_HOME
fi

# where is RecomposePass.sh
MAIN_SCRIPT_PATH=$(dirname $(readlink -e $0))

# Scripts Path
SCRIPT_PATH=$OTMEDIA_HOME/tools/scripts

# Include scripts
. $SCRIPT_PATH"/Tools.sh"
. $SCRIPT_PATH"/CheckSecondPass.sh"

# where is RescomposePass.cfg
RECOMPOSEPASS_CONFIG_FILE=$OTMEDIA_HOME"/cfg/RecomposePass.cfg"
if [ -e $RECOMPOSEPASS_CONFIG_FILE ]
then
	. $RECOMPOSEPASS_CONFIG_FILE
else
	echo "ERROR : Can't find configuration file $RECOMPOSEPASS_CONFIG_FILE" >&2
	exit 1
fi

#---------------#
# Parse Options #
#---------------#
while getopts ":hDv:" opt
do
	case $opt in
		h)
			echo -e "$0 [OPTIONS] <PASS_DIRECTORY>\n"
            echo -e "\t Options:"
            echo -e "\t\t-h :\tprint this message"
            echo -e "\t\t-D :\tDEBUG mode on"
            echo -e "\t\t-v l :\tVerbose mode, l=(1|2|3) level mode"
			exit 1
			;;
		D)
			DEBUG=1
			;;
        v)
            VERBOSE=$OPTARG
            ;;
		:)
			echo "Option -$OPTARG requires an argument." >&2 
			exit 1
			;;
		\?)
			echo "BAD USAGE : unknow opton -$OPTARG"
			#exit 1
			;;
	esac
done

# mode debug enable
if [ $DEBUG -eq 1 ]
then
       set -x
       echo -e "## Mode DEBUG ON ##"
fi

# mode verbose enable
if [ $VERBOSE -gt 0 ]; then echo -e "## Verbose level : $VERBOSE ##" ; fi

# Check USAGE by arguments number
if [ $(($#-($OPTIND-1))) -ne 1 ]
then
	echo "BAD USAGE : RecomposePass.sh [OPTIONS] <PASS_DIR>"
	echo "$0 -h for more info"
    exit 1
fi

shift $((OPTIND-1))
# check Pass directory - First argument
if [ -e $1 ] && [ -d $1 ]
then
    PASS_DIR=$(readlink -e $1)
else
	print_error "can't find $1 directory"
	exit 1
fi

#-------------#
# GLOBAL VARS #
#-------------#
BASENAME=$(basename $PASS_DIR)
OUTPUT_DIR_BASENAME=$PASS_DIR
RES_DIR="$PASS_DIR/res_all"
LOGFILE=$PASS_DIR"/info_recpass.log"
ERRORFILE=$PASS_DIR"/error_recpass.log"

THIRDPASS_CONFIG_FILE="$PASS_DIR/ThirdPass.cfg"
if [ -e $THIRDPASS_CONFIG_FILE ]
then
    RES_P3=$(cat $THIRDPASS_CONFIG_FILE | grep "^RES_DIR=" | cut -f2 -d"=")
else
    print_warn "[${BASENAME}] can't find $THIRDPASS_CONFIG_FILE file" 2
    #exit 1
fi
SECONDPASS_CONFIG_FILE="$PASS_DIR/SecondPass.cfg"
if [ -e $SECONDPASS_CONFIG_FILE ]
then
    RES_P2=$(cat $SECONDPASS_CONFIG_FILE | grep "^RES_DIR=" | cut -f2 -d"=")
else
    print_warn "[${BASENAME}] can't find $SECONDPASS_CONFIG_FILE file" 2
    #exit 1
fi
FIRSTPASS_CONFIG_FILE="$PASS_DIR/FirstPass.cfg"
if [ -e $FIRSTPASS_CONFIG_FILE ]
then
    RES_P1=$(cat $FIRSTPASS_CONFIG_FILE | grep "^RES_DIR=" | cut -f2 -d"=")
else
    print_warn "[${BASENAME}] can't find $FIRSTPASS_CONFIG_FILE file" 2
    #exit 1
fi

if ( [ -z "$RES_P1" ] && [ -z "$RES_P2" ] ) || [ -z $RES_P3 ]
then
    print_error "[${BASENAME}] No configuration pass files in $PASS_DIR -> exit"
    if [ $CHECK -eq 1 ]; then print_log_file $ERROFILE "No configuration pass files in $PASS_DIR -> exit";fi
    exit 1
fi

print_info "[${BASENAME}] => RecomposePass start | $(date +'%d/%m/%y %H:%M:%S')" 1

#------------------#
# Create WORKSPACE #
#------------------#

# Lock directory
if [ -e $OUTPUT_DIR_BASENAME/RECOMPOSEPASS.lock ] && [ $RERUN -eq 0 ]
then
   print_warn "[${BASENAME}] RECOMPOSEPASS is locked -> exit" 2
   exit 1
fi
rm "$OUTPUT_DIR_BASENAME/RECOMPOSEPASS.unlock" > /dev/null 2>&1
touch "$OUTPUT_DIR_BASENAME/RECOMPOSEPASS.lock" > /dev/null 2>&1

if [ $RERUN -eq 0 ]; then rm -r $RES_DIR > /dev/null 2>&1; fi
mkdir -p $RES_DIR 2> /dev/null
print_info "Make directory $RES_DIR" 3

#--------------------#
# Save configuration #
#--------------------#
cp $RECOMPOSEPASS_CONFIG_FILE $OUTPUT_DIR_BASENAME/RecomposePass.cfg
echo "RES_ALL=$RES_DIR" >> $OUTPUT_DIR_BASENAME/RecomposePass.cfg
echo "RES_P1=$RES_P1" >> $OUTPUT_DIR_BASENAME/RecomposePass.cfg
echo "RES_P2=$RES_P2" >> $OUTPUT_DIR_BASENAME/RecomposePass.cfg
echo "RES_P3=$RES_P3" >> $OUTPUT_DIR_BASENAME/RecomposePass.cfg
print_info "[${BASENAME}] Save config in $OUTPUT_DIR_BASENAME/RecomposePass.cfg" 1

#--------------------------------------------------#
# Recompose Pass using previous pass               #
#--------------------------------------------------#
print_info "[${BASENAME}] Launch Recompose Pass" 1

## Check seg in p3
print_info "cp res_p3 into res_all" 3
cp $RES_P3/*.res $RES_DIR
ls $RES_P3/*.res | sed -e "s|$RES_P3\/||g" | sed -e 's/\.res//' | sort > ${OUTPUT_DIR_BASENAME}/res_p3.tmp
ls $RES_P2/*.res | sed -e "s|$RES_P2\/||g" | sed -e 's/\.res//' | sort > ${OUTPUT_DIR_BASENAME}/res_p2.tmp
ls $RES_P1/*.res | sed -e "s|$RES_P1\/||g" | sed -e 's/\.res//' | sort > ${OUTPUT_DIR_BASENAME}/res_p1.tmp
diff_3_2=$(diff ${OUTPUT_DIR_BASENAME}/res_p3.tmp ${OUTPUT_DIR_BASENAME}/res_p2.tmp | grep -e "^> " | sed -e "s/> //")
print_info "cp missing res_p2 into res_all" 3
for res in $diff_3_2
do
    cp $RES_P2/$res.res $RES_DIR
done
ls $RES_DIR/*.res | sed -e "s|$RES_DIR\/||g" | sed -e 's/\.res//' | sort > ${OUTPUT_DIR_BASENAME}/res_all.tmp
diff_3_1=$(diff ${OUTPUT_DIR_BASENAME}/res_all.tmp ${OUTPUT_DIR_BASENAME}/res_p1.tmp | grep -e "^> " | sed -e "s/> //")
print_info "cp missing res_p1 into res_all" 3
for res in $diff_3_1
do
    cp $RES_P1/$res.res $RES_DIR
done

rm ${OUTPUT_DIR_BASENAME}/res_p3.tmp ${OUTPUT_DIR_BASENAME}/res_p2.tmp ${OUTPUT_DIR_BASENAME}/res_p1.tmp ${OUTPUT_DIR_BASENAME}/res_all.tmp 2> /dev/null

#---------------#
# Convert res   #
#---------------#

print_info "[${BASENAME}] Convert .res into .ctm" 1
# .res => .ctm
$SCRIPT_PATH/res2out.pl --dir $RES_DIR --format CTM --ignore $RULES/asupp --out ${OUTPUT_DIR_BASENAME}/${BASENAME}.allpass.ctm
print_info "[${BASENAME}] Convert .res into .trs" 1
# .res => .trs
echo -e "name $AUTHOR\nfileName ${BASENAME}\nfileExt wav\nsegFile ${OUTPUT_DIR_BASENAME}/${BASENAME}.seg" > ${OUTPUT_DIR_BASENAME}/${BASENAME}.trs_cfg
$SCRIPT_PATH/res2out.pl --dir $RES_DIR --format TRS --ignore $RULES/asupp --out ${OUTPUT_DIR_BASENAME}/${BASENAME}.allpass.trs --trs_config ${OUTPUT_DIR_BASENAME}/${BASENAME}.trs_cfg
rm ${OUTPUT_DIR_BASENAME}/${BASENAME}.trs_cfg
print_info "[${BASENAME}] Convert .res into .txt" 1
# .res => .txt
$SCRIPT_PATH/res2out.pl --dir $RES_DIR --format TXT --ignore $RULES/asupp --out ${OUTPUT_DIR_BASENAME}/${BASENAME}.allpass.txt


print_info "[${BASENAME}] <= RecomposePass End | $(date +'%d/%m/%y %H:%M:%S')" 1

# unlock directory
mv "$OUTPUT_DIR_BASENAME/RECOMPOSEPASS.lock" "$OUTPUT_DIR_BASENAME/RECOMPOSEPASS.unlock"