Make cdparanoia-audio-tracks be silent
[clinton/abcde.git] / abcde
diff --git a/abcde b/abcde
index 0b78836..7252406 100755 (executable)
--- a/abcde
+++ b/abcde
@@ -11,7 +11,7 @@
 # Copyright for this work is to expire January 1, 2010, after which it
 # shall be public domain.
 
-VERSION="2.3.99-$Id$"
+VERSION="2.3.99-$Id $"
 
 usage ()
 {
@@ -325,15 +325,23 @@ do_replaygain()
                for OUTPUT in $( echo $OUTPUTTYPE | tr , \ )
                # THE OUTPUT NEEDS TO BE CORRECTED WITH THE CONTAINER?
                do
+                       case $OUTPUT in
+                               vorbis|ogg)
+                                       OUTPUT=$OGGOUTPUTCONTAINER
+                                       ;;
+                               flac)
+                                       OUTPUT=$FLACOUTPUTCONTAINER
+                                       ;;
+                       esac
                        OUTPUTFILES=""
                        for UTRACKNUM in $TRACKQUEUE
                        do
                                CDDBTRACKNUM=$(expr $UTRACKNUM - 1)
                                do_getcddbinfo TRACKNAME
                                splitvarious
-                               TRACKFILE=$(mungefilename "$TRACKNAME")
-                               ARTISTFILE=$(mungefilename "$TRACKARTIST")
-                               ALBUMFILE=$(mungefilename "$DALBUM")
+                               TRACKFILE="$(mungefilename "$TRACKNAME")"
+                               ARTISTFILE="$(mungefilename "$TRACKARTIST")"
+                               ALBUMFILE="$(mungefilename "$DALBUM")"
                                do_gettracknum
                                if [ "$VARIOUSARTISTS" = "y" ]; then
                                        OUTPUTFILE=$(eval echo $VAOUTPUTFORMAT)
@@ -343,13 +351,18 @@ do_replaygain()
                                OUTPUTFILES="$OUTPUTDIR/$OUTPUTFILE.$OUTPUT $OUTPUTFILES"
                        done
                        case "$OUTPUT" in
-                               flac);;
-                               ogg);;
+                               flac)
+                                       run_command replaygain-flac $METAFLAC --add-replay-gain $OUTPUTFILES
+                                       ;;
+                               vorbis|ogg)
+                                       run_command replaygain-vorbis $VORBISGAIN --album $OUTPUTFILES
+                                       ;;
                                *);;
                        esac
-                       echo vorbisgain-$OUTPUT >> "$ABCDETEMPDIR/status"
                done
-               echo vorbisgain >> "$ABCDETEMPDIR/status"
+               if checkerrors replaygain-.{3,6}; then :; else
+                       run_command replaygain true
+               fi
        fi
 }
 
@@ -370,34 +383,34 @@ splitvarious ()
        if [ "$VARIOUSARTISTS" = "y" ] && [ ! "$ONETRACK" = "y" ]; then
                case "$VARIOUSARTISTSTYLE" in
                forward)
-                       DTITLEARTIST=$(echo "$TRACKNAME" | sed 's- / -~-g')
-                       TRACKARTIST=$(echo "$DTITLEARTIST" | cut -f1 -d~)
-                       TRACKNAME=$(echo "$DTITLEARTIST" | cut -f2 -d~)
+                       DTITLEARTIST="$(echo "$TRACKNAME" | sed 's- / -~-g')"
+                       TRACKARTIST="$(echo "$DTITLEARTIST" | cut -f1 -d~)"
+                       TRACKNAME="$(echo "$DTITLEARTIST" | cut -f2 -d~)"
                        ;;
                forward-dash)
-                       DTITLEARTIST=$(echo "$TRACKNAME" | sed 's, - ,~,g')
-                       TRACKARTIST=$(echo "$DTITLEARTIST" | cut -f1 -d~)
-                       TRACKNAME=$(echo "$DTITLEARTIST" | cut -f2 -d~)
+                       DTITLEARTIST="$(echo "$TRACKNAME" | sed 's, - ,~,g')"
+                       TRACKARTIST="$(echo "$DTITLEARTIST" | cut -f1 -d~)"
+                       TRACKNAME="$(echo "$DTITLEARTIST" | cut -f2 -d~)"
                        ;;
                reverse)
