#!/bin/sh

if test -z "${SRC_ROOT}"; then
    echo "distro-install-clean-up: No environment set!"
    exit 1
fi

PRODUCTVERSION_NODOT=`echo $PRODUCTVERSION | sed -e "s/\.//"`

mkdir -p $DESTDIR$PREFIXDIR/bin


create_wrapper()
{
    echo "Install $PREFIXDIR/bin/$1"

    if test -L "$DESTDIR$PREFIXDIR/bin/$1" ; then
        # do not overwrite $PREFIXDIR/bin/libreoffice symlink created by create_tree.sh
        # the symlink is necessary by java UNO components to find
        # the UNO installation using $PATH; this function used to be provided
        # by $PREFIXDIR/bin/soffice symlink, see
        # http://udk.openoffice.org/common/man/spec/transparentofficecomponents.html
        # Note: if you want to support parallel installation of more OOo versions
        #       you cannot include this link directly into the package
        #       For example, the Novell package mark this symlink as %ghost
        #	and update it in %post and %postun
        echo "     skip already existing symlink $PREFIXDIR/bin/$1"
    else
        mkdir -p $DESTDIR$PREFIXDIR/bin
        cat <<EOT >$DESTDIR$PREFIXDIR/bin/$1
#!/bin/sh
$INSTALLDIR/program/$2 $3 "\$@"
EOT
        chmod 755 $DESTDIR$PREFIXDIR/bin/$1
    fi
    # put into file list
    test -f "$DESTDIR/$4" && echo "$PREFIXDIR/bin/$1" >>$DESTDIR/$4
}

create_man_link()
{
    echo "Install $MANDIR/man1/$1.1.gz"

    mkdir -p $DESTDIR$MANDIR/man1
    echo ".so man1/$2.1" >| $DESTDIR$MANDIR/man1/$1.1
    gzip -f $DESTDIR$MANDIR/man1/$1.1
    test -f "$DESTDIR/$3" && echo "$MANDIR/man1/$1.1.gz" >>"$DESTDIR/$3"
}

install_man()
{
    echo "Install $MANDIR/man1/$1.1.gz"

    mkdir -p $DESTDIR$MANDIR/man1
    cp sysui/desktop/man/$1.1 $DESTDIR$MANDIR/man1 || exit 1;
    gzip -f $DESTDIR$MANDIR/man1/$1.1
    test -f "$DESTDIR/$2" && echo "$MANDIR/man1/$1.1.gz" >>"$DESTDIR/$2"
}


add_wrapper()
{
    lowrapper_name="$1"
    target_binary="$2"
    target_option_1="$3"
    used_man_page="$4"
    desktop_file="$5"
    file_list="$6"

    # do we want compat oowrapper?
    oowrapper_name=""
    if test "$WITH_COMPAT_OOWRAPPERS" = 'TRUE' ; then
        oowrapper_name=`echo "$lowrapper_name" | sed -e "s/^lo/oo/"`
        # "oo" prefix only for wrappers stating with "lo" prefix
        test "$oowrapper_name" = "$lowrapper_name" && oowrapper_name=
    fi

    # wrappers
    create_wrapper "$lowrapper_name" "$target_binary" "$target_option_1" "$file_list"
    test -n "$oowrapper_name" && create_wrapper "$oowrapper_name" "$target_binary" "$target_option_1" "$file_list"

    # man pages
    if test "$used_man_page" = "$lowrapper_name" ; then
        # need to install the manual page
        install_man "$lowrapper_name" "$file_list"
    else
        # just link the manual page
        create_man_link "$lowrapper_name" "$used_man_page" "$file_list"
    fi
    test -n "$oowrapper_name" && create_man_link "$oowrapper_name" "$used_man_page" "$file_list"

    # add desktop file to the right file list
    test -n "$desktop_file" -a -f "$DESTDIR/$file_list" && echo "$PREFIXDIR/share/applications/$desktop_file" >>"$DESTDIR/$file_list"
}

