comparison piecrust/commands/builtin/baking.py @ 801:87df68be4cc8

showrecord: Add `show-manifest` argument.
author Ludovic Chabant <ludovic@chabant.com>
date Thu, 29 Sep 2016 21:28:20 -0700
parents 78de21447e4e
children 08e6484a2600
comparison
equal deleted inserted replaced
800:d4b9d86d3d6f 801:87df68be4cc8
196 help="Only show records for assets (not from pages).") 196 help="Only show records for assets (not from pages).")
197 parser.add_argument( 197 parser.add_argument(
198 '--show-stats', 198 '--show-stats',
199 action='store_true', 199 action='store_true',
200 help="Show stats from the record.") 200 help="Show stats from the record.")
201 parser.add_argument(
202 '--show-manifest',
203 help="Show manifest entries from the record.")
201 204
202 def run(self, ctx): 205 def run(self, ctx):
203 out_dir = ctx.args.output or os.path.join(ctx.app.root_dir, '_counter') 206 out_dir = ctx.args.output or os.path.join(ctx.app.root_dir, '_counter')
204 record_id = hashlib.md5(out_dir.encode('utf8')).hexdigest() 207 record_id = hashlib.md5(out_dir.encode('utf8')).hexdigest()
205 suffix = '' if ctx.args.last == 0 else '.%d' % ctx.args.last 208 suffix = '' if ctx.args.last == 0 else '.%d' % ctx.args.last
211 214
212 out_pattern = None 215 out_pattern = None
213 if ctx.args.out: 216 if ctx.args.out:
214 out_pattern = '*%s*' % ctx.args.out.strip('*') 217 out_pattern = '*%s*' % ctx.args.out.strip('*')
215 218
216 if not ctx.args.show_stats: 219 if not ctx.args.show_stats and not ctx.args.show_manifest:
217 if not ctx.args.assets_only: 220 if not ctx.args.assets_only:
218 self._showBakeRecord( 221 self._showBakeRecord(
219 ctx, record_name, pattern, out_pattern) 222 ctx, record_name, pattern, out_pattern)
220 if not ctx.args.html_only: 223 if not ctx.args.html_only:
221 self._showProcessingRecord( 224 self._showProcessingRecord(
222 ctx, record_name, pattern, out_pattern) 225 ctx, record_name, pattern, out_pattern)
226 return
227
228 stats = {}
229 bake_rec = self._getBakeRecord(ctx, record_name)
230 if bake_rec:
231 _merge_stats(bake_rec.stats, stats)
232 proc_rec = self._getProcessingRecord(ctx, record_name)
233 if proc_rec:
234 _merge_stats(proc_rec.stats, stats)
223 235
224 if ctx.args.show_stats: 236 if ctx.args.show_stats:
225 stats = {}
226 bake_rec = self._getBakeRecord(ctx, record_name)
227 if bake_rec:
228 _merge_stats(bake_rec.stats, stats)
229 proc_rec = self._getProcessingRecord(ctx, record_name)
230 if proc_rec:
231 _merge_stats(proc_rec.stats, stats)
232 _show_stats(stats, full=False) 237 _show_stats(stats, full=False)
238
239 if ctx.args.show_manifest:
240 for name in sorted(stats.keys()):
241 logger.info('%s:' % name)
242 s = stats[name]
243 for name in sorted(s.manifests.keys()):
244 if ctx.args.show_manifest.lower() in name.lower():
245 val = s.manifests[name]
246 logger.info(
247 " [%s%s%s] [%d entries]" %
248 (Fore.CYAN, name, Fore.RESET, len(val)))
249 for v in val:
250 logger.info(" - %s" % v)
251
252
233 253
234 def _getBakeRecord(self, ctx, record_name): 254 def _getBakeRecord(self, ctx, record_name):
235 record_cache = ctx.app.cache.getCache('baker') 255 record_cache = ctx.app.cache.getCache('baker')
236 if not record_cache.has(record_name): 256 if not record_cache.has(record_name):
237 logger.warning( 257 logger.warning(