#!/bin/sh

set -eu

command=$1
shift

marvinsuite_dir='/opt/chemaxon/marvinsuite'

case "${command}" in
    configure)
	upstream_dir=$1

	mkdir -p "$(dirname "$marvinsuite_dir")"
	ln -fns "${upstream_dir}${marvinsuite_dir}" \
		"$marvinsuite_dir"

	ln -fns "${marvinsuite_dir}/LicenseManager" \
		/usr/local/bin/LicenseManager.orig
	ln -fns "${marvinsuite_dir}/MarvinSketch" \
		/usr/local/bin/MarvinSketch.orig
	ln -fns "${marvinsuite_dir}/MarvinView" \
		/usr/local/bin/MarvinView.orig

	ln -fns "${marvinsuite_dir}/bin/molconvert" \
		/usr/local/bin/molconvert
	ln -fns "${marvinsuite_dir}/bin/cxcalc" \
		/usr/local/bin/cxcalc
	ln -fns "${marvinsuite_dir}/bin/cxtrain" \
		/usr/local/bin/cxtrain
	ln -fns "${marvinsuite_dir}/bin/evaluate" \
		/usr/local/bin/evaluate
	ln -fns "${marvinsuite_dir}/bin/mview" \
		/usr/local/bin/mview
	ln -fns "${marvinsuite_dir}/bin/msketch" \
		/usr/local/bin/msketch

	ln -fns "${marvinsuite_dir}/bin/molconvert" \
		/usr/bin/molconvert
	ln -fns "${marvinsuite_dir}/bin/msketch" \
		/usr/bin/msketch
	ln -fns "${marvinsuite_dir}/bin/mview" \
		/usr/bin/mview

        cat <<EOF > /usr/local/bin/LicenseManager
#!/bin/sh
# This folder is needed for proper functionality
mkdir -p ~/.chemaxon
# Fix 3d view on devices where default GL version is too new
export MESA_GL_VERSION_OVERRIDE=2.0

/usr/local/bin/LicenseManager.orig
EOF

        cat <<'EOF' > /usr/local/bin/MarvinSketch
#!/bin/sh
# This folder is needed for proper functionality
mkdir -p ~/.chemaxon
# Fix 3d view on devices where default GL version is too new
export MESA_GL_VERSION_OVERRIDE=2.0


setup_mimetypes() {
  # mimetype associations
  MRVFILE="${HOME}/.local/share/applications/marvin-document-mrv.desktop"
  if [ -f $MRVFILE ]; then
    echo "mimetypes ok"
    return
  fi
  echo "setting up mimetypes"
  mkdir -p ~/.local/share/applications
  cat <<-EOF > ~/.local/share/applications/marvin-document-mrv.desktop
	[Desktop Entry]
	Type=Application
	Name=MarvinSketch
	MimeType=application/x-marvin-document-mrv;
	Exec=/usr/local/bin/MarvinSketch %f
	NoDisplay=true
	StartupNotify=true
	Icon=/opt/chemaxon/marvinsuite/.install4j/MarvinSketch.png
	EOF

  mkdir -p ~/.local/share/mime/application
  cat <<-EOF > ~/.local/share/mime/application/x-marvin-document-mrv.xml
	<?xml version="1.0" encoding="utf-8"?>
	<mime-type xmlns="http://www.freedesktop.org/standards/shared-mime-info" type="application/x-marvin-document-mrv">
	  <!--Created automatically by update-mime-database. DO NOT EDIT!-->
	  <glob pattern="*.mrv"/>
	  <comment>Marvin Document</comment>
	</mime-type>
	EOF

  mkdir -p ~/.local/share/mime/packages
  cat <<-EOF > ~/.local/share/mime/packages/application-x-marvin-document-mrv.xml
	<?xml version="1.0" encoding="UTF-8"?>
	<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
	  <mime-type type="application/x-marvin-document-mrv">
	    <glob pattern="*.mrv"/>
	    <comment>Marvin Document</comment>
	  </mime-type>
	</mime-info>
	EOF

  xdg-mime default marvin-document-mrv.desktop \
       application/x-marvin-document-mrv
  update-mime-database ~/.local/share/mime
}

setup_mimetypes

/usr/local/bin/MarvinSketch.orig "$@"
EOF

        cat <<EOF > /usr/local/bin/MarvinView
#!/bin/sh
# This folder is needed for proper functionality
mkdir -p ~/.chemaxon
# Fix 3d view on devices where default GL version is too new
export MESA_GL_VERSION_OVERRIDE=2.0

/usr/local/bin/MarvinView.orig
EOF
        chmod 0755 /usr/local/bin/LicenseManager
        chmod 0755 /usr/local/bin/MarvinSketch
        chmod 0755 /usr/local/bin/MarvinView

	cat <<EOF > /usr/share/applications/LicenseManager.desktop
[Desktop Entry]
Type=Application
Name=LicenseManager
Exec=sh -c '/usr/local/bin/LicenseManager'
Icon=${upstream_dir}/opt/chemaxon/marvinsuite/.install4j/LicenseManager.png
EOF
	cat <<EOF > /usr/share/applications/MarvinSketch.desktop
[Desktop Entry]
Type=Application
Name=MarvinSketch
Exec=sh -c '/usr/local/bin/MarvinSketch'
Icon=${upstream_dir}/opt/chemaxon/marvinsuite/.install4j/MarvinSketch.png
EOF
	cat <<EOF > /usr/share/applications/MarvinView.desktop
[Desktop Entry]
Type=Application
Name=MarvinView
Exec=sh -c '/usr/local/bin/MarvinView'
Icon=${upstream_dir}/opt/chemaxon/marvinsuite/.install4j/MarvinView.png
EOF
	;;
    unconfigure)
	rm -f "$marvinsuite_dir"                             \
	      /usr/bin/molconvert                            \
	      /usr/bin/msketch                               \
	      /usr/bin/mview                                 \
	      /usr/local/bin/cxcalc                          \
	      /usr/local/bin/cxtrain                         \
	      /usr/local/bin/evaluate                        \
	      /usr/local/bin/LicenseManager                  \
	      /usr/local/bin/LicenseManager.orig             \
	      /usr/local/bin/MarvinSketch                    \
	      /usr/local/bin/MarvinSketch.orig               \
	      /usr/local/bin/MarvinView                      \
	      /usr/local/bin/MarvinView.orig                 \
	      /usr/local/bin/molconvert                      \
	      /usr/local/bin/msketch                         \
	      /usr/local/bin/mview                           \
	      /usr/share/applications/LicenseManager.desktop \
	      /usr/share/applications/MarvinSketch.desktop   \
	      /usr/share/applications/MarvinView.desktop
	rmdir --ignore-fail-on-non-empty "$(dirname "$marvinsuite_dir")"
	;;
    unpack)
	upstream_pack=$1
	upstream_dir=$2
	dpkg -x "$upstream_pack" "$upstream_dir"
	chmod 0755 "$upstream_dir"
	;;
    *)
	;;
esac
