#!/usr/bin/python3
# -*- coding: utf-8 -*-

"""
 (c) 2018 - Copyright Red Hat Inc

 Authors:
   Patrick Uiterwijk <puiterwijk@redhat.com>

"""

import os
import sys

# These fields get filled in by upload-repospanner-hooks
os.environ['PAGURE_CONFIG'] = '${config}'
PYPATH = "${pypath}"

# Prepare code imports
if PYPATH:
    sys.path.append(PYPATH)

import pagure
import pagure.lib
from pagure.hooks import run_project_hooks, extract_changes
from pagure.config import config as pagure_config


# Get information from the environment
hooktype = os.environ.get('HOOKTYPE')

is_internal = os.environ.get('extra_internal', False) == 'yes'
pushuser = os.environ['extra_username']
repotype = os.environ['extra_repotype']
project_name = os.environ['extra_project_name']
project_user = os.environ.get('extra_project_user', None)
project_namespace = os.environ.get('extra_project_namespace', None)
pruid = os.environ.get('extra_pull_request_uid', None)

changes = extract_changes(from_stdin=hooktype != 'update')

session = pagure.lib.create_session(pagure_config["DB_URL"])
if not session:
    raise Exception("Unable to initialize db session")

gitdir = os.path.abspath(os.environ["GIT_DIR"])

project = pagure.lib._get_project(
    session, project_name, project_user, project_namespace
)

pull_request = None
if pruid:
    pull_request = pagure.lib.get_request_by_uid(
        session, os.environ["pull_request_uid"]
    )

run_project_hooks(
    session,
    pushuser,
    project,
    hooktype,
    repotype,
    gitdir,
    changes,
    is_internal,
    pull_request
)