-                       DTITLEARTIST=$(echo "$TRACKNAME" | sed 's- / -~-g')
-                       TRACKARTIST=$(echo "$DTITLEARTIST" | cut -f2 -d~)
-                       TRACKNAME=$(echo "$DTITLEARTIST" | cut -f1 -d~)
+                       DTITLEARTIST="$(echo "$TRACKNAME" | sed 's- / -~-g')"
+                       TRACKARTIST="$(echo "$DTITLEARTIST" | cut -f2 -d~)"
+                       TRACKNAME="$(echo "$DTITLEARTIST" | cut -f1 -d~)"
                        ;;
                reverse-dash)
-                       DTITLEARTIST=$(echo "$TRACKNAME" | sed 's, - ,~,g')
-                       TRACKARTIST=$(echo "$DTITLEARTIST" | cut -f2 -d~)
-                       TRACKNAME=$(echo "$DTITLEARTIST" | cut -f1 -d~)
+                       DTITLEARTIST="$(echo "$TRACKNAME" | sed 's, - ,~,g')"
+                       TRACKARTIST="$(echo "$DTITLEARTIST" | cut -f2 -d~)"
+                       TRACKNAME="$(echo "$DTITLEARTIST" | cut -f1 -d~)"
                        ;;
                colon)
-                       DTITLEARTIST=$(echo "$TRACKNAME" | sed 's-: -~-g')
-                       TRACKARTIST=$(echo "$DTITLEARTIST" | cut -f1 -d~)
-                       TRACKNAME=$(echo "$DTITLEARTIST" | cut -f2 -d~)
+                       DTITLEARTIST="$(echo "$TRACKNAME" | sed 's-: -~-g')"
+                       TRACKARTIST="$(echo "$DTITLEARTIST" | cut -f1 -d~)"
+                       TRACKNAME="$(echo "$DTITLEARTIST" | cut -f2 -d~)"
                        ;;
                trailing-paren)
-                       DTITLEARTIST=$(echo "$TRACKNAME" | sed 's,^\(.*\) (\(.*\)),\1~\2,')
-                       TRACKARTIST=$(echo "$DTITLEARTIST" | cut -f2 -d~)
-                       TRACKNAME=$(echo "$DTITLEARTIST" | cut -f1 -d~)
+                       DTITLEARTIST="$(echo "$TRACKNAME" | sed 's,^\(.*\) (\(.*\)),\1~\2,')"
+                       TRACKARTIST="$(echo "$DTITLEARTIST" | cut -f2 -d~)"
+                       TRACKNAME="$(echo "$DTITLEARTIST" | cut -f1 -d~)"
                        ;;
                esac
        elif [ "$VARIOUSARTISTS" = "y" ] && [ "$ONETRACK" = "y" ]; then
@@ -677,9 +690,7 @@ do_tag ()
                        ;;
                esac
        done
-       if checkerrors "tagtrack-(.{3,4})-$1"; then
-               run_command tagtrack-$1 false
-       else
+       if checkerrors "tagtrack-(.{3,6})-$1"; then :; else
                run_command tagtrack-$1 true
        fi
 
@@ -711,7 +722,7 @@ do_batch_encode ()
                        else
                                for UTRACKNUM in $TRACKQUEUE
                                do
-                                       echo encodetrack-$UTRACKNUM >> status
+                                       run_command encodetrack-$UTRACKNUM true
                                done
                        fi
                        )
@@ -860,9 +871,7 @@ do_encode ()
                        esac
                done
                # Only remove .wav if the encoding succeeded
-               if checkerrors "encodetrack-(.{3,4})-$1"; then 
-                       run_command encodetrack-$1 false
-               else
+               if checkerrors "encodetrack-(.{3,6})-$1"; then :; else
                        run_command encodetrack-$1 true
                        if [ ! "$KEEPWAVS" = "y" ] ; then
                                rm -f "$IN"
@@ -1055,11 +1064,11 @@ do_move ()
                # ''' -> ''
                # '?' -> ''
                # Eat control characters
