aboutsummaryrefslogtreecommitdiffstats
path: root/.conan/build.py
diff options
context:
space:
mode:
authorLexi Winter <lexi@le-fay.org>2025-06-29 19:25:29 +0100
committerLexi Winter <lexi@le-fay.org>2025-06-29 19:25:29 +0100
commitbc524d70253a4ab2fe40c3ca3e5666e267c0a4d1 (patch)
tree1e629e7b46b1d9972a973bc93fd100bcebd395be /.conan/build.py
downloadnihil-vendor/catch2.tar.gz
nihil-vendor/catch2.tar.bz2
Diffstat (limited to '.conan/build.py')
-rw-r--r--.conan/build.py94
1 files changed, 94 insertions, 0 deletions
diff --git a/.conan/build.py b/.conan/build.py
new file mode 100644
index 0000000..e163d5f
--- /dev/null
+++ b/.conan/build.py
@@ -0,0 +1,94 @@
+#!/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 devel or CONAN_STABLE_BRANCH_PATTERN will be accepted.
+ The devel 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/catchorg/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 reference
+ """
+ return os.getenv("CONAN_REFERENCE", "catch2/{}".format(self._version))
+
+ @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=False,
+ 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()