xref: /OpenGrok/tools/src/main/python/opengrok_tools/scm/cvs.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 (c) 2020, Krystof Tulinger <k.tulinger@seznam.cz>
23#
24
25from shutil import which
26
27from .repository import Repository, RepositoryException
28from ..utils.command import Command
29
30
31class CVSRepository(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('cvs'))
36
37        if not self.command:
38            raise RepositoryException("Cannot get cvs command")
39
40    def reposync(self):
41        hg_command = [self.command, "update", "-dP"]
42        cmd = self.get_command(hg_command, work_dir=self.path,
43                               env_vars=self.env, logger=self.logger)
44        cmd.execute()
45        self.logger.info("output of {}:".format(cmd))
46        self.logger.info(cmd.getoutputstr())
47        if cmd.getretcode() != 0 or cmd.getstate() != Command.FINISHED:
48            self.logger.error("failed to perform update: command {}"
49                              "in directory {} exited with {}".
50                              format(hg_command, self.path, cmd.getretcode()))
51            return 1
52
53        return 0
54