LCOV - code coverage report
Current view: top level - src/esys/repo - loadfolder.cpp (source / functions) Hit Total Coverage
Test: esysrepo_coverage.info Lines: 32 43 74.4 %
Date: 2026-09-26 15:38:18 Functions: 7 11 63.6 %

          Line data    Source code
       1             : /*!
       2             :  * \file esys/repo/loadfolder.cpp
       3             :  * \brief
       4             :  *
       5             :  * \cond
       6             :  * __legal_b__
       7             :  *
       8             :  * Copyright (c) 2022 Michel Gillet
       9             :  * Distributed under the MIT License.
      10             :  * (See accompanying file LICENSE.txt or
      11             :  * copy at https://opensource.org/licenses/MIT)
      12             :  *
      13             :  * __legal_e__
      14             :  * \endcond
      15             :  *
      16             :  */
      17             : 
      18             : #include "esys/repo/esysrepo_prec.h"
      19             : #include "esys/repo/loadfolder.h"
      20             : #include "esys/repo/manifest/detect.h"
      21             : #include "esys/repo/manifest/loader.h"
      22             : 
      23             : namespace esys::repo
      24             : {
      25             : 
      26          10 : LoadFolder::LoadFolder(const std::string &folder_path)
      27          10 :     : m_folder_path(folder_path)
      28             : {
      29          10 : }
      30             : 
      31          30 : LoadFolder::~LoadFolder() = default;
      32             : 
      33          10 : void LoadFolder::set_folder_path(const std::string &folder_path)
      34             : {
      35          10 :     m_folder_path = folder_path;
      36          10 : }
      37             : 
      38          10 : const std::string &LoadFolder::get_folder_path() const
      39             : {
      40          10 :     return m_folder_path;
      41             : }
      42             : 
      43          10 : Result LoadFolder::run(const std::string &folder_path)
      44             : {
      45          10 :     if (!folder_path.empty()) set_folder_path(folder_path);
      46             : 
      47          10 :     auto detect = std::make_unique<manifest::Detect>();
      48             : 
      49          10 :     detect->set_folder_path(get_folder_path());
      50          10 :     Result result = detect->detect();
      51          10 :     if (result.error()) return ESYSREPO_RESULT(result);
      52             : 
      53          10 :     auto loader = std::make_unique<manifest::Loader>();
      54          19 :     if (detect->get_config_folder() != nullptr)
      55             :     {
      56          18 :         loader->set_config_folder(detect->get_config_folder());
      57             :     }
      58           2 :     else if (detect->get_config() != nullptr)
      59             :     {
      60           2 :         loader->set_config(detect->get_config());
      61             :     }
      62             :     else
      63           0 :         return ESYSREPO_RESULT(ResultCode::INTERNAL_ERROR);
      64             : 
      65          10 :     m_config = loader->get_config();
      66          10 :     m_config_folder = loader->get_config_folder();
      67             : 
      68          10 :     result = loader->run();
      69          10 :     if (result.error()) return ESYSREPO_RESULT(result);
      70          10 :     set_manifest(loader->get_manifest());
      71          10 :     return ESYSREPO_RESULT(ResultCode::OK);
      72          10 : }
      73             : 
      74           0 : std::string LoadFolder::find_repo_path_by_url(const std::string &url)
      75             : {
      76           0 :     if (get_manifest() == nullptr) return "";
      77             : 
      78           0 :     return get_manifest()->find_repo_path_by_url(url);
      79             : }
      80             : 
      81           0 : std::shared_ptr<manifest::Repository> LoadFolder::find_repo_by_url(const std::string &url)
      82             : {
      83           0 :     if (get_manifest() == nullptr) return nullptr;
      84             : 
      85           0 :     return get_manifest()->find_repo_by_url(url);
      86             : }
      87             : 
      88           0 : std::shared_ptr<Config> LoadFolder::get_config() const
      89             : {
      90           0 :     return m_config;
      91             : }
      92             : 
      93           0 : std::shared_ptr<ConfigFolder> LoadFolder::get_config_folder() const
      94             : {
      95           0 :     return m_config_folder;
      96             : }
      97             : 
      98          10 : std::shared_ptr<Manifest> LoadFolder::get_manifest() const
      99             : {
     100          10 :     return m_manifest;
     101             : }
     102             : 
     103          10 : void LoadFolder::set_manifest(std::shared_ptr<Manifest> manifest)
     104             : {
     105          10 :     m_manifest = manifest;
     106          10 : }
     107             : 
     108             : } // namespace esys::repo

Generated by: LCOV version 1.14