feat(sync): Wire progress callbacks through sync pipeline stages
The sync command's stage spinners now show real-time aggregate progress
for each pipeline phase instead of static "syncing..." messages.
- Add `progress_callback` parameter to `run_embed` and
`run_generate_docs` so callers can receive `(processed, total)` updates
- Add `stage_bar` parameter to `run_ingest` for aggregate progress
across concurrently-ingested projects using shared AtomicUsize counters
- Update `stage_spinner` to use `{prefix}` for the `[N/M]` label,
allowing `{msg}` to be updated independently with progress details
- Thread `ProgressBar` clones into each concurrent project task so
per-entity progress (fetch, discussions, events) is reflected on the
aggregate spinner
- Pass `None` for progress callbacks at standalone CLI entry points
(handle_ingest, handle_generate_docs, handle_embed) to preserve
existing behavior when commands are run outside of sync
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -501,6 +501,7 @@ async fn handle_ingest(
|
||||
force,
|
||||
full,
|
||||
display,
|
||||
None,
|
||||
)
|
||||
.await?;
|
||||
|
||||
@@ -527,6 +528,7 @@ async fn handle_ingest(
|
||||
force,
|
||||
full,
|
||||
display,
|
||||
None,
|
||||
)
|
||||
.await?;
|
||||
|
||||
@@ -537,6 +539,7 @@ async fn handle_ingest(
|
||||
force,
|
||||
full,
|
||||
display,
|
||||
None,
|
||||
)
|
||||
.await?;
|
||||
|
||||
@@ -1225,7 +1228,7 @@ async fn handle_generate_docs(
|
||||
) -> Result<(), Box<dyn std::error::Error>> {
|
||||
let config = Config::load(config_override)?;
|
||||
|
||||
let result = run_generate_docs(&config, args.full, args.project.as_deref())?;
|
||||
let result = run_generate_docs(&config, args.full, args.project.as_deref(), None)?;
|
||||
if robot_mode {
|
||||
print_generate_docs_json(&result);
|
||||
} else {
|
||||
@@ -1242,7 +1245,7 @@ async fn handle_embed(
|
||||
let config = Config::load(config_override)?;
|
||||
let full = args.full && !args.no_full;
|
||||
let retry_failed = args.retry_failed && !args.no_retry_failed;
|
||||
let result = run_embed(&config, full, retry_failed).await?;
|
||||
let result = run_embed(&config, full, retry_failed, None).await?;
|
||||
if robot_mode {
|
||||
print_embed_json(&result);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user