libzypp  11.13.5
PluginServices.cc
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
9 #include <iostream>
10 #include <sstream>
11 #include "zypp/base/Logger.h"
12 #include "zypp/base/Gettext.h"
13 #include "zypp/base/String.h"
14 #include "zypp/base/InputStream.h"
16 
18 #include "zypp/ServiceInfo.h"
19 #include "zypp/RepoInfo.h"
20 #include "zypp/PathInfo.h"
21 
22 using std::endl;
23 using std::stringstream;
24 
26 namespace zypp
27 {
28 
29  namespace repo
30  {
31 
33  {
34  public:
35  static void loadServices( const Pathname &path,
36  const PluginServices::ProcessService &callback );
37  };
38 
39  void PluginServices::Impl::loadServices( const Pathname &path,
40  const PluginServices::ProcessService & callback/*,
41  const ProgressData::ReceiverFnc &progress*/ )
42  {
43  std::list<Pathname> entries;
44  if (PathInfo(path).isExist())
45  {
46  if ( filesystem::readdir( entries, path, false ) != 0 )
47  {
48  // TranslatorExplanation '%s' is a pathname
49  ZYPP_THROW(Exception(str::form(_("Failed to read directory '%s'"), path.c_str())));
50  }
51 
52  //str::regex allowedServiceExt("^\\.service(_[0-9]+)?$");
53  for_(it, entries.begin(), entries.end() )
54  {
55  ServiceInfo service_info;
56  service_info.setAlias((*it).basename());
57  Url url;
58  url.setPathName((*it).asString());
59  url.setScheme("file");
60  service_info.setUrl(url);
61  service_info.setType(ServiceType::PLUGIN);
62  service_info.setAutorefresh( true );
63  DBG << "Plugin Service: " << service_info << endl;
64  callback(service_info);
65  }
66 
67  }
68  }
69 
70  PluginServices::PluginServices( const Pathname &path,
71  const ProcessService & callback/*,
72  const ProgressData::ReceiverFnc &progress */)
73  {
74  Impl::loadServices(path, callback/*, progress*/);
75  }
76 
78  {}
79 
80  std::ostream & operator<<( std::ostream & str, const PluginServices & obj )
81  {
82  return str;
83  }
84 
86  } // namespace repo
89 } // namespace zypp