~ubuntu-branches/ubuntu/trusty/aptoncd/trusty

« back to all changes in this revision

Viewing changes to PackagesParser.py

  • Committer: Bazaar Package Importer
  • Author(s): Fabrice Coutadeur
  • Date: 2009-08-19 21:41:06 UTC
  • mfrom: (3 sid) (1.2.1 upstream)
  • mto: This revision was merged to the branch mainline in revision 4.
  • Revision ID: james.westby@ubuntu.com-20090819214106-7g72fpzgvl722w6k
* New maintainer (Closes: #542459, #484637, #542501)
* New upstream release
  - Fix the executable flag on non executable files. This fix last lintian
    warnings
* debian/rules: prepared for python2.6 (include of python.mk and use of 
  $(py_setup_install_args) )

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/python
2
 
# -*- coding: iso-8859-15 -*-
3
 
######################################################
4
 
##
5
 
#  This program is free software; you can redistribute it and/or modify
6
 
#  it under the terms of the GNU General Public License as published
7
 
#  by the Free Software Foundation; version 2 only.
8
 
#
9
 
#  This program is distributed in the hope that it will be useful,
10
 
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
 
#  GNU General Public License for more details.
13
 
##
14
 
######################################################
15
 
## 
16
 
#  Project: AptOnCd
17
 
#  File: PackagesParser.py
18
 
#  Author: Laudeci Oliveira <laudeci@gmail.com>
19
 
#  Creation: 26/12/2006
20
 
#  Changed: 
21
 
#  Purpose: 
22
 
##
23
 
######################################################
24
 
import rfc822
25
 
import StringIO
26
 
import gzip
27
 
import string
28
 
import os
29
 
import sys
30
 
 
31
 
PACKAGE = 'Package'
32
 
PRIORITY = 'Priority'
33
 
SECTION = 'Section'
34
 
INSTALLED_SIZE = 'Installed-Size'
35
 
MAINTAINER = 'Maintainer'
36
 
ORIGINAL_MAINTAINER = 'Original-Maintainer'
37
 
ARCHITECTURE = 'Architecture'
38
 
VERSION = 'Version'
39
 
DEPENDS = 'Depends'
40
 
FILENAME = 'Filename'
41
 
SIZE = 'Size'
42
 
MD5SUM = 'MD5sum'
43
 
SHA1 = 'SHA1'
44
 
SHA256 = 'SHA256'
45
 
DESCRIPTON = 'Description'
46
 
BUGS = 'Bugs'
47
 
ORIGIN = 'Origin'
48
 
 
49
 
 
50
 
class ParseGZ:
51
 
    
52
 
    def __init__(self, filename = ''):
53
 
        self.filename = filename
54
 
        self.collection = []
55
 
    
56
 
    def __get_value(self,source, string, default = ''):
57
 
        try:
58
 
            return source[string]
59
 
        except:
60
 
            return default
61
 
        
62
 
    def Parse(self, filename = ''):
63
 
        if self.filename  == '' and filename == '':
64
 
            raise AttributeError, "missing filename parameter"
65
 
        if filename !='':
66
 
            self.filename = filename
67
 
            
68
 
        if not os.path.isfile(self.filename):
69
 
            raise AttributeError , self.filename
70
 
        
71
 
        try:
72
 
            pkgfile=gzip.open(self.filename)
73
 
            pkgdata=pkgfile.read()
74
 
        except IOError, msg:
75
 
            raise AttributeError ,"File doesn't seems to be valid"
76
 
        
77
 
        packages = string.split(pkgdata,"\n\n")
78
 
        for package in packages:
79
 
            if package:
80
 
                tmp=StringIO.StringIO(package)
81
 
                p=rfc822.Message(tmp)
82
 
                pk = PackageInfo()
83
 
                pk.Priority = self.__get_value(p,PRIORITY)
84
 
                pk.Section = self.__get_value(p,SECTION)
85
 
                pk.InstaledSize =  self.__get_value(p,INSTALLED_SIZE)
86
 
                pk.Maintainer = self.__get_value(p,MAINTAINER)
87
 
                pk.OrinalMantainer = self.__get_value(p,ORIGINAL_MAINTAINER)
88
 
                pk.Architecture = self.__get_value(p,ARCHITECTURE)
89
 
                pk.Version = self.__get_value(p,VERSION)
90
 
                pk.Depends = self.__get_value(p,DEPENDS)
91
 
                pk.Filename = self.__get_value(p,FILENAME)
92
 
                pk.Size = self.__get_value(p,SIZE)
93
 
                pk.MD5sum = self.__get_value(p,MD5SUM)
94
 
                pk.SHA1 = self.__get_value(p,SHA1)
95
 
                pk.SHA256 = self.__get_value(p,SHA256)
96
 
                pk.Description = self.__get_value(p,DESCRIPTON)
97
 
                pk.Bugs = self.__get_value(p,BUGS)
98
 
                pk.Origin = self.__get_value(p,ORIGIN)
99
 
                self.collection.append(pk)
100
 
                
101
 
        return self.collection
102
 
    
103
 
    def get_collection(self):
104
 
        return self.collection
105
 
    
106
 
class PackageInfo(object):
107
 
        """
108
 
          This class holds packages info stored in Packages.gz file. 
109
 
        """
110
 
        def __init__(self):
111
 
            self.__Package =''
112
 
            self.__Priority = ''
113
 
            self.__Section = ''
114
 
            self.__Installed_Size = ''
115
 
            self.__Maintainer = ''
116
 
            self.__Original_Maintainer = ''
117
 
            self.__Architecture = ''
118
 
            self.__Version = ''
119
 
            self.__Depends = ''
120
 
            self.__Filename = ''
121
 
            self.__Size = ''
122
 
            self.__MD5sum = ''
123
 
            self.__SHA1 = ''
124
 
            self.__SHA256 = ''
125
 
            self.__Description = ''
126
 
            self.__Bugs = ''
127
 
            self.__Origin = ''
128
 
            self.__root_folder = ''
129
 
            self.__destinationfile=''
130
 
            self.__targz_path = ''
131
 
            self.__PackageSection = ''
132
 
        
133
 
        def __get_Package(self):    return self.__Package
134
 
        def __set_Pakcage(self,value):    self.__Package = value
135
 
        Package = property(fget=__get_Package, fset=__set_Pakcage, doc='Get/Set Package name.')
136
 
        
137
 
        def __get_Priority(self):    return self.__Priority
138
 
        def __set_Priority(self,value):    self.__Priority = value
139
 
        Priority = property(fget=__get_Priority, fset=__set_Priority, doc='Get/Set Package Priority.')
140
 
        
141
 
        def __get_Section(self):    return self.__Section
142
 
        def __set_Section(self,value):    self.__Section = value
143
 
        Section = property(fget=__get_Section, fset=__set_Section, doc='Get/Set Package Section.')
144
 
        
145
 
        def __get_Installed_Size(self):    return self.__Installed_Size
146
 
        def __set_Installed_Size(self,value):    self.__Installed_Size = value
147
 
        InstalledSize = property(fget=__get_Installed_Size, fset=__set_Installed_Size, doc='Get/Set Package Installed Size.')
148
 
        
149
 
        def __get_Maintainer(self):    return self.__Maintainer
150
 
        def __set_Maintainer(self,value):    self.__Maintainer = value
151
 
        Maintainer = property(fget=__get_Maintainer, fset=__set_Maintainer, doc="Get/Set Package Maintainer's name.")
152
 
        
153
 
        def __get_Original_Maintainer(self):    return self.__Original_Maintainer
154
 
        def __set_Original_Maintainer(self,value):    self.__Original_Maintainer = value
155
 
        OriginalMaintainer = property(fget=__get_Original_Maintainer, fset=__set_Original_Maintainer, doc='Get/Set Package Original Maintainer.')
156
 
        
157
 
        def __get_Architecture(self):    return self.__Architecture
158
 
        def __set_Architecture(self,value):    self.__Architecture = value
159
 
        Architecture = property(fget=__get_Architecture, fset=__set_Architecture, doc='Get/Set Package Architecture.')
160
 
        
161
 
        def __get_Version(self):    return self.__Version
162
 
        def __set_Version(self,value):    self.__Version = value
163
 
        Version = property(fget=__get_Version, fset=__set_Version, doc='Get/Set Package Version.')
164
 
        
165
 
        def __get_Depends(self):    return self.__Depends
166
 
        def __set_Depends(self,value):    self.__Depends = value
167
 
        Depends = property(fget=__get_Depends, fset=__set_Depends, doc='Get/Set Package Depends.')
168
 
        
169
 
        def __get_Filename(self):    return self.__Filename
170
 
        def __set_Filename(self,value):    self.__Filename = value
171
 
        Filename = property(fget=__get_Filename, fset=__set_Filename, doc='Get/Set Package Filename.')
172
 
        
173
 
        def __get_Size(self):    return self.__Size
174
 
        def __set_Size(self,value):    self.__Size = value
175
 
        Size = property(fget=__get_Size, fset=__set_Size, doc='Get/Set Package Size.')
176
 
        
177
 
        def __get_MD5sum(self):    return self.__MD5sum
178
 
        def __set_MD5sum(self,value):    self.__MD5sum = value
179
 
        MD5sum = property(fget=__get_MD5sum, fset=__set_MD5sum, doc='Get/Set Package MD5sum.')
180
 
        
181
 
        def __get_SHA1(self):    return self.__SHA1
182
 
        def __set_SHA1(self,value):    self.__SHA1 = value
183
 
        SHA1 = property(fget=__get_SHA1, fset=__set_SHA1, doc='Get/Set Package SHA1.')
184
 
 
185
 
        def __get_SHA256(self):    return self.__SHA256
186
 
        def __set_SHA256(self,value):    self.__SHA256 = value
187
 
        SHA256 = property(fget=__get_SHA256, fset=__set_SHA256, doc='Get/Set Package SHA256.')
188
 
        
189
 
        def __get_Description(self):    return self.__Description
190
 
        def __set_Description(self,value):    self.__Description = value
191
 
        Description = property(fget=__get_Description, fset=__set_Description, doc='Get/Set Package Description.')
192
 
        
193
 
        def __get_Bugs(self):    return self.__Bugs
194
 
        def __set_Bugs(self,value):    self.__Bugs = value
195
 
        Bugs = property(fget=__get_Bugs, fset=__set_Bugs, doc='Get/Set Package Bugs.')
196
 
        
197
 
        def __get_Origin(self):    return self.__Origin
198
 
        def __set_Origin(self,value):    self.__Origin = value
199
 
        Origin = property(fget=__get_Origin, fset=__set_Origin, doc='Get/Set Package Origin.')
200
 
        
201
 
        def __get_Destination(self):    return self.__destinationfile
202
 
        def __set_Destination(self,value):    self.__destinationfile = value
203
 
        Destination = property(fget=__get_Destination, fset=__set_Destination, doc='Get/Set Package Destination file and path.')
204
 
        
205
 
        def __get_root_folder(self):    return self.__root_folder
206
 
        def __set_root_folder(self,value):    self.__root_folder = value
207
 
        SourceLocation = property(fget=__get_root_folder, fset=__set_root_folder, doc='Get/Set Package Destination file and path.')
208
 
        
209
 
        def __get_TarGZ_Path(self):    return self.__targz_path
210
 
        def __set_TarGZ_Path(self,value):    self.__targz_path = value
211
 
        TarGZ_Path = property(fget=__get_TarGZ_Path, fset=__set_TarGZ_Path, doc='Get/Set Package Tar file  name.')
212
 
        
213
 
        def __get_PackageSection(self):    return self.__PackageSection
214
 
        def __set_PackageSection(self,value):    self.__PackageSection = value
215
 
        PackageSection = property(fget=__get_PackageSection, fset=__set_PackageSection, doc='Get/Set Package Main section name.')
216
 
        
217
 
        
218
 
        def get_as_list(self):
219
 
            return [self.__Package,  self.__Priority, self.__Section, self.__Installed_Size, self.__Maintainer, self.__Original_Maintainer,  \
220
 
                     self.__Architecture, self.__Version, self.__Depends, self.__Filename, self.__Size, self.__MD5sum, self.__SHA1, \
221
 
                     self.__SHA256, self.__Description, self.__Bugs, self.__Origin]