-               ALBUMFILE=$(mungefilename "$DALBUM")
-               ARTISTFILE=$(mungefilename "$TRACKARTIST")
-               TRACKFILE=$(mungefilename "$TRACKNAME")
-               GENRE=$(mungegenre "$GENRE")
-               YEAR=$(echo $CDYEAR)
+               ALBUMFILE="$(mungefilename "$DALBUM")"
+               ARTISTFILE="$(mungefilename "$TRACKARTIST")"
+               TRACKFILE="$(mungefilename "$TRACKNAME")"
+               GENRE="$(mungegenre "$GENRE")"
+               YEAR="$(echo $CDYEAR)"
                # If we want to start the tracks with a given number, we need to modify the
                # TRACKNUM value before evaluation
        #       if [ -n "$STARTTRACKNUMBER" ] ; then
@@ -1073,9 +1082,9 @@ do_move ()
                # Supported variables for OUTPUTFORMAT are GENRE, ALBUMFILE, ARTISTFILE,
                # TRACKFILE, and TRACKNUM.
                if [ "$VARIOUSARTISTS" = "y" ]; then
-                       OUTPUTFILE=$(eval echo $VAOUTPUTFORMAT)
-                       else
-                       OUTPUTFILE=$(eval echo $OUTPUTFORMAT)
+                       OUTPUTFILE="$(eval echo "$VAOUTPUTFORMAT")"
+               else
+                       OUTPUTFILE="$(eval echo "$OUTPUTFORMAT")"
                fi
                if checkerrors "tagtrack-$OUTPUT-$1"; then :; else
                        # Once we know the specific output was successful, we can change the OUTPUT to the value containing the container
@@ -1088,7 +1097,7 @@ do_move ()
                                        ;;
                        esac
                        # Check that the directory for OUTPUTFILE exists, if it doesn't, create it
-                       OUTPUTFILEDIR=$(dirname "$OUTPUTDIR/$OUTPUTFILE")
+                       OUTPUTFILEDIR="$(dirname "$OUTPUTDIR/$OUTPUTFILE")"
                        # mkdir -p shouldn't return an error if the directory already exists
                        mkdir -p "$OUTPUTFILEDIR"
                        run_command movetrack-$1 mv "$ABCDETEMPDIR/track$1.$OUTPUT" "$OUTPUTDIR/$OUTPUTFILE.$OUTPUT"
@@ -1129,11 +1138,19 @@ do_playlist ()
 {
        for OUTPUT in $(echo $OUTPUTTYPE | tr , \ )
        do
+               case $OUTPUT in
+                       vorbis|ogg)
+                               OUTPUT=$OGGOUTPUTCONTAINER
+                               ;;
+                       flac)
+                               OUTPUT=$FLACOUTPUTCONTAINER
+                               ;;
+               esac
                # Create a playlist file for the playlist data to go into.
                # We used to wipe it out if it existed. Now we request permision if interactive.
                for LASTTRACK in $TRACKQUEUE; do :; done
-               ALBUMFILE=$(mungefilename "$DALBUM")
-               ARTISTFILE=$(mungefilename "$DARTIST")
+               ALBUMFILE="$(mungefilename "$DALBUM")"
+               ARTISTFILE="$(mungefilename "$DARTIST")"
                GENRE=$(mungegenre "$GENRE")
                YEAR=${CDYEAR:-$CDYEAR}
                if [ "$VARIOUSARTISTS" = "y" ] ; then
@@ -1172,9 +1189,9 @@ do_playlist ()
                                #TRACKNAME=$(grep ^TTITLE$CDDBTRACKNUM= "$CDDBDATA" | cut -f2 -d= | tr -d \[:cntrl:\] | sed 's/\ \+$//')
                                do_getcddbinfo TRACKNAME
                                splitvarious
-                               TRACKFILE=$(mungefilename "$TRACKNAME")
-                               ARTISTFILE=$(mungefilename "$TRACKARTIST")
-                               ALBUMFILE=$(mungefilename "$DALBUM")
+                               TRACKFILE="$(mungefilename "$TRACKNAME")"
+                               ARTISTFILE="$(mungefilename "$TRACKARTIST")"
+                               ALBUMFILE="$(mungefilename "$DALBUM")"
                                # If we want to start the tracks with a given number, we need to modify the
                                # TRACKNUM value before evaluation
                        #       if [ -n "$STARTTRACKNUMBER" ] ; then
