#!/usr/bin/env python3
#
# Copyright (c) 2014,Thibault Saunier <thibault.saunier@collabora.com>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the
# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
# Boston, MA 02110-1301, USA.

import os
import subprocess
import sys

LIBDIR = r'@LIBDIR@'
BUILDDIR = r'@BUILDDIR@'
SRCDIR = r'@SRCDIR@'
GIT_FIRST_HASH = 'da962d096af9460502843e41b7d25fdece7ff1c2'


def _get_git_first_hash(path):
    cdir = os.path.abspath(os.curdir)
    try:
        os.chdir(path)
        res = subprocess.check_output(['git', 'rev-list', '--max-parents=0', 'HEAD']).decode().rstrip('\n')
    except (subprocess.CalledProcessError, OSError):
        res = ''
    finally:
        os.chdir(cdir)

    return res


def _in_devel():
    root_dir = os.path.abspath(os.path.dirname(os.path.join(os.path.dirname(os.path.abspath(__file__)),
                                                            "..", "..", "..")))
    return _get_git_first_hash(root_dir) == GIT_FIRST_HASH


def _add_gst_launcher_path():
    f = os.path.abspath(__file__)
    if _in_devel():
        print("Running with development path")
        dir_ = os.path.dirname(os.path.abspath(__file__))
        root = os.path.split(dir_)[0]
    elif f.startswith(BUILDDIR):
        # Make sure to have the configured config.py in the python path
        sys.path.insert(0, os.path.abspath(os.path.join(BUILDDIR, "..")))
        root = os.path.abspath(os.path.join(SRCDIR, "../"))
    else:
        root = os.path.join(LIBDIR, 'gst-validate-launcher', 'python')

    sys.path.insert(0, root)
    return os.path.join(root, "launcher")


if "__main__" == __name__:
    libsdir = _add_gst_launcher_path()
    from launcher.main import main
    exit(main(libsdir))
