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

Last change on this file since 923 was 923, checked in by mabarracus, 3 years ago

Imported trusty code

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