#!/bin/sh
# ROX-AppDirGen AppRun - AppDirGen Installer

browser_select()
{
    for browser in firefox konquero seamonkey kazehakase galeon w3m ; do
        if `type $browser 1>& /dev/null` ; then
            if [ $browser == w3m ] ; then
		        browser="xterm -e w3m"
		    fi
		    break;
	    fi
    done
}

readme()
{
    browser_select
    pushd Help
    $browser index.html
    popd
}

term_select()
{
    for terminal in mlterm gnome-terminal konsole terminal xterm ;  do
        if [ -x "`which $terminal 2> /dev/null`" ]; then
            case $terminal in
                gnome-terminal|terminal)
                    opt="-x"
                    ;;
                *)
                    opt="-e"
                    ;;
            esac
			echo "$term"
            break
        fi
    done
	echo [["$term"]]
}

code_change()
{
    echo $1 | nkf $nkfopt
}

# start
curdir=`dirname $0`
cd $curdir
curdir=`pwd`

case $LANG in
    "ja_JP.UTF-8")
        nkfopt="-w"
        ;;
    "ja_JP.eucJP")
        nkfopt="-e"
        ;;
esac

if [ $# == 1 ]; then
    case $1 in
        -r)
            readme
            exit
            ;;
    esac
fi


term_select

# check requirement
for cmd in `cat "$curdir"/AppDirGen/Help/REQUIREMENT` ; do
    if ! [ -x "`which $cmd 2> /dev/null`" ]; then
        cmd_not="$cmd_not""echo $cmd\n"
    fi
done

if ! [ -z "$cmd_not" ]; then
    echo "#!/bin/sh" > "$HOME/cmd_not.err"
    echo "echo AppDirGenInstaller:"  >> "$HOME/cmd_not.err"
    echo -e "$cmd_not" >> "$HOME/cmd_not.err"
    echo "echo "`code_change "ʾΡAppDirGen ¹Ԥɬפʥޥɤޤ"` \
        >> "$HOME/cmd_not.err"
    echo "echo -e "`code_change "ޤѥå˥󥹥ȡ뤷Ʋ"` \
        >> "$HOME/cmd_not.err"
    echo "echo" >> "$HOME/cmd_not.err"
    echo "echo "`code_change "󥹥ȡߤޤ"` >> "$HOME/cmd_not.err"
    echo "echo" >> "$HOME/cmd_not.err"
    echo "read -p \"[Enter] "`code_change "ǽλޤ\""` >> "$HOME/cmd_not.err"
    chmod u+x "$HOME/cmd_not.err"
    $terminal $opt "$HOME/cmd_not.err"
    rm "$HOME/cmd_not.err"
    exit 1
fi

sysappdir=/usr/share/applications
app_name=AppDirGen
installdir=$HOME/Apps

# chaeck "Desktop entry files" directory
if ! [ -d "$sysappdir" ]; then
    echo "#!/bin/sh" > "$HOME/sysappdir_not.err"
    echo "echo AppDirGenInstaller:"  >> "$HOME/sysappdir_not.err"
    echo "echo "`code_change "ߥǥȥåץȥե¸ߤޤ"` >> "$HOME/sysappdir_not.err"
    echo "echo -e "`code_change "󥹥ȡߤޤ"` >> "$HOME/sysappdir_not.err"
    echo "echo" >> "$HOME/sysappdir_not.err"
    echo "read -p \"[Enter] "`code_change "ǽλޤ\""` >> "$HOME/sysappdir_not.err"
    chmod u+x "$HOME/sysappdir_not.err"
    $terminal $opt "$HOME/sysappdir_not.err"
    rm "$HOME/sysappdir_not.err"
    exit 1
fi

if ! [ -d "$installdir" ]; then
    mkdir -p "$installdir"
fi

# check version
if [ -f $installdir/AppDirGen/Help/VERSION ]; then
    srcver="`cat $app_name/Help/VERSION`"
    dstver="`cat $installdir/AppDirGen/Help/VERSION`"
    if [ `expr "$dstver" \>= "$srcver"` == 1 ] ; then
        echo > $HOME/ROX-AppDirGen.msg
        echo >> $HOME/ROX-AppDirGen.msg
        echo >> $HOME/ROX-AppDirGen.msg
        echo >> $HOME/ROX-AppDirGen.msg
        echo ǿΥС󤬥󥹥ȡѤߤǤ| nkf $nkfopt >> $HOME/ROX-AppDirGen.msg
        echo >> $HOME/ROX-AppDirGen.msg
        echo Hit Q-Enter >> $HOME/ROX-AppDirGen.msg
        $terminal $opt less $HOME/ROX-AppDirGen.msg
        rm $HOME/ROX-AppDirGen.msg
        exit 0
    fi
else
    echo First installation.
fi  

# remove old AppDirGen
if [ -d $HOME/Apps/AppDirGen ]; then
    rm -rf $HOME/Apps/AppDirGen
fi

# install AppDirGen
cp -a "$app_name" "$installdir"

# display START file
code_change
nkf $nkfopt "$curdir"/START > $HOME/START.tmp
echo >> $HOME/START.tmp
echo Hit 'Q' - Enter to start instllation. | nkf $nkfopt >> $HOME/START.tmp
echo >> $HOME/START.tmp
$terminal $opt less $HOME/START.tmp && rox -s "$installdir"/"$app_name"
rm $HOME/START.tmp

# regist AppDirGen extention entry to "~/rox_startup" script
app_dir_ext=$installdir/$app_name/AppDirGen_extend

if ! [ -x $HOME/bin/rox_startup ]; then
    echo "#!/bin/bash" > $HOME/bin/rox_startup
    chmod u+x $HOME/bin/rox_startup
fi
if [ -z "`grep "# $app_name" $HOME/bin/rox_startup`" ]; then
    cat << EOF >> $HOME/bin/rox_startup
# $app_name
if [ -x "$app_dir_ext" ]; then
    "$app_dir_ext" &
fi
EOF
fi

# generate AppDirGen extention body
cat << EOF > $app_dir_ext
#!/bin/bash
# Generated by AppDirGenInstaller/AppRun #
confdir=$HOME/.config/AppDirGen
appdir=$HOME/Apps/AppDirGen
if ! [ -d \$confdir ]; then
    mkdir -p \$confdir
    date +%y%m%d > \$confdir/today
    sleep 3
    $HOME/Apps/AppDirGen/AppRun
    exit
fi
date +%y%m%d > \$confdir/today.tmp
if ! diff -q \$confdir/today \$confdir/today.tmp > /dev/null; then
    rm \$confdir/today 2> /dev/null
    cp \$confdir/today.tmp \$confdir/today
    tree /usr/share/applications/ > \$appdir/app_tree.tmp
    if [ -f \$appdir/app_tree ]; then
        if ! diff -q \$appdir/app_tree \$appdir/app_tree.tmp > /dev/null; then
            rm \$appdir/app_tree.tmp 2> /dev/null
            sleep 3
            $HOME/Apps/AppDirGen/AppRun
        fi
    else
        rm \$appdir/app_tree.tmp 2> /dev/null
        sleep 3
        $HOME/Apps/AppDirGen/AppRun
    fi
fi
rm \$confdir/today.tmp 2> /dev/null
rm \$appdir/app_tree.tmp 2> /dev/null
EOF

chmod u+x $app_dir_ext
sleep 2
$HOME/Apps/AppDirGen/AppRun

