The command now supports reopening existing indexes instead of failing when the output file exists. Control flow branches between opening an existing index and constructing a new one, moving configuration setup exclusively to the creation path. Directory existence is enforced upfront with proper I/O error propagation. The --force flag retains its original semantics by removing the target directory before proceeding with a fresh build.
22 lines
584 B
Rust
22 lines
584 B
Rust
use std::sync::OnceLock;
|
|
|
|
use indicatif::MultiProgress;
|
|
|
|
static MULTI: OnceLock<MultiProgress> = OnceLock::new();
|
|
|
|
/// Initialise the shared progress display. Call once from the binary before
|
|
/// any index operation. Subsequent calls are silently ignored.
|
|
pub fn init(multi: MultiProgress) {
|
|
let _ = MULTI.set(multi);
|
|
}
|
|
|
|
/// Return the shared `MultiProgress`, creating a plain default one if the
|
|
/// binary never called [`init`].
|
|
pub fn get() -> &'static MultiProgress {
|
|
MULTI.get_or_init(MultiProgress::new)
|
|
}
|
|
|
|
pub(crate) fn multi() -> &'static MultiProgress {
|
|
get()
|
|
}
|