@@ -1270,12 +1287,10 @@ do_discid ()
                                                if [ ! "$RET" = "0" ];then
                                                        echo "Warning: Something went wrong while querying the CD... Maybe a DATA CD?"
                                                fi
-                                               TRACKS="$( echo "$CDPARANOIAOUTPUT" | egrep '^[[:space:]]+[[:digit:]]' | tail -n 1 | get_first | tr -d "." | tr '\n' ' ' )"
+                                               TRACKS="$(echo "$CDPARANOIAOUTPUT" | egrep '^[[:space:]]+[[:digit:]]' | tail -n 1 | get_first | tr -d "." | tr '\n' ' ')"
                                                CDPARANOIAAUDIOTRACKS="$TRACKS"
                                        else
-                                               if [ -f "$ABCDETEMPDIR/status" ] && checkstatus cdparanoia-audio-tracks ; then
-                                                       TRACKS=$( cat "$ABCDETEMPDIR/cdparanoia-audio-tracks" )
-                                               else
+                                               if [ -f "$ABCDETEMPDIR/status" ] && TRACKS=$(checkstatus cdparanoia-audio-tracks); then :; else
                                                        TRACKS=$(echo $TRACKINFO | cut -f2 -d' ')
                                                fi
                                        fi
@@ -1406,10 +1421,8 @@ do_discid ()
        fi
        # If we got the CDPARANOIA status and it is not recorded, save it now
        if [ -n "$CDPARANOIAAUDIOTRACKS" ]; then
-               if checkstatus cdparanoia-audio-tracks; then :; else
-                       if echo "$CDPARANOIAAUDIOTRACKS" >> "$ABCDETEMPDIR/cdparanoia-audio-tracks"; then
-                               echo "cdparanoia-audio-tracks" >> "$ABCDETEMPDIR/status"
-                       fi
+               if checkstatus cdparanoia-audio-tracks > /dev/null 2>&1; then :; else
+                       echo cdparanoia-audio-tracks=$CDPARANOIAAUDIOTRACKS >> "$ABCDETEMPDIR/status"
                fi
        fi
        
@@ -2527,6 +2540,11 @@ do
        esac
 done
 
+if [ "$DONORMALIZE" = "y" ] && [ "$DOREPLAYGAIN" = "y" ]; then
+       # FIXME # should we abort on error or just inform the user?
+       :
+fi
+
 for SHOWCDDBFIELD in $(echo $SHOWCDDBFIELDS | tr , \ ); do
        case $SHOWCDDBFIELD in
                y*|Y*) SHOWCDDBYEAR="y";;
@@ -2631,7 +2649,7 @@ esac
 
 # Allow -o OUTPUT(1):OPTIONS(1),...,OUTPUT(N):OPTIONS(N) mode of operation
 if echo "$OUTPUTTYPE" | grep ":" > /dev/null 2>&1 ; then
-       for OUTPUT in $(echo $OUTPUTTYPE | tr , \ ); do
+       for OUTPUT in "$(echo "$OUTPUTTYPE" | tr , \ )"; do
                case "$OUTPUT" in
                        vorbis:*|ogg:*) OGGENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
                        mp3:*)  MP3ENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
@@ -2640,7 +2658,7 @@ if echo "$OUTPUTTYPE" | grep ":" > /dev/null 2>&1 ; then
                        mpc:*)  MPPENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
                esac
        done
-       for OUTPUT in $(echo $OUTPUTTYPE | tr , \ ); do
+       for OUTPUT in "$(echo "$OUTPUTTYPE" | tr , \ )"; do
                TEMPOUTPUT=$( echo "$OUTPUT" | cut -d: -f1 )
                TEMPOUTPUTTYPE="${TEMPOUTPUTTYPE:+$TEMPOUTPUTTYPE,}$TEMPOUTPUT"
        done
@@ -2912,7 +2930,7 @@ if [ "$DOCDDB" = "y" ]; then
        fi
        do_cddbedit
 
-       eval $($CDDBTOOL parse "$CDDBDATA")
+       eval "$($CDDBTOOL parse "$CDDBDATA")"
 fi
 
 # Before reading tracks, we set the speed of the device