LCOV - code coverage report
Current view: top level - src/plugins/yambi - yambi.cpp (source / functions) Hit Total Coverage
Test: coverage-filtered.info Lines: 19 23 82.6 %
Date: 2019-09-12 12:28:41 Functions: 4 5 80.0 %

          Line data    Source code
       1             : /**
       2             :  * @file
       3             :  *
       4             :  * @brief Source for yambi plugin
       5             :  *
       6             :  * @copyright BSD License (see LICENSE.md or https://www.libelektra.org)
       7             :  *
       8             :  */
       9             : 
      10             : #include <stdexcept>
      11             : 
      12             : #include <kdb.hpp>
      13             : #include <kdberrors.h>
      14             : #include <kdbmacros.h>
      15             : 
      16             : #include "convert.hpp"
      17             : #include "yambi.hpp"
      18             : 
      19             : using ckdb::keyNew;
      20             : 
      21             : using CppKey = kdb::Key;
      22             : using CppKeySet = kdb::KeySet;
      23             : 
      24             : using std::exception;
      25             : using std::runtime_error;
      26             : using std::string;
      27             : 
      28             : namespace
      29             : {
      30             : 
      31             : /**
      32             :  * @brief This function returns a key set containing the plugin contract.
      33             :  *
      34             :  * @return A key set specifying the capabilities of the plugin
      35             :  */
      36         134 : CppKeySet getContract ()
      37             : {
      38             :         return CppKeySet{ 30,
      39             :                           keyNew ("system/elektra/modules/yambi", KEY_VALUE, "yambi plugin waits for your orders", KEY_END),
      40             :                           keyNew ("system/elektra/modules/yambi/exports", KEY_END),
      41             :                           keyNew ("system/elektra/modules/yambi/exports/get", KEY_FUNC, elektraYambiGet, KEY_END),
      42             :                           keyNew ("system/elektra/modules/yambi/exports/set", KEY_FUNC, elektraYambiSet, KEY_END),
      43             : #include ELEKTRA_README
      44             :                           keyNew ("system/elektra/modules/yambi/infos/version", KEY_VALUE, PLUGINVERSION, KEY_END),
      45         134 :                           KS_END };
      46             : }
      47             : 
      48             : } // end namespace
      49             : 
      50             : extern "C" {
      51             : 
      52             : /** @see elektraDocGet */
      53         197 : int elektraYambiGet (Plugin * handle ELEKTRA_UNUSED, KeySet * returned, Key * parentKey)
      54             : {
      55         394 :         CppKeySet keys{ returned };
      56         394 :         CppKey parent{ parentKey };
      57             : 
      58         591 :         if (parent.getName () == "system/elektra/modules/yambi")
      59             :         {
      60         402 :                 keys.append (getContract ());
      61         134 :                 parent.release ();
      62         134 :                 keys.release ();
      63         134 :                 return ELEKTRA_PLUGIN_STATUS_SUCCESS;
      64             :         }
      65             : 
      66          63 :         int status = ELEKTRA_PLUGIN_STATUS_ERROR;
      67             :         try
      68             :         {
      69         126 :                 status = addToKeySet (keys, parent, parent.getString ());
      70             :         }
      71           0 :         catch (runtime_error const & runtimeError)
      72             :         {
      73           0 :                 ELEKTRA_SET_VALIDATION_SYNTACTIC_ERROR (*parent, runtimeError.what ());
      74             :         }
      75           0 :         catch (exception const & error)
      76             :         {
      77           0 :                 ELEKTRA_SET_PLUGIN_MISBEHAVIOR_ERRORF (*parent, "Uncaught exception. Reason: %s", error.what ());
      78             :         }
      79             : 
      80          63 :         parent.release ();
      81          63 :         keys.release ();
      82          63 :         return status < 0 ? ELEKTRA_PLUGIN_STATUS_ERROR : status;
      83             : }
      84             : 
      85             : /** @see elektraDocSet */
      86           2 : int elektraYambiSet (Plugin * handle ELEKTRA_UNUSED, KeySet * returned ELEKTRA_UNUSED, Key * parentKey ELEKTRA_UNUSED)
      87             : {
      88           2 :         return ELEKTRA_PLUGIN_STATUS_NO_UPDATE;
      89             : }
      90             : 
      91         376 : Plugin * ELEKTRA_PLUGIN_EXPORT
      92             : {
      93             :         return elektraPluginExport ("yambi", ELEKTRA_PLUGIN_GET, &elektraYambiGet, ELEKTRA_PLUGIN_SET, &elektraYambiSet,
      94         376 :                                     ELEKTRA_PLUGIN_END);
      95             : }
      96             : 
      97             : } // end extern "C"

Generated by: LCOV version 1.13