comparison paint/package.py @ 40:06f21791eba1

add yet another indirection layer
author Jeff Hammel <jhammel@mozilla.com>
date Fri, 30 Mar 2012 15:58:13 -0700
parents cc25499e9485
children 97a7b740ddab
comparison
equal deleted inserted replaced
39:cc25499e9485 40:06f21791eba1
34 34
35 # ephemeral data 35 # ephemeral data
36 self._tmppath = None 36 self._tmppath = None
37 self._egg_info_path = None 37 self._egg_info_path = None
38 self._build_path = None 38 self._build_path = None
39 self._pkg_info_path = None
39 40
40 # TODO: list of temporary files/directories to be deleted 41 # TODO: list of temporary files/directories to be deleted
41 42
42 def _path(self): 43 def _path(self):
43 """filesystem path to package directory""" 44 """filesystem path to package directory"""
149 150
150 # cache it 151 # cache it
151 self._egg_info_path = egg_info 152 self._egg_info_path = egg_info
152 return self._egg_info_path 153 return self._egg_info_path
153 154
155 def _pkg_info(self):
156 """returns path to PKG-INFO file"""
157
158 if self._pkg_info_path:
159 # return cached value
160 return self._pkg_info_path
161
162 try:
163 egg_info = self._egg_info()
164 except BaseException, exception:
165 # try to get the package info from a file
166 path = self._path()
167 pkg_info = os.path.join(path, 'PKG-INFO')
168 if os.path.exists(pkg_info):
169 self._pkg_info_path = pkg_info
170 return self._pkg_info_path
171 raise Exception("Cannot find or generate PKG-INFO")
172
173 pkg_info = os.path.join(egg_info, 'PKG-INFO')
174 assert os.path.exists(pkg_info)
175 self._pkg_info_path = pkg_info
176 return self._pkg_info_path
177
154 def info(self): 178 def info(self):
155 """return info dictionary for package""" 179 """return info dictionary for package"""
156 # could use pkginfo 180 # could use pkginfo module
157 181
158 if self._pkg_info_path: 182 pkg_info = self._pkg_info()
159 pkg_info = self._pkg_info_path
160 else:
161 try:
162 egg_info = self._egg_info()
163 pkg_info = os.path.join(egg_info, 'PKG-INFO')
164 except BaseException, exception:
165 # try to get the package info from a file
166 raise NotImplementedError("TODO: try to get the package info from a file")
167 183
168 # read the package information 184 # read the package information
169 info_dict = {} 185 info_dict = {}
170 for line in file(pkg_info).readlines(): 186 for line in file(pkg_info).readlines():
171 if not line or line[0].isspace(): 187 if not line or line[0].isspace():