mirror of https://github.com/catchorg/Catch2.git
95 lines
3.0 KiB
Python
95 lines
3.0 KiB
Python
![]() |
#!/usr/bin/env python
|
||
|
# -*- coding: utf-8 -*-
|
||
|
|
||
|
import os
|
||
|
import re
|
||
|
from cpt.packager import ConanMultiPackager
|
||
|
from cpt.ci_manager import CIManager
|
||
|
from cpt.printer import Printer
|
||
|
|
||
|
|
||
|
class BuilderSettings(object):
|
||
|
@property
|
||
|
def username(self):
|
||
|
""" Set catchorg as package's owner
|
||
|
"""
|
||
|
return os.getenv("CONAN_USERNAME", "catchorg")
|
||
|
|
||
|
@property
|
||
|
def login_username(self):
|
||
|
""" Set Bintray login username
|
||
|
"""
|
||
|
return os.getenv("CONAN_LOGIN_USERNAME", "horenmar")
|
||
|
|
||
|
@property
|
||
|
def upload(self):
|
||
|
""" Set Catch2 repository to be used on upload.
|
||
|
The upload server address could be customized by env var
|
||
|
CONAN_UPLOAD. If not defined, the method will check the branch name.
|
||
|
Only master or CONAN_STABLE_BRANCH_PATTERN will be accepted.
|
||
|
The master branch will be pushed to testing channel, because it does
|
||
|
not match the stable pattern. Otherwise it will upload to stable
|
||
|
channel.
|
||
|
"""
|
||
|
return os.getenv("CONAN_UPLOAD", "https://api.bintray.com/conan/horenmar/Catch2")
|
||
|
|
||
|
@property
|
||
|
def upload_only_when_stable(self):
|
||
|
""" Force to upload when running over tag branch
|
||
|
"""
|
||
|
return os.getenv("CONAN_UPLOAD_ONLY_WHEN_STABLE", "True").lower() in ["true", "1", "yes"]
|
||
|
|
||
|
@property
|
||
|
def stable_branch_pattern(self):
|
||
|
""" Only upload the package the branch name is like a tag
|
||
|
"""
|
||
|
return os.getenv("CONAN_STABLE_BRANCH_PATTERN", r"v\d+\.\d+\.\d+")
|
||
|
|
||
|
@property
|
||
|
def reference(self):
|
||
|
""" Read project version from branch create Conan referece
|
||
|
"""
|
||
|
return os.getenv("CONAN_REFERENCE", "Catch2/{}@{}/{}".format(self._version, self.username, self.channel))
|
||
|
|
||
|
@property
|
||
|
def channel(self):
|
||
|
""" Default Conan package channel when not stable
|
||
|
"""
|
||
|
return os.getenv("CONAN_CHANNEL", "testing")
|
||
|
|
||
|
@property
|
||
|
def _version(self):
|
||
|
""" Get version name from cmake file
|
||
|
"""
|
||
|
pattern = re.compile(r"project\(Catch2 LANGUAGES CXX VERSION (\d+\.\d+\.\d+)\)")
|
||
|
version = "latest"
|
||
|
with open("CMakeLists.txt") as file:
|
||
|
for line in file:
|
||
|
result = pattern.search(line)
|
||
|
if result:
|
||
|
version = result.group(1)
|
||
|
return version
|
||
|
|
||
|
@property
|
||
|
def _branch(self):
|
||
|
""" Get branch name from CI manager
|
||
|
"""
|
||
|
printer = Printer(None)
|
||
|
ci_manager = CIManager(printer)
|
||
|
return ci_manager.get_branch()
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
settings = BuilderSettings()
|
||
|
builder = ConanMultiPackager(
|
||
|
reference=settings.reference,
|
||
|
channel=settings.channel,
|
||
|
upload=settings.upload,
|
||
|
upload_only_when_stable=settings.upload_only_when_stable,
|
||
|
stable_branch_pattern=settings.stable_branch_pattern,
|
||
|
login_username=settings.login_username,
|
||
|
username=settings.username,
|
||
|
test_folder=os.path.join(".conan", "test_package"))
|
||
|
builder.add()
|
||
|
builder.run()
|