Mercurial > piecrust2
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: |