#!/bin/sh

# {{{ Copyright
# Copyright 2014 David Woodfall <dave@studioware.org>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# }}}
FLUXDIR=/usr/share/studioware/fluxbox
LOCALAPPS=$HOME/.local/share/applications
ROOTAPPS=/usr/share/applications

SYSTEM=$FLUXDIR/studioware-audio-system
RECORD=$FLUXDIR/studioware-audio-record
MIX=$FLUXDIR/studioware-audio-mix
MASTER=$FLUXDIR/studioware-audio-master
FX=$FLUXDIR/studioware-audio-fx
MIDI=$FLUXDIR/studioware-audio-midi
LOOPERS=$FLUXDIR/studioware-audio-loopers
SEQS=$FLUXDIR/studioware-audio-sequencers
SAMPLERS=$FLUXDIR/studioware-audio-samplers
SYNTHS=$FLUXDIR/studioware-audio-synths
PERCUSSION=$FLUXDIR/studioware-audio-percussion
EDIT=$FLUXDIR/studioware-audio-edit
NON=$FLUXDIR/studioware-audio-non
SESSION=$FLUXDIR/studioware-audio-session
OTHER=$FLUXDIR/studioware-audio-other

PHOTO=$FLUXDIR/studioware-photo
VIDEO=$FLUXDIR/studioware-video

echo -n "" > $SYSTEM
echo -n "" > $RECORD
echo -n "" > $MIX
echo -n "" > $MASTER
echo -n "" > $FX
echo -n "" > $MIDI
echo -n "" > $LOOPERS
echo -n "" > $SEQS
echo -n "" > $SAMPLERS
echo -n "" > $SYNTHS
echo -n "" > $PERCUSSION
echo -n "" > $EDIT
echo -n "" > $NON
echo -n "" > $SESSION
echo -n "" > $OTHER
echo -n "" > $VIDEO
echo -n "" > $PHOTO

write()
{
    CAT=$(grep X-Studioware $1 | grep -i $2)

    if [ -z "$CAT" ]; then
        return 1
    else
        MENU=$3
    fi

    NAME=$(grep ^Name= $1 | cut -d= -f2)
    EXEC=$(grep ^Exec= $1 | cut -d= -f2)
    echo Found $1
    echo "[exec] ($NAME) {$EXEC}" >> $MENU
}

echo Processing Audio...
find $ROOTAPPS -name \*.desktop | \
    xargs grep -H X-Studioware-Audio | cut -d: -f1 | while read d
do
    write $d SYSTEM $SYSTEM
    write $d MIX $MIX
    write $d MASTER $MASTER
    write $d MIDI $MIDI
    write $d RECORD $RECORD
    write $d FX $FX
    write $d SEQUENCERS $SEQS
    write $d LOOPERS $LOOPERS
    write $d SAMPLERS $SAMPLERS
    write $d SYNTHS $SYNTHS
    write $d PERCUSSION $PERCUSSION
    write $d EDIT $EDIT
    write $d NON $NON
    write $d SESSION $SESSION
done

find $ROOTAPPS -name \*.desktop | \
    xargs grep -H X-Studioware-Audio\;$ | cut -d: -f1 | while read d
do
    NAME=$(grep ^Name= $d | cut -d= -f2)
    EXEC=$(grep ^Exec= $d | cut -d= -f2)
    echo Found $d
    echo "[exec] ($NAME) {$EXEC}" >> $OTHER
done

echo Processing Video...
find $ROOTAPPS -name \*.desktop | \
    xargs grep -H X-Studioware-Video | cut -d: -f1 | while read d
do
    NAME=$(grep ^Name= $d | cut -d= -f2)
    EXEC=$(grep ^Exec= $d | cut -d= -f2)
    echo Found $d
    echo "[exec] ($NAME) {$EXEC}" >> $VIDEO
done

echo Processing Photo...
find $ROOTAPPS -name \*.desktop | \
    xargs grep -H X-Studioware-Photo | cut -d: -f1 | while read d
do
    NAME=$(grep ^Name= $d | cut -d= -f2)
    EXEC=$(grep ^Exec= $d | cut -d= -f2)
    echo Found $d
    echo "[exec] ($NAME) {$EXEC}" >> $PHOTO
done

