Skip to content

Commit 5cd89f1

Browse files
committed
improve output
1 parent 48fe76a commit 5cd89f1

File tree

8 files changed

+47
-11
lines changed

8 files changed

+47
-11
lines changed
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

src/mdxify/cli.py

Lines changed: 47 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ def _render(self):
5252
# Format time
5353
def fmt_time(seconds):
5454
if seconds < 60:
55-
return f"{seconds:.1f}s"
55+
return f"{seconds:.3f}s"
5656
else:
57-
return f"{seconds/60:.1f}m"
57+
return f"{seconds/60:.3f}m"
5858

5959
# Build output line
6060
line = f"\r{self.desc}: [{bar}] {self.current}/{self.total} ({pct:.0f}%) | {fmt_time(elapsed)} elapsed"
@@ -316,6 +316,8 @@ def main():
316316
# Generate documentation
317317
generated_modules = []
318318
failed_modules = []
319+
updated_count = 0
320+
created_count = 0
319321

320322
start_time = time.time()
321323

@@ -373,12 +375,12 @@ def process_module(module_data):
373375
# Skip internal modules
374376
if not should_include_module(module_name, include_internal):
375377
msg = f"[{i}/{len(modules_to_process)}] Skipping {module_name} (internal module)" if verbose else None
376-
return (msg, None, None, "skipped")
378+
return (msg, None, None, "skipped", False)
377379

378380
source_file = get_module_source_file(module_name)
379381
if not source_file:
380382
msg = f"[{i}/{len(modules_to_process)}] Skipping {module_name} (no source file)" if verbose else None
381-
return (msg, None, None, "skipped")
383+
return (msg, None, None, "skipped", False)
382384

383385
try:
384386
module_start = time.time()
@@ -400,6 +402,7 @@ def process_module(module_data):
400402
else:
401403
output_file = args.output_dir / f"{module_name.replace('.', '-')}.mdx"
402404

405+
file_existed = output_file.exists()
403406
generate_mdx(
404407
module_info,
405408
output_file,
@@ -410,16 +413,16 @@ def process_module(module_data):
410413

411414
module_time = time.time() - module_start
412415
if verbose:
413-
msg = f"[{i}/{len(modules_to_process)}] Processing {module_name}... done ({module_time:.2f}s)"
416+
msg = f"[{i}/{len(modules_to_process)}] Processing {module_name}... done ({module_time:.3f}s)"
414417
else:
415418
msg = f"Processing {module_name}... done"
416-
return (msg, module_name, None, "success")
419+
return (msg, module_name, None, "success", file_existed)
417420
except Exception as e:
418421
if verbose:
419422
msg = f"[{i}/{len(modules_to_process)}] Processing {module_name}... failed: {e}"
420423
else:
421424
msg = f"✗ {module_name}"
422-
return (msg, None, (module_name, str(e)), "failed")
425+
return (msg, None, (module_name, str(e)), "failed", False)
423426

424427
# Process modules in parallel
425428
with ThreadPoolExecutor(max_workers=8) as executor:
@@ -429,15 +432,39 @@ def process_module(module_data):
429432
for i, module_name in enumerate(modules_to_process, 1)
430433
}
431434

435+
# Count existing files to determine the action
436+
existing_files = 0
437+
if args.output_dir.exists():
438+
for module_name in modules_to_process:
439+
has_submodules = any(
440+
m.startswith(module_name + ".")
441+
and m.count(".") == module_name.count(".") + 1
442+
for m in modules_to_process
443+
)
444+
if has_submodules:
445+
output_file = args.output_dir / f"{module_name.replace('.', '-')}-__init__.mdx"
446+
else:
447+
output_file = args.output_dir / f"{module_name.replace('.', '-')}.mdx"
448+
if output_file.exists():
449+
existing_files += 1
450+
451+
# Choose description based on whether we're updating or creating
452+
if existing_files == len(modules_to_process):
453+
desc = "Updating docs"
454+
elif existing_files > 0:
455+
desc = "Processing docs"
456+
else:
457+
desc = "Generating docs"
458+
432459
# Create progress bar if not in verbose mode
433460
progress_bar = None if args.verbose else SimpleProgressBar(
434461
total=len(modules_to_process),
435-
desc="Generating docs"
462+
desc=desc
436463
)
437464

438465
# Process results as they complete
439466
for future in as_completed(future_to_module):
440-
message, success_module, failed_module, status = future.result()
467+
message, success_module, failed_module, status, file_existed = future.result()
441468

442469
if args.verbose:
443470
if message:
@@ -449,6 +476,10 @@ def process_module(module_data):
449476

450477
if success_module:
451478
generated_modules.append(success_module)
479+
if file_existed:
480+
updated_count += 1
481+
else:
482+
created_count += 1
452483
if failed_module:
453484
failed_modules.append(failed_module)
454485

@@ -482,13 +513,18 @@ def process_module(module_data):
482513
# Summary
483514
if not args.verbose:
484515
# Concise summary
485-
print(f"\n✓ Generated {len(generated_modules)} modules in {total_time:.1f}s")
516+
if created_count == 0 and updated_count > 0:
517+
print(f"\n✓ Updated {updated_count} modules in {total_time:.3f}s")
518+
elif created_count > 0 and updated_count > 0:
519+
print(f"\n✓ Created {created_count} and updated {updated_count} modules in {total_time:.3f}s")
520+
else:
521+
print(f"\n✓ Generated {len(generated_modules)} modules in {total_time:.3f}s")
486522
if failed_modules:
487523
print(f"✗ Failed: {len(failed_modules)} modules")
488524
else:
489525
# Verbose summary
490526
print("\nGeneration complete!")
491-
print(f" Total time: {total_time:.2f}s")
527+
print(f" Total time: {total_time:.3f}s")
492528
print(f" Generated: {len(generated_modules)} modules")
493529
print(f" Failed: {len(failed_modules)} modules")
494530
if modules_to_process:

0 commit comments

Comments
 (0)