comparison piecrust/app.py @ 885:13e8b50a2113

publish: Fix publishers API and add a simple "copy" publisher.
author Ludovic Chabant <ludovic@chabant.com>
date Tue, 20 Jun 2017 21:12:35 -0700
parents d1095774bfcf
children cc2647360036
comparison
equal deleted inserted replaced
884:18b3e2acd069 885:13e8b50a2113
176 176
177 tgts = [] 177 tgts = []
178 publish_config = self.config.get('publish') 178 publish_config = self.config.get('publish')
179 if publish_config is None: 179 if publish_config is None:
180 return tgts 180 return tgts
181
181 for n, t in publish_config.items(): 182 for n, t in publish_config.items():
182 pub_type = None 183 pub_class = None
183 is_scheme = False
184 if isinstance(t, dict): 184 if isinstance(t, dict):
185 pub_type = t.get('type') 185 pub_type = t.get('type')
186 pub_class = defs_by_name[pub_type]
187 pub_cfg = t
186 elif isinstance(t, str): 188 elif isinstance(t, str):
187 comps = urllib.parse.urlparse(t) 189 comps = urllib.parse.urlparse(t)
188 pub_type = comps.scheme 190 pub_type = comps.scheme
189 is_scheme = True 191 pub_class = defs_by_scheme[pub_type]
190 cls = (defs_by_scheme.get(pub_type) if is_scheme 192 pub_cfg = None
191 else defs_by_name.get(pub_type)) 193 if pub_class is None:
192 if cls is None:
193 raise ConfigurationError("No such publisher: %s" % pub_type) 194 raise ConfigurationError("No such publisher: %s" % pub_type)
194 tgt = cls(self, n, t) 195
196 tgt = pub_class(self, n, pub_cfg)
197 if pub_cfg is None:
198 tgt.parseUrlTarget(comps)
199
195 tgts.append(tgt) 200 tgts.append(tgt)
196 return tgts 201 return tgts
197 202
198 def getSource(self, source_name): 203 def getSource(self, source_name):
199 for source in self.sources: 204 for source in self.sources: