xref: /OpenGrok/tools/src/main/python/opengrok_tools/scm/perforce.py (revision ae5b3cb81c9e71cf489cd9e38e66f063f1180c30)
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, 2021, Oracle and/or its affiliates. All rights reserved.
22# Portions Copyright 2020 Robert Williams
23# Portions Copyright (c) 2020, Krystof Tulinger <k.tulinger@seznam.cz>
24#
25
26from shutil import which
27
28from .repository import Repository, RepositoryException
29
30
31class PerforceRepository(Repository):
32    def __init__(self, name, logger, path, project, command, env, hooks, timeout):
33        super().__init__(name, logger, path, project, command, env, hooks, timeout)
34
35        self.command = self._repository_command(command, default=lambda: which('p4'))
36
37        if not self.command:
38            raise RepositoryException("Cannot get perforce command")
39
40    def reposync(self):
41        return self._run_custom_sync_command([self.command, 'sync'])
42