source: lliurex-apt/trunk/fuentes/src/Sources.hpp @ 925

Last change on this file since 925 was 925, checked in by mabarracus, 5 years ago

Changed regex detection mode that fails into xenial, now using boost library, Glib crashes!

File size: 1.9 KB
Line 
1
2#ifndef _LLX_APT_SOURCES_
3#define _LLX_APT_SOURCES_
4
5#include <string>
6#include <vector>
7#include <map>
8#include <boost/regex.hpp>
9
10namespace net
11{
12        namespace lliurex
13        {
14                namespace apt
15                {
16               
17                        enum class SourceType { Deb , Source };
18                        enum class UriType { Http, Https, Ftp, Cdrom, File };
19
20                        enum class FindLineStatus { NotFound, Found, Partial };
21                       
22                        class SourceLine
23                        {
24                                public:
25                               
26                               
27                                SourceType source_type;
28                                UriType uri_type;
29                                std::string uri;
30                                std::string dist;
31                                std::vector<std::string> components;
32                               
33                                std::string ToString();
34                               
35                                bool IsEqual(SourceLine & line);
36                               
37                        };
38                       
39                        class Sources
40                        {
41                       
42                                protected:
43                               
44                                static boost::regex str_line;
45                                static boost::regex str_option;
46                                                               
47                                public:
48                               
49                                static const std::string SourcesList;
50                               
51                                                       
52                                bool optional;
53                               
54                                /*! describes de Sources */
55                                std::map<std::string,std::string>name;
56                               
57                                /*! SourceList container */
58                                std::vector<SourceLine> lines;
59                               
60                                /*!
61                                 Empty constructor
62                                */
63                                Sources();
64                               
65                                /*!
66                                 Create a sources from a sources.list file
67                                */
68                                Sources(std::string filename);
69                               
70                                /*!
71                                 Adds a new SourceLine from a text input
72                                */
73                                void Add(std::string line);
74                                                                                       
75                                /*!
76                                 Add a new SourceLine to the list. if the line already exists it does nothing, if
77                                 the line exists partially, components are merged
78                                */
79                                void Push(SourceLine line);
80                               
81                                FindLineStatus Find(SourceLine line);
82                               
83                                /*!
84                                 Pretty print source content to stdout
85                                */
86                                void Print();
87                               
88                                /*!
89                                 Writes Sources content to disk, it fallbacks to
90                                 a setuid backend + policykit to manage
91                                 /etc/ write credentials
92                                */
93                                void Write(std::string filename);
94                        };
95                       
96                        /*!
97                                Overload addition operator
98                                merges two Sources
99                        */
100                        Sources operator+(Sources & A,Sources & B);
101                }
102        }
103}
104
105#endif
Note: See TracBrowser for help on using the repository browser.