Skip to content

Commit 49c397c

Browse files
feat: optimize the example scripts
1 parent 81c3981 commit 49c397c

1 file changed

Lines changed: 39 additions & 26 deletions

File tree

scripts/build_examples.py

Lines changed: 39 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -171,45 +171,58 @@ def build_project(project_dir: Path) -> BuildResult:
171171

172172
def print_results(results: list[BuildResult], code_root: Path) -> None:
173173
"""Print build results summary."""
174+
in_ci = os.environ.get('CI') is not None
174175
passed = [r for r in results if r.success]
175176
failed = [r for r in results if not r.success]
176177

177-
print()
178-
print("=" * 60)
179-
print("Build Results")
180-
print("=" * 60)
178+
print(flush=True)
179+
print("=" * 60, flush=True)
180+
print("Build Results", flush=True)
181+
print("=" * 60, flush=True)
181182

182183
for r in results:
183184
status = "PASS" if r.success else "FAIL"
184185
rel = r.path.relative_to(code_root)
185-
print(f" [{status}] {rel} - {r.duration:.1f}s")
186+
print(f" [{status}] {rel} - {r.duration:.1f}s", flush=True)
186187

187-
print()
188-
print(f"Total: {len(results)} | Passed: {len(passed)} | Failed: {len(failed)}")
188+
print(flush=True)
189+
print(f"Total: {len(results)} | Passed: {len(passed)} | Failed: {len(failed)}", flush=True)
189190

190-
if failed:
191-
print()
192-
print("Failed builds:")
193-
print("-" * 60)
194-
for r in failed:
195-
rel = r.path.relative_to(code_root)
196-
print(f"\n {rel}:")
197-
# Show error lines from the output
191+
# Print detailed output for all builds, grouped in CI
192+
for r in results:
193+
if not r.output.strip():
194+
continue
195+
rel = r.path.relative_to(code_root)
196+
status = "PASS" if r.success else "FAIL"
197+
if in_ci:
198+
print(f"\n::group::[{status}] {rel}", flush=True)
199+
else:
200+
print(f"\n--- [{status}] {rel} ---", flush=True)
201+
202+
if r.success:
203+
# Passing builds: show last 5 lines (configure + build summary)
204+
lines = r.output.strip().split('\n')
205+
for line in lines[-5:]:
206+
print(f" {line}", flush=True)
207+
else:
208+
# Failed builds: show error lines, fallback to last 20
198209
lines = r.output.strip().split('\n')
199210
error_lines = [l for l in lines if 'error:' in l.lower()]
200211
if error_lines:
201212
for line in error_lines:
202-
print(f" {line}")
213+
print(f" {line}", flush=True)
203214
else:
204-
# No 'error:' found, show last 20 lines
205215
for line in lines[-20:]:
206-
print(f" {line}")
216+
print(f" {line}", flush=True)
207217

208-
print()
218+
if in_ci:
219+
print("::endgroup::", flush=True)
220+
221+
print(flush=True)
209222
if failed:
210-
print(f"FAILED: {len(failed)} build(s) failed")
223+
print(f"FAILED: {len(failed)} build(s) failed", flush=True)
211224
else:
212-
print("All builds passed!")
225+
print("All builds passed!", flush=True)
213226

214227

215228
def main():
@@ -243,16 +256,16 @@ def main():
243256
print(f"No {target} projects found under {code_root}")
244257
sys.exit(0)
245258

246-
print(f"Discovered {len(projects)} {target} project(s):")
259+
print(f"Discovered {len(projects)} {target} project(s):", flush=True)
247260
for p in projects:
248-
print(f" {p.relative_to(code_root)}")
261+
print(f" {p.relative_to(code_root)}", flush=True)
249262

250263
if args.discover:
251264
sys.exit(0)
252265

253266
print()
254-
print(f"Building {len(projects)} project(s) with {args.jobs} worker(s)...")
255-
print()
267+
print(f"Building {len(projects)} project(s) with {args.jobs} worker(s)...", flush=True)
268+
print(flush=True)
256269

257270
results_map: dict[Path, BuildResult] = {}
258271
with ThreadPoolExecutor(max_workers=args.jobs) as executor:
@@ -265,7 +278,7 @@ def main():
265278
result = future.result()
266279
rel = result.path.relative_to(code_root)
267280
status = "OK" if result.success else "FAILED"
268-
print(f"[{done_count}/{len(projects)}] {rel}: {status} ({result.duration:.1f}s)")
281+
print(f"[{done_count}/{len(projects)}] {rel}: {status} ({result.duration:.1f}s)", flush=True)
269282
results_map[futures[future]] = result
270283

271284
results = [results_map[p] for p in projects]

0 commit comments

Comments
 (0)