xref: /OpenGrok/tools/src/main/python/opengrok_tools/utils/hook.py (revision 2d57dc692b4dd10e696ca6922510f6cecded1bfd)
1#
2# CDDL HEADER START
3#
4# The contents of this file are subject to the terms of the
5# Common Development and Distribution License (the "License").
6# You may not use this file except in compliance with the License.
7#
8# See LICENSE.txt included in this distribution for the specific
9# language governing permissions and limitations under the License.
10#
11# When distributing Covered Code, include this CDDL HEADER in each
12# file and include the License file at LICENSE.txt.
13# If applicable, add the following below this CDDL HEADER, with the
14# fields enclosed by brackets "[]" replaced with your own identifying
15# information: Portions Copyright [yyyy] [name of copyright owner]
16#
17# CDDL HEADER END
18#
19
20#
21# Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
22#
23
24from .command import Command
25from .exitvals import (
26    FAILURE_EXITVAL,
27    SUCCESS_EXITVAL
28)
29
30
31def run_hook(logger, script, path, env, timeout):
32    """
33    Change a working directory to specified path, run a command
34    and change the working directory back to its original value.
35
36    Return 0 on success, 1 on failure.
37    """
38
39    ret = SUCCESS_EXITVAL
40    logger.debug("Running hook '{}' in directory {}".
41                 format(script, path))
42    cmd = Command([script], logger=logger, work_dir=path, env_vars=env,
43                  timeout=timeout, doprint=True)
44    cmd.execute()
45    if cmd.state != "finished" or cmd.getretcode() != SUCCESS_EXITVAL:
46        logger.error("command failed: {} -> {}".format(cmd, cmd.getretcode()))
47        ret = FAILURE_EXITVAL
48
49    return ret
50