#!/usr/bin/env python # -*- coding: utf-8 -*- """ (c) 2018 - Copyright Red Hat Inc Authors: Patrick Uiterwijk """ from __future__ import print_function 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.query from pagure.hooks import run_project_hooks, extract_changes from pagure.config import config as pagure_config # Get information from the environment hooktype = os.path.basename(sys.argv[0]) 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) or None project_namespace = os.environ.get("extra_project_namespace", None) or None pruid = os.environ.get("extra_pull_request_uid", None) changes = extract_changes(from_stdin=hooktype != "update") session = pagure.lib.query.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.query._get_project( session, project_name, project_user, project_namespace ) if not project: print("No project found") sys.exit(1) pull_request = None if pruid: pull_request = pagure.lib.query.get_request_by_uid( session, pruid ) run_project_hooks( session, pushuser, project, hooktype, repotype, gitdir, changes, is_internal, pull_request, )