diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 04e832402292530aae089e76a52bb83d87392591..be44d9b34b68ed01f746a95edd8f19488480c05b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -24,6 +24,8 @@ variables: CPPLIB_REGISTRY_IMAGE: $CI_REGISTRY/caosdb/src/caosdb-cpplib/testenv:$CI_COMMIT_REF_NAME CPPINTTEST_BRANCHES: https://gitlab.indiscale.com/api/v4/projects/111/repository/branches + OCTAVELIB_BRANCHES: https://gitlab.indiscale.com/api/v4/projects/117/repository/branches + JULIALIB_BRANCHES: https://gitlab.indiscale.com/api/v4/projects/116/repository/branches GIT_SUBMODULE_STRATEGY: normal ## FOR DEBUGGING @@ -103,28 +105,45 @@ trigger_prepare: # ... use an f-branch if posible... - F_BRANCH=dev - if echo "$CI_COMMIT_REF_NAME" | grep -c "^f-" ; then + F_BRANCH=$CI_COMMIT_REF_NAME ; if curl -o /dev/null -s -w "%{http_code}" $CPPINTTEST_BRANCHES/$CI_COMMIT_REF_NAME | grep "404"; then CPPINT_REF=dev ; - F_BRANCH=dev ; else CPPINT_REF=$CI_COMMIT_REF_NAME ; - F_BRANCH=$CI_COMMIT_REF_NAME ; - fi + fi; + if curl -o /dev/null -s -w "%{http_code}" $OCTAVELIB_BRANCHES/$CI_COMMIT_REF_NAME | grep "404"; then + OCTAVELIB_REF=dev ; + else + OCTAVELIB_REF=$CI_COMMIT_REF_NAME ; + fi; + if curl -o /dev/null -s -w "%{http_code}" $JULIALIB_BRANCHES/$CI_COMMIT_REF_NAME | grep "404"; then + JULIALIB_REF=dev ; + else + JULIALIB_REF=$CI_COMMIT_REF_NAME ; + fi; fi; # ... or use main if possible... - if [[ "$CI_COMMIT_REF_NAME" == "main" ]] ; then CPPINT_REF=main ; + OCTAVELIB_REF=main ; + JULIALIB_REF=main F_BRANCH=main ; fi - if echo "$CI_COMMIT_REF_NAME" | grep -c "^v" ; then CPPINT_REF=main ; + OCTAVELIB_REF=main ; + JULIALIB_REF=main ; F_BRANCH=main ; fi # ... and fall-back to dev - CPPINT_REF=${CPPINT_REF:-dev} + - OCTAVELIB_REF=${OCTAVELIB_REF:-dev} + - JULIALIB_REF=${JULIALIB_REF:-dev} # Write to dotenv - echo "CPPINT_REF=${CPPINT_REF}" >> "$DOTENV" + - echo "OCTAVELIB_REF=${OCTAVELIB_REF}" >> "$DOTENV" + - echo "JULIALIB_REF=${JULIALIB_REF}" >> "$DOTENV" - echo "F_BRANCH=${F_BRANCH}" >> "$DOTENV" - cat "$DOTENV" artifacts: @@ -154,6 +173,44 @@ trigger_inttest: branch: $CPPINT_REF strategy: depend +# After the cppinttest have been successful, also start tests for Octave... +trigger_octavelib: + stage: deploy + needs: [ trigger_prepare ] + inherit: + variables: + # List the variables that shall be inherited, which also means they will override any equally + # named varibles in child pipelines. + - TRIGGERED_BY_REPO + - TRIGGERED_BY_REF + - TRIGGERED_BY_HASH + - CPPLIB_REGISTRY_IMAGE + variables: + # dotenv variables must be set again here. + F_BRANCH: $F_BRANCH + trigger: + project: caosdb/src/caosdb-octavelib + branch: $OCTAVELIB_REF + +# ... and for Julia. +trigger_julialib: + stage: deploy + needs: [ trigger_prepare ] + inherit: + variables: + # List the variables that shall be inherited, which also means they will override any equally + # named varibles in child pipelines. + - TRIGGERED_BY_REPO + - TRIGGERED_BY_REF + - TRIGGERED_BY_HASH + - CPPLIB_REGISTRY_IMAGE + variables: + # dotenv variables must be set again here. + F_BRANCH: $F_BRANCH + trigger: + project: caosdb/src/caosdb-julialib + branch: $JULIALIB_REF + # Build the sphinx documentation and make it ready for deployment by Gitlab Pages # Special job for serving a static website. See https://docs.gitlab.com/ee/ci/yaml/README.html#pages .pages_prepare: &pages_prepare diff --git a/doc/CHANGELOG.md b/doc/CHANGELOG.md index be4e73f31904decf166a523c229b58a0ca47af10..a0dbb62030923c776c69e2440bee0f313f5056b3 100644 --- a/doc/CHANGELOG.md +++ b/doc/CHANGELOG.md @@ -10,6 +10,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added * Simple `User` class and methods for user creation/retrieval/deletion. +* Added more variants for the `operator<<` of `LoggerOutputStream` (for `bool` + and `std::endl`). ### Changed diff --git a/include/caosdb/logging.h b/include/caosdb/logging.h index e50c70f69bc0ed45e8f6a60f78cd11e4142b0568..94c78ed3d6c303149e755c4aa83e757a04500724 100644 --- a/include/caosdb/logging.h +++ b/include/caosdb/logging.h @@ -27,6 +27,7 @@ #include <cstdint> // for uint64_t #include <iosfwd> // for streamsize #include <memory> // for shared_ptr +#include <ostream> // for ostream #include <string> // for string #include <vector> // for vector @@ -37,6 +38,8 @@ const std::string logger_name = "caosdb::logging"; class LoggerOutputStream { public: LoggerOutputStream(std::string channel, int level); + auto operator<<(std::ostream &(*f)(std::ostream &)) -> LoggerOutputStream &; + auto operator<<(bool msg) -> LoggerOutputStream &; auto operator<<(int msg) -> LoggerOutputStream &; auto operator<<(uint64_t msg) -> LoggerOutputStream &; auto operator<<(int64_t msg) -> LoggerOutputStream &; diff --git a/src/caosdb/logging.cpp b/src/caosdb/logging.cpp index 7aaedee77696ada264418c104b6c8c28c4bb7b24..ecc34d668971eaa22cd7ff727d8f54c84c2f3bdc 100644 --- a/src/caosdb/logging.cpp +++ b/src/caosdb/logging.cpp @@ -63,6 +63,18 @@ private: LoggerOutputStream::LoggerOutputStream(std::string channel, int level) : channel(std::move(channel)), level(level) {} +auto LoggerOutputStream::operator<<(std::ostream &(*f)(std::ostream &)) -> LoggerOutputStream & { + BOOST_LOG_CHANNEL_SEV(caosdb::logging::logger::get(), this->channel, this->level) << f; + + return *this; +} + +auto LoggerOutputStream::operator<<(bool msg) -> LoggerOutputStream & { + BOOST_LOG_CHANNEL_SEV(caosdb::logging::logger::get(), this->channel, this->level) << msg; + + return *this; +} + auto LoggerOutputStream::operator<<(std::streambuf *msg) -> LoggerOutputStream & { BOOST_LOG_CHANNEL_SEV(caosdb::logging::logger::get(), channel, this->level) << msg;