Blame .conan/build.py

Packit d0b620
#!/usr/bin/env python
Packit d0b620
# -*- coding: utf-8 -*-
Packit d0b620
Packit d0b620
import os
Packit d0b620
import re
Packit d0b620
from cpt.packager import ConanMultiPackager
Packit d0b620
from cpt.ci_manager import CIManager
Packit d0b620
from cpt.printer import Printer
Packit d0b620
Packit d0b620
Packit d0b620
class BuilderSettings(object):
Packit d0b620
    @property
Packit d0b620
    def username(self):
Packit d0b620
        """ Set taocpp as package's owner
Packit d0b620
        """
Packit d0b620
        return os.getenv("CONAN_USERNAME", "taocpp")
Packit d0b620
Packit d0b620
    @property
Packit d0b620
    def upload(self):
Packit d0b620
        """ Set taocpp repository to be used on upload.
Packit d0b620
            The upload server address could be customized by env var
Packit d0b620
            CONAN_UPLOAD. If not defined, the method will check the branch name.
Packit d0b620
            Only master or CONAN_STABLE_BRANCH_PATTERN will be accepted.
Packit d0b620
            The master branch will be pushed to testing channel, because it does
Packit d0b620
            not match the stable pattern. Otherwise it will upload to stable
Packit d0b620
            channel.
Packit d0b620
        """
Packit d0b620
        if os.getenv("CONAN_UPLOAD", None) is not None:
Packit d0b620
            return os.getenv("CONAN_UPLOAD")
Packit d0b620
Packit d0b620
        printer = Printer(None)
Packit d0b620
        ci_manager = CIManager(printer)
Packit d0b620
        branch = ci_manager.get_branch()
Packit d0b620
Packit d0b620
        patterns = [r"v?\d+\.\d+\.\d+-.*", self.stable_branch_pattern]
Packit d0b620
        for pattern in patterns:
Packit d0b620
            prog = re.compile(pattern)
Packit d0b620
            if branch and prog.match(branch):
Packit d0b620
                return "https://api.bintray.com/conan/taocpp/public-conan"
Packit d0b620
Packit d0b620
    @property
Packit d0b620
    def upload_only_when_stable(self):
Packit d0b620
        """ Force to upload when running over tag branch
Packit d0b620
        """
Packit d0b620
        return os.getenv("CONAN_UPLOAD_ONLY_WHEN_STABLE", True)
Packit d0b620
Packit d0b620
    @property
Packit d0b620
    def stable_branch_pattern(self):
Packit d0b620
        """ Only upload the package the branch name is like a tag
Packit d0b620
        """
Packit d0b620
        return os.getenv("CONAN_STABLE_BRANCH_PATTERN", r"\d+\.\d+\.\d+")
Packit d0b620
Packit d0b620
    @property
Packit d0b620
    def reference(self):
Packit d0b620
        """ Read project version from CMake file to create Conan referece
Packit d0b620
        """
Packit d0b620
        pattern = re.compile(r"project \(pegtl VERSION (\d+\.\d+\.\d+) LANGUAGES CXX\)")
Packit d0b620
        version = None
Packit d0b620
        with open('CMakeLists.txt') as file:
Packit d0b620
            for line in file:
Packit d0b620
                result = pattern.match(line)
Packit d0b620
                if result:
Packit d0b620
                    version = result.group(1)
Packit d0b620
        if not version:
Packit d0b620
            raise Exception("Could not find version in CMakeLists.txt")
Packit d0b620
        return os.getenv("CONAN_REFERENCE", "pegtl/{}@taocpp/stable".format(version))
Packit d0b620
Packit d0b620
if __name__ == "__main__":
Packit d0b620
    settings = BuilderSettings()
Packit d0b620
    builder = ConanMultiPackager(
Packit d0b620
        reference=settings.reference,
Packit d0b620
        username=settings.username,
Packit d0b620
        upload=settings.upload,
Packit d0b620
        upload_only_when_stable=settings.upload_only_when_stable,
Packit d0b620
        stable_branch_pattern=settings.stable_branch_pattern,
Packit d0b620
        test_folder=os.path.join(".conan", "test_package"))
Packit d0b620
    builder.add()
Packit d0b620
    builder.run()