#!/bin/sh

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

#
# This script generates the Enigmail XPI
#

echo "genxpi: Generating $1 in $3"

if [ $# -lt 5 ]; then
  echo "Wrong number of parameters"
  exit 1
fi

xpiFile=$1
xpiVersion="$2"
distDir="$3"
srcDir=$4
xpiModule=$5
enableLang=$6

cd ${srcDir}
cwd=`pwd`
cd "$distDir"
targetDir=`pwd`
cd "$cwd"

cp ${srcDir}/package/install.rdf ${targetDir}/install.rdf

# Prepare chrome.manifest
cat  ${srcDir}/package/chrome.manifest \
> ${targetDir}/chrome.manifest

# Prepare languages other than en-US

if [ "$enableLang" = "yes" ]; then
  if [ -s ${srcDir}/lang/current-languages.txt ]; then
    echo '' >> ${targetDir}/chrome.manifest
    echo '# Additional languages' >> ${targetDir}/chrome.manifest

    for lang in `cat ${srcDir}/lang/current-languages.txt`; do
      echo 'locale        enigmail    '$lang'       jar:chrome/enigmail.jar!/locale/'$lang'/' >> ${targetDir}/chrome.manifest
    done
  fi
fi


# cd ${srcDir}/package
cd "$targetDir"


mkdir -p "${targetDir}/wrappers"

cp ${cwd}/util/gpg-agent-wrapper.sh wrappers

echo "Creating ${xpiFile} file"

zip --must-match\
    ../${xpiFile} \
    components/${xpiModule}.xpt \
    components/${xpiModule}.js \
    components/prefs-service.js \
    components/msgCompFields.js \
    components/pgpmimeHandler.js \
    components/mimeEncrypt.js \
    defaults/preferences/enigmail.js \
    modules/app.jsm \
    modules/armor.jsm \
    modules/attachment.jsm \
    modules/card.jsm \
    modules/commandLine.jsm \
    modules/configure.jsm \
    modules/constants.jsm \
    modules/data.jsm \
    modules/decryption.jsm \
    modules/decryptPermanently.jsm \
    modules/dialog.jsm \
    modules/encryption.jsm \
    modules/core.jsm \
    modules/configBackup.jsm \
    modules/errorHandling.jsm \
    modules/funcs.jsm \
    modules/gpgAgent.jsm \
    modules/protocolHandler.jsm \
    modules/events.jsm \
    modules/execution.jsm \
    modules/expiry.jsm \
    modules/files.jsm \
    modules/filters.jsm \
    modules/fixExchangeMsg.jsm \
    modules/glodaMime.jsm \
    modules/glodaUtils.jsm \
    modules/gpg.jsm \
    modules/hash.jsm \
    modules/httpProxy.jsm \
    modules/installGnuPG.jsm \
    modules/key.jsm \
    modules/keyEditor.jsm \
    modules/keyRing.jsm \
    modules/keyserver.jsm \
    modules/lazy.jsm \
    modules/locale.jsm \
    modules/log.jsm \
    modules/mime.jsm \
    modules/mimeDecrypt.jsm \
    modules/mimeVerify.jsm \
    modules/os.jsm \
    modules/passwordCheck.jsm \
    modules/passwords.jsm \
    modules/pipeConsole.jsm \
    modules/prefs.jsm \
    modules/promise.jsm \
    modules/rules.jsm \
    modules/streams.jsm \
    modules/subprocess.jsm \
    modules/subprocess_worker_unix.js \
    modules/subprocess_worker_win.js \
    modules/system.jsm \
    modules/time.jsm \
    modules/timer.jsm \
    modules/trust.jsm \
    modules/uris.jsm \
    modules/verify.jsm \
    modules/windows.jsm \
    wrappers/gpg-agent-wrapper.sh \
    chrome/${xpiModule}.jar \
    chrome.manifest \
    install.rdf
