Mercurial > piecrust2
annotate piecrust/commands/builtin/baking.py @ 804:08e6484a2600
bake: Show bake stats in descending order of time.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Wed, 12 Oct 2016 21:01:42 -0700 |
parents | 87df68be4cc8 |
children | 4850f8c21b6e |
rev | line source |
---|---|
121 | 1 import time |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
2 import os.path |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
3 import logging |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
4 import hashlib |
92
0dd43c5f5484
More options for the `showrecord` command.
Ludovic Chabant <ludovic@chabant.com>
parents:
45
diff
changeset
|
5 import fnmatch |
0dd43c5f5484
More options for the `showrecord` command.
Ludovic Chabant <ludovic@chabant.com>
parents:
45
diff
changeset
|
6 import datetime |
421
4a43d7015b75
bake: Improve performance timers reports.
Ludovic Chabant <ludovic@chabant.com>
parents:
415
diff
changeset
|
7 from colorama import Fore |
580
c7ac7dc2fe73
bake: Add option to bake assets for FoodTruck. This is likely temporary.
Ludovic Chabant <ludovic@chabant.com>
parents:
466
diff
changeset
|
8 from piecrust import CACHE_DIR |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
9 from piecrust.baking.baker import Baker |
334
b034f6f15e22
bake: Several bug taxonomy-related fixes for incorrect incremental bakes.
Ludovic Chabant <ludovic@chabant.com>
parents:
331
diff
changeset
|
10 from piecrust.baking.records import ( |
411
e7b865f8f335
bake: Enable multiprocess baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
359
diff
changeset
|
11 BakeRecord, BakeRecordEntry, SubPageBakeInfo) |
120
133845647083
Better error management and removal support in baking/processing.
Ludovic Chabant <ludovic@chabant.com>
parents:
92
diff
changeset
|
12 from piecrust.chefutil import format_timed |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
13 from piecrust.commands.base import ChefCommand |
687
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
14 from piecrust.environment import ExecutionStats |
415
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
15 from piecrust.processing.pipeline import ProcessorPipeline |
194
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
16 from piecrust.processing.records import ( |
221
f82262f59600
bake: Fix processing record bugs and error logging for external processes.
Ludovic Chabant <ludovic@chabant.com>
parents:
220
diff
changeset
|
17 ProcessorPipelineRecord, |
754
78de21447e4e
showrecord: Fix some crashes and incorrect information.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
18 FLAG_PREPARED, FLAG_PROCESSED, FLAG_BYPASSED_STRUCTURED_PROCESSING, |
78de21447e4e
showrecord: Fix some crashes and incorrect information.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
19 FLAG_COLLAPSED_FROM_LAST_RUN) |
415
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
20 from piecrust.rendering import ( |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
21 PASS_FORMATTING, PASS_RENDERING) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
22 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
23 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
24 logger = logging.getLogger(__name__) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
25 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
26 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
27 class BakeCommand(ChefCommand): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
28 def __init__(self): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
29 super(BakeCommand, self).__init__() |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
30 self.name = 'bake' |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
31 self.description = "Bakes your website into static HTML files." |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
32 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
33 def setupParser(self, parser, app): |
192
4c0ab0b044fe
cosmetic: Fix some PEP8 issues.
Ludovic Chabant <ludovic@chabant.com>
parents:
127
diff
changeset
|
34 parser.add_argument( |
4c0ab0b044fe
cosmetic: Fix some PEP8 issues.
Ludovic Chabant <ludovic@chabant.com>
parents:
127
diff
changeset
|
35 '-o', '--output', |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
36 help="The directory to put all the baked HTML files into " |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
37 "(defaults to `_counter`)") |
192
4c0ab0b044fe
cosmetic: Fix some PEP8 issues.
Ludovic Chabant <ludovic@chabant.com>
parents:
127
diff
changeset
|
38 parser.add_argument( |
4c0ab0b044fe
cosmetic: Fix some PEP8 issues.
Ludovic Chabant <ludovic@chabant.com>
parents:
127
diff
changeset
|
39 '-f', '--force', |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
40 help="Force re-baking the entire website.", |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
41 action='store_true') |
192
4c0ab0b044fe
cosmetic: Fix some PEP8 issues.
Ludovic Chabant <ludovic@chabant.com>
parents:
127
diff
changeset
|
42 parser.add_argument( |
411
e7b865f8f335
bake: Enable multiprocess baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
359
diff
changeset
|
43 '-w', '--workers', |
e7b865f8f335
bake: Enable multiprocess baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
359
diff
changeset
|
44 help="The number of worker processes to spawn.", |
e7b865f8f335
bake: Enable multiprocess baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
359
diff
changeset
|
45 type=int, default=-1) |
e7b865f8f335
bake: Enable multiprocess baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
359
diff
changeset
|
46 parser.add_argument( |
462
04abc97dd3b6
bake: Add CLI argument to specify job batch size.
Ludovic Chabant <ludovic@chabant.com>
parents:
421
diff
changeset
|
47 '--batch-size', |
04abc97dd3b6
bake: Add CLI argument to specify job batch size.
Ludovic Chabant <ludovic@chabant.com>
parents:
421
diff
changeset
|
48 help="The number of jobs per batch.", |
04abc97dd3b6
bake: Add CLI argument to specify job batch size.
Ludovic Chabant <ludovic@chabant.com>
parents:
421
diff
changeset
|
49 type=int, default=-1) |
04abc97dd3b6
bake: Add CLI argument to specify job batch size.
Ludovic Chabant <ludovic@chabant.com>
parents:
421
diff
changeset
|
50 parser.add_argument( |
220
84e2bc2d16cb
bake: Change arguments to selectively bake to make them symmetrical.
Ludovic Chabant <ludovic@chabant.com>
parents:
218
diff
changeset
|
51 '--assets-only', |
84e2bc2d16cb
bake: Change arguments to selectively bake to make them symmetrical.
Ludovic Chabant <ludovic@chabant.com>
parents:
218
diff
changeset
|
52 help="Only bake the assets (don't bake the web pages).", |
84e2bc2d16cb
bake: Change arguments to selectively bake to make them symmetrical.
Ludovic Chabant <ludovic@chabant.com>
parents:
218
diff
changeset
|
53 action='store_true') |
84e2bc2d16cb
bake: Change arguments to selectively bake to make them symmetrical.
Ludovic Chabant <ludovic@chabant.com>
parents:
218
diff
changeset
|
54 parser.add_argument( |
84e2bc2d16cb
bake: Change arguments to selectively bake to make them symmetrical.
Ludovic Chabant <ludovic@chabant.com>
parents:
218
diff
changeset
|
55 '--html-only', |
415
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
56 help="Only bake the pages (don't run the asset pipeline).", |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
57 action='store_true') |
411
e7b865f8f335
bake: Enable multiprocess baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
359
diff
changeset
|
58 parser.add_argument( |
687
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
59 '--show-stats', |
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
60 help="Show detailed information about the bake.", |
411
e7b865f8f335
bake: Enable multiprocess baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
359
diff
changeset
|
61 action='store_true') |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
62 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
63 def run(self, ctx): |
127
bc63dc20baa0
Fix how we pass the out directory to the baking modules.
Ludovic Chabant <ludovic@chabant.com>
parents:
121
diff
changeset
|
64 out_dir = (ctx.args.output or |
bc63dc20baa0
Fix how we pass the out directory to the baking modules.
Ludovic Chabant <ludovic@chabant.com>
parents:
121
diff
changeset
|
65 os.path.join(ctx.app.root_dir, '_counter')) |
bc63dc20baa0
Fix how we pass the out directory to the baking modules.
Ludovic Chabant <ludovic@chabant.com>
parents:
121
diff
changeset
|
66 |
215
a47580a0955b
bake: Better error handling for the processing pipeline.
Ludovic Chabant <ludovic@chabant.com>
parents:
205
diff
changeset
|
67 success = True |
687
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
68 ctx.stats = {} |
411
e7b865f8f335
bake: Enable multiprocess baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
359
diff
changeset
|
69 start_time = time.perf_counter() |
39
2f717f961996
Better error reporting and cache validation.
Ludovic Chabant <ludovic@chabant.com>
parents:
3
diff
changeset
|
70 try: |
120
133845647083
Better error management and removal support in baking/processing.
Ludovic Chabant <ludovic@chabant.com>
parents:
92
diff
changeset
|
71 # Bake the site sources. |
220
84e2bc2d16cb
bake: Change arguments to selectively bake to make them symmetrical.
Ludovic Chabant <ludovic@chabant.com>
parents:
218
diff
changeset
|
72 if not ctx.args.assets_only: |
84e2bc2d16cb
bake: Change arguments to selectively bake to make them symmetrical.
Ludovic Chabant <ludovic@chabant.com>
parents:
218
diff
changeset
|
73 success = success & self._bakeSources(ctx, out_dir) |
120
133845647083
Better error management and removal support in baking/processing.
Ludovic Chabant <ludovic@chabant.com>
parents:
92
diff
changeset
|
74 |
133845647083
Better error management and removal support in baking/processing.
Ludovic Chabant <ludovic@chabant.com>
parents:
92
diff
changeset
|
75 # Bake the assets. |
220
84e2bc2d16cb
bake: Change arguments to selectively bake to make them symmetrical.
Ludovic Chabant <ludovic@chabant.com>
parents:
218
diff
changeset
|
76 if not ctx.args.html_only: |
215
a47580a0955b
bake: Better error handling for the processing pipeline.
Ludovic Chabant <ludovic@chabant.com>
parents:
205
diff
changeset
|
77 success = success & self._bakeAssets(ctx, out_dir) |
120
133845647083
Better error management and removal support in baking/processing.
Ludovic Chabant <ludovic@chabant.com>
parents:
92
diff
changeset
|
78 |
687
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
79 # Show merged stats. |
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
80 if ctx.args.show_stats: |
415
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
81 logger.info("-------------------") |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
82 logger.info("Timing information:") |
687
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
83 _show_stats(ctx.stats) |
415
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
84 |
120
133845647083
Better error management and removal support in baking/processing.
Ludovic Chabant <ludovic@chabant.com>
parents:
92
diff
changeset
|
85 # All done. |
192
4c0ab0b044fe
cosmetic: Fix some PEP8 issues.
Ludovic Chabant <ludovic@chabant.com>
parents:
127
diff
changeset
|
86 logger.info('-------------------------') |
4c0ab0b044fe
cosmetic: Fix some PEP8 issues.
Ludovic Chabant <ludovic@chabant.com>
parents:
127
diff
changeset
|
87 logger.info(format_timed(start_time, 'done baking')) |
215
a47580a0955b
bake: Better error handling for the processing pipeline.
Ludovic Chabant <ludovic@chabant.com>
parents:
205
diff
changeset
|
88 return 0 if success else 1 |
39
2f717f961996
Better error reporting and cache validation.
Ludovic Chabant <ludovic@chabant.com>
parents:
3
diff
changeset
|
89 except Exception as ex: |
43 | 90 if ctx.app.debug: |
91 logger.exception(ex) | |
92 else: | |
93 logger.error(str(ex)) | |
39
2f717f961996
Better error reporting and cache validation.
Ludovic Chabant <ludovic@chabant.com>
parents:
3
diff
changeset
|
94 return 1 |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
95 |
127
bc63dc20baa0
Fix how we pass the out directory to the baking modules.
Ludovic Chabant <ludovic@chabant.com>
parents:
121
diff
changeset
|
96 def _bakeSources(self, ctx, out_dir): |
411
e7b865f8f335
bake: Enable multiprocess baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
359
diff
changeset
|
97 if ctx.args.workers > 0: |
e7b865f8f335
bake: Enable multiprocess baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
359
diff
changeset
|
98 ctx.app.config.set('baker/workers', ctx.args.workers) |
462
04abc97dd3b6
bake: Add CLI argument to specify job batch size.
Ludovic Chabant <ludovic@chabant.com>
parents:
421
diff
changeset
|
99 if ctx.args.batch_size > 0: |
04abc97dd3b6
bake: Add CLI argument to specify job batch size.
Ludovic Chabant <ludovic@chabant.com>
parents:
421
diff
changeset
|
100 ctx.app.config.set('baker/batch_size', ctx.args.batch_size) |
120
133845647083
Better error management and removal support in baking/processing.
Ludovic Chabant <ludovic@chabant.com>
parents:
92
diff
changeset
|
101 baker = Baker( |
127
bc63dc20baa0
Fix how we pass the out directory to the baking modules.
Ludovic Chabant <ludovic@chabant.com>
parents:
121
diff
changeset
|
102 ctx.app, out_dir, |
466
456db44dcc53
bake: Pass the config variants and values from the CLI to the baker.
Ludovic Chabant <ludovic@chabant.com>
parents:
462
diff
changeset
|
103 force=ctx.args.force, |
456db44dcc53
bake: Pass the config variants and values from the CLI to the baker.
Ludovic Chabant <ludovic@chabant.com>
parents:
462
diff
changeset
|
104 applied_config_variant=ctx.config_variant, |
456db44dcc53
bake: Pass the config variants and values from the CLI to the baker.
Ludovic Chabant <ludovic@chabant.com>
parents:
462
diff
changeset
|
105 applied_config_values=ctx.config_values) |
217
1f4c3dae1fe8
bake: Better error handling for site baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
215
diff
changeset
|
106 record = baker.bake() |
687
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
107 _merge_stats(record.stats, ctx.stats) |
217
1f4c3dae1fe8
bake: Better error handling for site baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
215
diff
changeset
|
108 return record.success |
120
133845647083
Better error management and removal support in baking/processing.
Ludovic Chabant <ludovic@chabant.com>
parents:
92
diff
changeset
|
109 |
127
bc63dc20baa0
Fix how we pass the out directory to the baking modules.
Ludovic Chabant <ludovic@chabant.com>
parents:
121
diff
changeset
|
110 def _bakeAssets(self, ctx, out_dir): |
120
133845647083
Better error management and removal support in baking/processing.
Ludovic Chabant <ludovic@chabant.com>
parents:
92
diff
changeset
|
111 proc = ProcessorPipeline( |
205
e725af1d48fb
bake: Changes in how assets directories are configured.
Ludovic Chabant <ludovic@chabant.com>
parents:
201
diff
changeset
|
112 ctx.app, out_dir, |
666
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
653
diff
changeset
|
113 force=ctx.args.force, |
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
653
diff
changeset
|
114 applied_config_variant=ctx.config_variant, |
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
653
diff
changeset
|
115 applied_config_values=ctx.config_values) |
215
a47580a0955b
bake: Better error handling for the processing pipeline.
Ludovic Chabant <ludovic@chabant.com>
parents:
205
diff
changeset
|
116 record = proc.run() |
687
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
117 _merge_stats(record.stats, ctx.stats) |
215
a47580a0955b
bake: Better error handling for the processing pipeline.
Ludovic Chabant <ludovic@chabant.com>
parents:
205
diff
changeset
|
118 return record.success |
120
133845647083
Better error management and removal support in baking/processing.
Ludovic Chabant <ludovic@chabant.com>
parents:
92
diff
changeset
|
119 |
133845647083
Better error management and removal support in baking/processing.
Ludovic Chabant <ludovic@chabant.com>
parents:
92
diff
changeset
|
120 |
687
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
121 def _merge_stats(source, target): |
415
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
122 if source is None: |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
123 return |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
124 |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
125 for name, val in source.items(): |
687
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
126 if name not in target: |
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
127 target[name] = ExecutionStats() |
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
128 target[name].mergeStats(val) |
421
4a43d7015b75
bake: Improve performance timers reports.
Ludovic Chabant <ludovic@chabant.com>
parents:
415
diff
changeset
|
129 |
4a43d7015b75
bake: Improve performance timers reports.
Ludovic Chabant <ludovic@chabant.com>
parents:
415
diff
changeset
|
130 |
692
c11a4339fccb
bake: Show more stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
687
diff
changeset
|
131 def _show_stats(stats, *, full=False): |
687
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
132 indent = ' ' |
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
133 for name in sorted(stats.keys()): |
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
134 logger.info('%s:' % name) |
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
135 s = stats[name] |
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
136 |
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
137 logger.info(' Timers:') |
804
08e6484a2600
bake: Show bake stats in descending order of time.
Ludovic Chabant <ludovic@chabant.com>
parents:
801
diff
changeset
|
138 for name, val in sorted(s.timers.items(), key=lambda i: i[1], |
08e6484a2600
bake: Show bake stats in descending order of time.
Ludovic Chabant <ludovic@chabant.com>
parents:
801
diff
changeset
|
139 reverse=True): |
08e6484a2600
bake: Show bake stats in descending order of time.
Ludovic Chabant <ludovic@chabant.com>
parents:
801
diff
changeset
|
140 val_str = '%8.1f s' % val |
421
4a43d7015b75
bake: Improve performance timers reports.
Ludovic Chabant <ludovic@chabant.com>
parents:
415
diff
changeset
|
141 logger.info( |
4a43d7015b75
bake: Improve performance timers reports.
Ludovic Chabant <ludovic@chabant.com>
parents:
415
diff
changeset
|
142 "%s[%s%s%s] %s" % |
4a43d7015b75
bake: Improve performance timers reports.
Ludovic Chabant <ludovic@chabant.com>
parents:
415
diff
changeset
|
143 (indent, Fore.GREEN, val_str, Fore.RESET, name)) |
687
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
144 |
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
145 logger.info(' Counters:') |
692
c11a4339fccb
bake: Show more stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
687
diff
changeset
|
146 for name in sorted(s.counters.keys()): |
c11a4339fccb
bake: Show more stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
687
diff
changeset
|
147 val_str = '%8d ' % s.counters[name] |
687
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
148 logger.info( |
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
149 "%s[%s%s%s] %s" % |
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
150 (indent, Fore.GREEN, val_str, Fore.RESET, name)) |
421
4a43d7015b75
bake: Improve performance timers reports.
Ludovic Chabant <ludovic@chabant.com>
parents:
415
diff
changeset
|
151 |
687
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
152 logger.info(' Manifests:') |
692
c11a4339fccb
bake: Show more stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
687
diff
changeset
|
153 for name in sorted(s.manifests.keys()): |
c11a4339fccb
bake: Show more stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
687
diff
changeset
|
154 val = s.manifests[name] |
687
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
155 logger.info( |
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
156 "%s[%s%s%s] [%d entries]" % |
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
157 (indent, Fore.CYAN, name, Fore.RESET, len(val))) |
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
158 if full: |
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
159 for v in val: |
61d606fbc313
bake: Change `show-timers` to `show-stats`, add stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
160 logger.info("%s - %s" % (indent, v)) |
415
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
161 |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
162 |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
163 class ShowRecordCommand(ChefCommand): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
164 def __init__(self): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
165 super(ShowRecordCommand, self).__init__() |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
166 self.name = 'showrecord' |
192
4c0ab0b044fe
cosmetic: Fix some PEP8 issues.
Ludovic Chabant <ludovic@chabant.com>
parents:
127
diff
changeset
|
167 self.description = ("Shows the bake record for a given output " |
4c0ab0b044fe
cosmetic: Fix some PEP8 issues.
Ludovic Chabant <ludovic@chabant.com>
parents:
127
diff
changeset
|
168 "directory.") |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
169 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
170 def setupParser(self, parser, app): |
192
4c0ab0b044fe
cosmetic: Fix some PEP8 issues.
Ludovic Chabant <ludovic@chabant.com>
parents:
127
diff
changeset
|
171 parser.add_argument( |
4c0ab0b044fe
cosmetic: Fix some PEP8 issues.
Ludovic Chabant <ludovic@chabant.com>
parents:
127
diff
changeset
|
172 '-o', '--output', |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
173 help="The output directory for which to show the bake record " |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
174 "(defaults to `_counter`)", |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
175 nargs='?') |
192
4c0ab0b044fe
cosmetic: Fix some PEP8 issues.
Ludovic Chabant <ludovic@chabant.com>
parents:
127
diff
changeset
|
176 parser.add_argument( |
4c0ab0b044fe
cosmetic: Fix some PEP8 issues.
Ludovic Chabant <ludovic@chabant.com>
parents:
127
diff
changeset
|
177 '-p', '--path', |
92
0dd43c5f5484
More options for the `showrecord` command.
Ludovic Chabant <ludovic@chabant.com>
parents:
45
diff
changeset
|
178 help="A pattern that will be used to filter the relative path " |
0dd43c5f5484
More options for the `showrecord` command.
Ludovic Chabant <ludovic@chabant.com>
parents:
45
diff
changeset
|
179 "of entries to show.") |
331
f0fc2a9d3191
showrecord: Add ability to filter on the output path.
Ludovic Chabant <ludovic@chabant.com>
parents:
221
diff
changeset
|
180 parser.add_argument( |
f0fc2a9d3191
showrecord: Add ability to filter on the output path.
Ludovic Chabant <ludovic@chabant.com>
parents:
221
diff
changeset
|
181 '-t', '--out', |
f0fc2a9d3191
showrecord: Add ability to filter on the output path.
Ludovic Chabant <ludovic@chabant.com>
parents:
221
diff
changeset
|
182 help="A pattern that will be used to filter the output path " |
f0fc2a9d3191
showrecord: Add ability to filter on the output path.
Ludovic Chabant <ludovic@chabant.com>
parents:
221
diff
changeset
|
183 "of entries to show.") |
334
b034f6f15e22
bake: Several bug taxonomy-related fixes for incorrect incremental bakes.
Ludovic Chabant <ludovic@chabant.com>
parents:
331
diff
changeset
|
184 parser.add_argument( |
b034f6f15e22
bake: Several bug taxonomy-related fixes for incorrect incremental bakes.
Ludovic Chabant <ludovic@chabant.com>
parents:
331
diff
changeset
|
185 '--last', |
b034f6f15e22
bake: Several bug taxonomy-related fixes for incorrect incremental bakes.
Ludovic Chabant <ludovic@chabant.com>
parents:
331
diff
changeset
|
186 type=int, |
b034f6f15e22
bake: Several bug taxonomy-related fixes for incorrect incremental bakes.
Ludovic Chabant <ludovic@chabant.com>
parents:
331
diff
changeset
|
187 default=0, |
b034f6f15e22
bake: Several bug taxonomy-related fixes for incorrect incremental bakes.
Ludovic Chabant <ludovic@chabant.com>
parents:
331
diff
changeset
|
188 help="Show the last Nth bake record.") |
415
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
189 parser.add_argument( |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
190 '--html-only', |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
191 action='store_true', |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
192 help="Only show records for pages (not from the asset " |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
193 "pipeline).") |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
194 parser.add_argument( |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
195 '--assets-only', |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
196 action='store_true', |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
197 help="Only show records for assets (not from pages).") |
692
c11a4339fccb
bake: Show more stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
687
diff
changeset
|
198 parser.add_argument( |
c11a4339fccb
bake: Show more stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
687
diff
changeset
|
199 '--show-stats', |
c11a4339fccb
bake: Show more stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
687
diff
changeset
|
200 action='store_true', |
c11a4339fccb
bake: Show more stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
687
diff
changeset
|
201 help="Show stats from the record.") |
801
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
202 parser.add_argument( |
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
203 '--show-manifest', |
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
204 help="Show manifest entries from the record.") |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
205 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
206 def run(self, ctx): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
207 out_dir = ctx.args.output or os.path.join(ctx.app.root_dir, '_counter') |
334
b034f6f15e22
bake: Several bug taxonomy-related fixes for incorrect incremental bakes.
Ludovic Chabant <ludovic@chabant.com>
parents:
331
diff
changeset
|
208 record_id = hashlib.md5(out_dir.encode('utf8')).hexdigest() |
b034f6f15e22
bake: Several bug taxonomy-related fixes for incorrect incremental bakes.
Ludovic Chabant <ludovic@chabant.com>
parents:
331
diff
changeset
|
209 suffix = '' if ctx.args.last == 0 else '.%d' % ctx.args.last |
b034f6f15e22
bake: Several bug taxonomy-related fixes for incorrect incremental bakes.
Ludovic Chabant <ludovic@chabant.com>
parents:
331
diff
changeset
|
210 record_name = '%s%s.record' % (record_id, suffix) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
211 |
92
0dd43c5f5484
More options for the `showrecord` command.
Ludovic Chabant <ludovic@chabant.com>
parents:
45
diff
changeset
|
212 pattern = None |
0dd43c5f5484
More options for the `showrecord` command.
Ludovic Chabant <ludovic@chabant.com>
parents:
45
diff
changeset
|
213 if ctx.args.path: |
0dd43c5f5484
More options for the `showrecord` command.
Ludovic Chabant <ludovic@chabant.com>
parents:
45
diff
changeset
|
214 pattern = '*%s*' % ctx.args.path.strip('*') |
0dd43c5f5484
More options for the `showrecord` command.
Ludovic Chabant <ludovic@chabant.com>
parents:
45
diff
changeset
|
215 |
331
f0fc2a9d3191
showrecord: Add ability to filter on the output path.
Ludovic Chabant <ludovic@chabant.com>
parents:
221
diff
changeset
|
216 out_pattern = None |
f0fc2a9d3191
showrecord: Add ability to filter on the output path.
Ludovic Chabant <ludovic@chabant.com>
parents:
221
diff
changeset
|
217 if ctx.args.out: |
f0fc2a9d3191
showrecord: Add ability to filter on the output path.
Ludovic Chabant <ludovic@chabant.com>
parents:
221
diff
changeset
|
218 out_pattern = '*%s*' % ctx.args.out.strip('*') |
f0fc2a9d3191
showrecord: Add ability to filter on the output path.
Ludovic Chabant <ludovic@chabant.com>
parents:
221
diff
changeset
|
219 |
801
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
220 if not ctx.args.show_stats and not ctx.args.show_manifest: |
701
066d6156525c
showrecord: Don't print the record when you just want the stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
698
diff
changeset
|
221 if not ctx.args.assets_only: |
066d6156525c
showrecord: Don't print the record when you just want the stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
698
diff
changeset
|
222 self._showBakeRecord( |
066d6156525c
showrecord: Don't print the record when you just want the stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
698
diff
changeset
|
223 ctx, record_name, pattern, out_pattern) |
066d6156525c
showrecord: Don't print the record when you just want the stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
698
diff
changeset
|
224 if not ctx.args.html_only: |
066d6156525c
showrecord: Don't print the record when you just want the stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
698
diff
changeset
|
225 self._showProcessingRecord( |
066d6156525c
showrecord: Don't print the record when you just want the stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
698
diff
changeset
|
226 ctx, record_name, pattern, out_pattern) |
801
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
227 return |
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
228 |
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
229 stats = {} |
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
230 bake_rec = self._getBakeRecord(ctx, record_name) |
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
231 if bake_rec: |
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
232 _merge_stats(bake_rec.stats, stats) |
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
233 proc_rec = self._getProcessingRecord(ctx, record_name) |
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
234 if proc_rec: |
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
235 _merge_stats(proc_rec.stats, stats) |
692
c11a4339fccb
bake: Show more stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
687
diff
changeset
|
236 |
c11a4339fccb
bake: Show more stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
687
diff
changeset
|
237 if ctx.args.show_stats: |
701
066d6156525c
showrecord: Don't print the record when you just want the stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
698
diff
changeset
|
238 _show_stats(stats, full=False) |
415
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
239 |
801
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
240 if ctx.args.show_manifest: |
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
241 for name in sorted(stats.keys()): |
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
242 logger.info('%s:' % name) |
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
243 s = stats[name] |
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
244 for name in sorted(s.manifests.keys()): |
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
245 if ctx.args.show_manifest.lower() in name.lower(): |
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
246 val = s.manifests[name] |
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
247 logger.info( |
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
248 " [%s%s%s] [%d entries]" % |
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
249 (Fore.CYAN, name, Fore.RESET, len(val))) |
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
250 for v in val: |
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
251 logger.info(" - %s" % v) |
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
252 |
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
253 |
87df68be4cc8
showrecord: Add `show-manifest` argument.
Ludovic Chabant <ludovic@chabant.com>
parents:
754
diff
changeset
|
254 |
701
066d6156525c
showrecord: Don't print the record when you just want the stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
698
diff
changeset
|
255 def _getBakeRecord(self, ctx, record_name): |
194
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
256 record_cache = ctx.app.cache.getCache('baker') |
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
257 if not record_cache.has(record_name): |
698
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
258 logger.warning( |
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
259 "No page bake record has been created for this output " |
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
260 "path.") |
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
261 return None |
194
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
262 |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
263 record = BakeRecord.load(record_cache.getCachePath(record_name)) |
701
066d6156525c
showrecord: Don't print the record when you just want the stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
698
diff
changeset
|
264 return record |
066d6156525c
showrecord: Don't print the record when you just want the stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
698
diff
changeset
|
265 |
066d6156525c
showrecord: Don't print the record when you just want the stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
698
diff
changeset
|
266 def _showBakeRecord(self, ctx, record_name, pattern, out_pattern): |
066d6156525c
showrecord: Don't print the record when you just want the stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
698
diff
changeset
|
267 record = self._getBakeRecord(ctx, record_name) |
754
78de21447e4e
showrecord: Fix some crashes and incorrect information.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
268 if record is None: |
78de21447e4e
showrecord: Fix some crashes and incorrect information.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
269 return |
701
066d6156525c
showrecord: Don't print the record when you just want the stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
698
diff
changeset
|
270 |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
271 logging.info("Bake record for: %s" % record.out_dir) |
334
b034f6f15e22
bake: Several bug taxonomy-related fixes for incorrect incremental bakes.
Ludovic Chabant <ludovic@chabant.com>
parents:
331
diff
changeset
|
272 logging.info("From: %s" % record_name) |
92
0dd43c5f5484
More options for the `showrecord` command.
Ludovic Chabant <ludovic@chabant.com>
parents:
45
diff
changeset
|
273 logging.info("Last baked: %s" % |
192
4c0ab0b044fe
cosmetic: Fix some PEP8 issues.
Ludovic Chabant <ludovic@chabant.com>
parents:
127
diff
changeset
|
274 datetime.datetime.fromtimestamp(record.bake_time)) |
218
10f24c62b05b
showrecord: Show the overall status (success/failed) of the bake.
Ludovic Chabant <ludovic@chabant.com>
parents:
217
diff
changeset
|
275 if record.success: |
10f24c62b05b
showrecord: Show the overall status (success/failed) of the bake.
Ludovic Chabant <ludovic@chabant.com>
parents:
217
diff
changeset
|
276 logging.info("Status: success") |
10f24c62b05b
showrecord: Show the overall status (success/failed) of the bake.
Ludovic Chabant <ludovic@chabant.com>
parents:
217
diff
changeset
|
277 else: |
10f24c62b05b
showrecord: Show the overall status (success/failed) of the bake.
Ludovic Chabant <ludovic@chabant.com>
parents:
217
diff
changeset
|
278 logging.error("Status: failed") |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
279 logging.info("Entries:") |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
280 for entry in record.entries: |
415
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
281 if pattern and not fnmatch.fnmatch(entry.path, pattern): |
331
f0fc2a9d3191
showrecord: Add ability to filter on the output path.
Ludovic Chabant <ludovic@chabant.com>
parents:
221
diff
changeset
|
282 continue |
f0fc2a9d3191
showrecord: Add ability to filter on the output path.
Ludovic Chabant <ludovic@chabant.com>
parents:
221
diff
changeset
|
283 if out_pattern and not ( |
754
78de21447e4e
showrecord: Fix some crashes and incorrect information.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
284 any([o for o in entry.all_out_paths |
331
f0fc2a9d3191
showrecord: Add ability to filter on the output path.
Ludovic Chabant <ludovic@chabant.com>
parents:
221
diff
changeset
|
285 if fnmatch.fnmatch(o, out_pattern)])): |
f0fc2a9d3191
showrecord: Add ability to filter on the output path.
Ludovic Chabant <ludovic@chabant.com>
parents:
221
diff
changeset
|
286 continue |
f0fc2a9d3191
showrecord: Add ability to filter on the output path.
Ludovic Chabant <ludovic@chabant.com>
parents:
221
diff
changeset
|
287 |
415
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
288 flags = _get_flag_descriptions( |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
289 entry.flags, |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
290 { |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
291 BakeRecordEntry.FLAG_NEW: 'new', |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
292 BakeRecordEntry.FLAG_SOURCE_MODIFIED: 'modified', |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
293 BakeRecordEntry.FLAG_OVERRIDEN: 'overriden'}) |
334
b034f6f15e22
bake: Several bug taxonomy-related fixes for incorrect incremental bakes.
Ludovic Chabant <ludovic@chabant.com>
parents:
331
diff
changeset
|
294 |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
295 logging.info(" - ") |
415
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
296 |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
297 rel_path = os.path.relpath(entry.path, ctx.app.root_dir) |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
298 logging.info(" path: %s" % rel_path) |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
299 logging.info(" source: %s" % entry.source_name) |
711
ab5c6a8ae90a
bake: Replace hard-coded taxonomy support with "generator" system.
Ludovic Chabant <ludovic@chabant.com>
parents:
701
diff
changeset
|
300 if entry.extra_key: |
ab5c6a8ae90a
bake: Replace hard-coded taxonomy support with "generator" system.
Ludovic Chabant <ludovic@chabant.com>
parents:
701
diff
changeset
|
301 logging.info(" extra key: %s" % entry.extra_key) |
415
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
302 logging.info(" flags: %s" % _join(flags)) |
92
0dd43c5f5484
More options for the `showrecord` command.
Ludovic Chabant <ludovic@chabant.com>
parents:
45
diff
changeset
|
303 logging.info(" config: %s" % entry.config) |
338
938be93215cb
bake: Improve render context and bake record, fix incremental bake bugs.
Ludovic Chabant <ludovic@chabant.com>
parents:
334
diff
changeset
|
304 |
415
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
305 if entry.errors: |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
306 logging.error(" errors: %s" % entry.errors) |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
307 |
338
938be93215cb
bake: Improve render context and bake record, fix incremental bake bugs.
Ludovic Chabant <ludovic@chabant.com>
parents:
334
diff
changeset
|
308 logging.info(" %d sub-pages:" % len(entry.subs)) |
938be93215cb
bake: Improve render context and bake record, fix incremental bake bugs.
Ludovic Chabant <ludovic@chabant.com>
parents:
334
diff
changeset
|
309 for sub in entry.subs: |
415
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
310 sub_flags = _get_flag_descriptions( |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
311 sub.flags, |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
312 { |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
313 SubPageBakeInfo.FLAG_BAKED: 'baked', |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
314 SubPageBakeInfo.FLAG_FORCED_BY_SOURCE: |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
315 'forced by source', |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
316 SubPageBakeInfo.FLAG_FORCED_BY_NO_PREVIOUS: |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
317 'forced by missing previous record entry', |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
318 SubPageBakeInfo.FLAG_FORCED_BY_PREVIOUS_ERRORS: |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
319 'forced by previous errors', |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
320 SubPageBakeInfo.FLAG_FORMATTING_INVALIDATED: |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
321 'formatting invalidated'}) |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
322 |
338
938be93215cb
bake: Improve render context and bake record, fix incremental bake bugs.
Ludovic Chabant <ludovic@chabant.com>
parents:
334
diff
changeset
|
323 logging.info(" - ") |
938be93215cb
bake: Improve render context and bake record, fix incremental bake bugs.
Ludovic Chabant <ludovic@chabant.com>
parents:
334
diff
changeset
|
324 logging.info(" URL: %s" % sub.out_uri) |
415
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
325 logging.info(" path: %s" % os.path.relpath( |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
326 sub.out_path, record.out_dir)) |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
327 logging.info(" flags: %s" % _join(sub_flags)) |
338
938be93215cb
bake: Improve render context and bake record, fix incremental bake bugs.
Ludovic Chabant <ludovic@chabant.com>
parents:
334
diff
changeset
|
328 |
698
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
329 pass_names = { |
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
330 PASS_FORMATTING: 'formatting pass', |
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
331 PASS_RENDERING: 'rendering pass'} |
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
332 for p, ri in enumerate(sub.render_info): |
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
333 logging.info(" - %s" % pass_names[p]) |
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
334 if not ri: |
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
335 logging.info(" no info") |
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
336 continue |
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
337 |
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
338 logging.info(" used sources: %s" % |
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
339 _join(ri.used_source_names)) |
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
340 pgn_info = 'no' |
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
341 if ri.used_pagination: |
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
342 pgn_info = 'yes' |
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
343 if ri.pagination_has_more: |
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
344 pgn_info += ', has more' |
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
345 logging.info(" used pagination: %s", pgn_info) |
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
346 logging.info(" used assets: %s", |
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
347 'yes' if ri.used_assets else 'no') |
711
ab5c6a8ae90a
bake: Replace hard-coded taxonomy support with "generator" system.
Ludovic Chabant <ludovic@chabant.com>
parents:
701
diff
changeset
|
348 logging.info(" other info:") |
ab5c6a8ae90a
bake: Replace hard-coded taxonomy support with "generator" system.
Ludovic Chabant <ludovic@chabant.com>
parents:
701
diff
changeset
|
349 for k, v in ri._custom_info.items(): |
ab5c6a8ae90a
bake: Replace hard-coded taxonomy support with "generator" system.
Ludovic Chabant <ludovic@chabant.com>
parents:
701
diff
changeset
|
350 logging.info(" - %s: %s" % (k, v)) |
338
938be93215cb
bake: Improve render context and bake record, fix incremental bake bugs.
Ludovic Chabant <ludovic@chabant.com>
parents:
334
diff
changeset
|
351 |
938be93215cb
bake: Improve render context and bake record, fix incremental bake bugs.
Ludovic Chabant <ludovic@chabant.com>
parents:
334
diff
changeset
|
352 if sub.errors: |
938be93215cb
bake: Improve render context and bake record, fix incremental bake bugs.
Ludovic Chabant <ludovic@chabant.com>
parents:
334
diff
changeset
|
353 logging.error(" errors: %s" % sub.errors) |
938be93215cb
bake: Improve render context and bake record, fix incremental bake bugs.
Ludovic Chabant <ludovic@chabant.com>
parents:
334
diff
changeset
|
354 |
701
066d6156525c
showrecord: Don't print the record when you just want the stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
698
diff
changeset
|
355 def _getProcessingRecord(self, ctx, record_name): |
194
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
356 record_cache = ctx.app.cache.getCache('proc') |
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
357 if not record_cache.has(record_name): |
698
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
358 logger.warning( |
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
359 "No asset processing record has been created for this " |
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
360 "output path.") |
33ab9badfd7a
render: Change how we store render passes info.
Ludovic Chabant <ludovic@chabant.com>
parents:
692
diff
changeset
|
361 return None |
194
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
362 |
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
363 record = ProcessorPipelineRecord.load( |
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
364 record_cache.getCachePath(record_name)) |
701
066d6156525c
showrecord: Don't print the record when you just want the stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
698
diff
changeset
|
365 return record |
066d6156525c
showrecord: Don't print the record when you just want the stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
698
diff
changeset
|
366 |
066d6156525c
showrecord: Don't print the record when you just want the stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
698
diff
changeset
|
367 def _showProcessingRecord(self, ctx, record_name, pattern, out_pattern): |
066d6156525c
showrecord: Don't print the record when you just want the stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
698
diff
changeset
|
368 record = self._getProcessingRecord(ctx, record_name) |
066d6156525c
showrecord: Don't print the record when you just want the stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
698
diff
changeset
|
369 if record is None: |
066d6156525c
showrecord: Don't print the record when you just want the stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
698
diff
changeset
|
370 return |
066d6156525c
showrecord: Don't print the record when you just want the stats.
Ludovic Chabant <ludovic@chabant.com>
parents:
698
diff
changeset
|
371 |
194
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
372 logging.info("") |
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
373 logging.info("Processing record for: %s" % record.out_dir) |
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
374 logging.info("Last baked: %s" % |
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
375 datetime.datetime.fromtimestamp(record.process_time)) |
218
10f24c62b05b
showrecord: Show the overall status (success/failed) of the bake.
Ludovic Chabant <ludovic@chabant.com>
parents:
217
diff
changeset
|
376 if record.success: |
10f24c62b05b
showrecord: Show the overall status (success/failed) of the bake.
Ludovic Chabant <ludovic@chabant.com>
parents:
217
diff
changeset
|
377 logging.info("Status: success") |
10f24c62b05b
showrecord: Show the overall status (success/failed) of the bake.
Ludovic Chabant <ludovic@chabant.com>
parents:
217
diff
changeset
|
378 else: |
10f24c62b05b
showrecord: Show the overall status (success/failed) of the bake.
Ludovic Chabant <ludovic@chabant.com>
parents:
217
diff
changeset
|
379 logging.error("Status: failed") |
194
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
380 logging.info("Entries:") |
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
381 for entry in record.entries: |
415
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
382 rel_path = os.path.relpath(entry.path, ctx.app.root_dir) |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
383 if pattern and not fnmatch.fnmatch(rel_path, pattern): |
331
f0fc2a9d3191
showrecord: Add ability to filter on the output path.
Ludovic Chabant <ludovic@chabant.com>
parents:
221
diff
changeset
|
384 continue |
f0fc2a9d3191
showrecord: Add ability to filter on the output path.
Ludovic Chabant <ludovic@chabant.com>
parents:
221
diff
changeset
|
385 if out_pattern and not ( |
f0fc2a9d3191
showrecord: Add ability to filter on the output path.
Ludovic Chabant <ludovic@chabant.com>
parents:
221
diff
changeset
|
386 any([o for o in entry.rel_outputs |
f0fc2a9d3191
showrecord: Add ability to filter on the output path.
Ludovic Chabant <ludovic@chabant.com>
parents:
221
diff
changeset
|
387 if fnmatch.fnmatch(o, out_pattern)])): |
f0fc2a9d3191
showrecord: Add ability to filter on the output path.
Ludovic Chabant <ludovic@chabant.com>
parents:
221
diff
changeset
|
388 continue |
f0fc2a9d3191
showrecord: Add ability to filter on the output path.
Ludovic Chabant <ludovic@chabant.com>
parents:
221
diff
changeset
|
389 |
415
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
390 flags = _get_flag_descriptions( |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
391 entry.flags, |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
392 { |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
393 FLAG_PREPARED: 'prepared', |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
394 FLAG_PROCESSED: 'processed', |
754
78de21447e4e
showrecord: Fix some crashes and incorrect information.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
395 FLAG_BYPASSED_STRUCTURED_PROCESSING: 'external', |
78de21447e4e
showrecord: Fix some crashes and incorrect information.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
396 FLAG_COLLAPSED_FROM_LAST_RUN: 'from last run'}) |
415
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
397 |
194
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
398 logger.info(" - ") |
415
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
399 logger.info(" path: %s" % rel_path) |
194
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
400 logger.info(" out paths: %s" % entry.rel_outputs) |
415
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
401 logger.info(" flags: %s" % _join(flags)) |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
402 logger.info(" proc tree: %s" % _format_proc_tree( |
194
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
403 entry.proc_tree, 14*' ')) |
415
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
404 |
194
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
405 if entry.errors: |
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
406 logger.error(" errors: %s" % entry.errors) |
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
407 |
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
408 |
415
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
409 def _join(items, sep=', ', text_if_none='none'): |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
410 if items: |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
411 return sep.join(items) |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
412 return text_if_none |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
413 |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
414 |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
415 def _get_flag_descriptions(flags, descriptions): |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
416 res = [] |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
417 for k, v in descriptions.items(): |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
418 if flags & k: |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
419 res.append(v) |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
420 return res |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
421 |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
422 |
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
423 def _format_proc_tree(tree, margin='', level=0): |
194
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
424 name, children = tree |
221
f82262f59600
bake: Fix processing record bugs and error logging for external processes.
Ludovic Chabant <ludovic@chabant.com>
parents:
220
diff
changeset
|
425 res = '%s%s+ %s\n' % (margin if level > 0 else '', level * ' ', name) |
194
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
426 if children: |
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
427 for c in children: |
415
0e9a94b7fdfa
bake: Improve bake record information.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
428 res += _format_proc_tree(c, margin, level + 1) |
194
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
429 return res |
5d8351cb32d8
showrecord: Also show the pipeline record.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
430 |