xref: /OpenGrok/tools/src/main/python/opengrok_tools/scm/repo.py (revision 1d0105fe34a2236ab5dbae10b98fad044c1eb6d5)
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, 2022, Oracle and/or its affiliates. All rights reserved.
22# Portions Copyright (c) 2020, Krystof Tulinger <k.tulinger@seznam.cz>
23#
24
25from shutil import which
26
27from .repository import Repository, RepositoryException
28
29
30class RepoRepository(Repository):
31    def __init__(self, name, logger, path, project, command, env, hooks, timeout):
32        super().__init__(name, logger, path, project, command, env, hooks, timeout)
33
34        self.command = self._repository_command(command, default=lambda: which('repo'))
35
36        if not self.command:
37            raise RepositoryException("Cannot get repo command")
38
39    def top_level(self):
40        """
41        It is not desired to descend into sub-repositories when syncing.
42        :return:
43        """
44        return True
45
46    def reposync(self):
47        return self._run_custom_sync_command([self.command, 'sync', '-c'])
48
49    def incoming_check(self):
50        return self._run_custom_incoming_command([self.command, 'sync', '-n'])
51