
/**
 * PyOtherSide: Asynchronous Python 3 Bindings for Qt 5
 * Copyright (c) 2014, Thomas Perl <m@thp.io>
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
 * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
 * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
 * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
 * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 * PERFORMANCE OF THIS SOFTWARE.
 **/

#include "pythonlib_loader.h"

#include <QStandardPaths>
#include <QDir>

namespace PythonLibLoader {

#if defined(PYTHONLIB_LOADER_HAVE_PYTHONLIB_ZIP)

bool extractPythonLibrary()
{
    QString source(":/io/thp/pyotherside/pythonlib.zip");
    QString destdir(QStandardPaths::writableLocation(QStandardPaths::TempLocation));
    QString destination(QDir(destdir).filePath("pythonlib.zip"));

    // Our embedded Python library should have priority over other path elements
    qputenv("PYTHONPATH", (destination + ":" + QString::fromUtf8(qgetenv("PYTHONPATH"))).toUtf8());

    if (QFile::exists(destination)) {
        return true;
    }

    return QFile::copy(source, destination);
}

#else /* PYTHONLIB_LOADER_HAVE_PYTHONLIB_ZIP */

bool extractPythonLibrary()
{
    // No need to extract the Python library
    return true;
}

#endif /* PYTHONLIB_LOADER_HAVE_PYTHONLIB_ZIP */

}; /* namespace PythonLibLoader */