# install desktop integration from plain packages
sysui_temp=`mktemp -t -d distro-pack-desktop-integration-XXXXXX`
cp -a workdir/CustomTarget/sysui/share/libreoffice/* "$sysui_temp"
cp -a sysui/desktop/share/create_tree.sh "$sysui_temp"
builddir=`pwd`
cd $sysui_temp
# we want non-versioned stuff in the distro packages
sed -i \
    -e "s/\($INSTALLDIRNAME\)$PRODUCTVERSION_NODOT/\1/" \
    -e "s/\($INSTALLDIRNAME\)$PRODUCTVERSION/\1/" \
    -e "s/\($PRODUCTNAME\) $PRODUCTVERSION/\1/" \
    *
# call in subshell to do not malfrom PRODUCTVERSION, ...
(
    export OFFICE_PREFIX=$LIBDIR
    export PREFIX=$INSTALLDIRNAME
    export ICON_PREFIX=$INSTALLDIRNAME
    export ICON_SOURCE_DIR=$builddir/sysui/desktop/icons
    export PRODUCTVERSION=
    export KDEMAINDIR=$PREFIXDIR
    export PREFIXDIR=${PREFIXDIR}
    export GNOMEDIR=$PREFIXDIR
    export GNOME_MIME_THEME=hicolor
    bash ./create_tree.sh
)
cd -
rm -rf $sysui_temp

# we do not want some stuff from the plain packages
if test -d $DESTDIR/opt ; then
    rm -f $DESTDIR/opt/$INSTALLDIRNAME
    rmdir --ignore-fail-on-non-empty $DESTDIR/opt
fi

# we want non-versioned desktop files
cd $DESTDIR/$INSTALLDIR/share/xdg
# we want non-versioned stuff in the distro packages
sed -i \
    -e "s/\($INSTALLDIRNAME\)$PRODUCTVERSION_NODOT/\1/" \
    -e "s/\($INSTALLDIRNAME\)$PRODUCTVERSION/\1/" \
    -e "s/\($PRODUCTNAME\) $PRODUCTVERSION/\1/" \
    *.desktop
cd -

# put the stuff installed by create_tree.sh into the right file lists
# desktop files will be added by the corresponding add_wrapper command
if test -f $DESTDIR/gid_Module_Root_Brand ; then
    for dir in $PREFIXDIR/share/application-registry \
               $PREFIXDIR/share/mimelnk/application \
               $PREFIXDIR/share/mime/packages \
               $PREFIXDIR/share/mime-info \
               $PREFIXDIR/share/icons ; do
        find "$DESTDIR$dir" \( -type f -o -type l \) -printf "$dir/%P\n" >>$DESTDIR/gid_Module_Root_Brand
    done
fi

# wrappers and man pages
# FIXME: do not have desktop file and MIME icon for unopkg
add_wrapper lobase         soffice "--base"       "libreoffice" "libreoffice-base.desktop"        "gid_Module_Brand_Prg_Base"
add_wrapper localc         soffice "--calc"       "libreoffice" "libreoffice-calc.desktop"        "gid_Module_Brand_Prg_Calc"
add_wrapper lodraw         soffice "--draw"       "libreoffice" "libreoffice-draw.desktop"        "gid_Module_Brand_Prg_Draw"
add_wrapper lomath         soffice "--math"       "libreoffice" "libreoffice-math.desktop"        "gid_Module_Brand_Prg_Math"
add_wrapper loimpress      soffice "--impress"    "libreoffice" "libreoffice-impress.desktop"     "gid_Module_Brand_Prg_Impress"
add_wrapper loweb          soffice "--web"        "libreoffice" ""                                "gid_Module_Brand_Prg_Wrt"
add_wrapper lowriter       soffice "--writer"     "libreoffice" "libreoffice-writer.desktop"      "gid_Module_Brand_Prg_Wrt"
add_wrapper lofromtemplate soffice ".uno:NewDoc"  "libreoffice" ""                                "gid_Module_Root_Brand"
add_wrapper libreoffice    soffice ""            "libreoffice" "libreoffice-startcenter.desktop" "gid_Module_Root_Brand"
add_wrapper loffice        soffice ""            "libreoffice" ""                                "gid_Module_Root_Brand"
add_wrapper unopkg         unopkg  ""            "unopkg"      ""                                "gid_Module_Root_Brand"

# there are two more desktop files for optional filters
test -f $DESTDIR/gid_Module_Optional_Xsltfiltersamples && echo "$PREFIXDIR/share/applications/libreoffice-xsltfilter.desktop" >>"$DESTDIR/gid_Module_Optional_Xsltfiltersamples"

# $PREFIXDIR/bin/ooffice symlink is necessary by java UNO components to find
# the UNO installation using $PATH, see
# http://udk.openoffice.org/common/man/spec/transparentofficecomponents.html
# Note: if you want to support parallel installation of more OOo versions
#       you cannot include this link directly into the package
#       For example, the Novell package mark this symlink as %ghost
#	and update it in %post and %postun
ln -sf $INSTALLDIR/program/soffice $DESTDIR$PREFIXDIR/bin/soffice
test -f $DESTDIR/gid_Module_Root_Brand && echo "$PREFIXDIR/bin/soffice" >>$DESTDIR/gid_Module_Root_Brand

# create bash completion
mkdir -p $DESTDIR/etc/bash_completion.d
./bin/generate-bash-completion bin/bash-completion.in $DESTDIR/etc/bash_completion.d/$INSTALLDIRNAME.sh
test -f $DESTDIR/gid_Module_Root_Brand && echo "/etc/bash_completion.d/$INSTALLDIRNAME.sh" >>$DESTDIR/gid_Module_Root_Brand
if test "$WITH_COMPAT_OOWRAPPERS" = "TRUE" ; then
    ./bin/generate-bash-completion --compat-oowrappers bin/bash-completion.in $DESTDIR/etc/bash_completion.d/ooffice.sh
    test -f $DESTDIR/gid_Module_Root_Brand && echo "/etc/bash_completion.d/ooffice.sh" >>$DESTDIR/gid_Module_Root_Brand
fi

echo "Install $OOINSTDIR/basis$VERSION/program/java-set-classpath";
mkdir -p $DESTDIR$INSTALLDIR/program
sed -e "s|@INSTALLDIR@|$INSTALLDIR|g" bin/java-set-classpath.in >| "$DESTDIR$INSTALLDIR/program/java-set-classpath" || exit 1;
chmod 755 "$DESTDIR$INSTALLDIR/program/java-set-classpath"
test -f $DESTDIR/gid_Module_Root_Brand && echo "$INSTALLDIR/program/java-set-classpath" >>$DESTDIR/gid_Module_Root_Brand

exit 0