feat(tvix/cli): add toplevel progress span
This gives some better feedback something is going on, gives a (named) root for all the progress children we're drawing, and also counts the time we are in eval. Change-Id: Ibe81dcebf0a2b59bb0680da62e206eb5270f9d3c Reviewed-on: https://cl.tvl.fyi/c/depot/+/11798 Autosubmit: flokli <flokli@flokli.de> Tested-by: BuildkiteCI Reviewed-by: aspen <root@gws.fyi>
This commit is contained in:
parent
7f29cab1cc
commit
29eda2d5b2
4 changed files with 15 additions and 1 deletions
1
tvix/Cargo.lock
generated
1
tvix/Cargo.lock
generated
|
@ -4203,6 +4203,7 @@ dependencies = [
|
||||||
"tikv-jemallocator",
|
"tikv-jemallocator",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tracing",
|
"tracing",
|
||||||
|
"tracing-indicatif",
|
||||||
"tvix-build",
|
"tvix-build",
|
||||||
"tvix-castore",
|
"tvix-castore",
|
||||||
"tvix-eval",
|
"tvix-eval",
|
||||||
|
|
|
@ -13305,6 +13305,10 @@ rec {
|
||||||
name = "tracing";
|
name = "tracing";
|
||||||
packageId = "tracing";
|
packageId = "tracing";
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
name = "tracing-indicatif";
|
||||||
|
packageId = "tracing-indicatif";
|
||||||
|
}
|
||||||
{
|
{
|
||||||
name = "tvix-build";
|
name = "tvix-build";
|
||||||
packageId = "tvix-build";
|
packageId = "tvix-build";
|
||||||
|
|
|
@ -23,6 +23,7 @@ rnix = "0.11.0"
|
||||||
thiserror = "1.0.38"
|
thiserror = "1.0.38"
|
||||||
tokio = "1.28.0"
|
tokio = "1.28.0"
|
||||||
tracing = "0.1.40"
|
tracing = "0.1.40"
|
||||||
|
tracing-indicatif = "0.3.6"
|
||||||
|
|
||||||
[dependencies.wu-manber]
|
[dependencies.wu-manber]
|
||||||
git = "https://github.com/tvlfyi/wu-manber.git"
|
git = "https://github.com/tvlfyi/wu-manber.git"
|
||||||
|
|
|
@ -4,7 +4,8 @@ use clap::Parser;
|
||||||
use repl::Repl;
|
use repl::Repl;
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
use std::{fs, path::PathBuf};
|
use std::{fs, path::PathBuf};
|
||||||
use tracing::Level;
|
use tracing::{instrument, Level, Span};
|
||||||
|
use tracing_indicatif::span_ext::IndicatifSpanExt;
|
||||||
use tvix_build::buildservice;
|
use tvix_build::buildservice;
|
||||||
use tvix_eval::builtins::impure_builtins;
|
use tvix_eval::builtins::impure_builtins;
|
||||||
use tvix_eval::observer::{DisassemblingObserver, TracingObserver};
|
use tvix_eval::observer::{DisassemblingObserver, TracingObserver};
|
||||||
|
@ -152,6 +153,7 @@ struct IncompleteInput;
|
||||||
/// Interprets the given code snippet, printing out warnings, errors
|
/// Interprets the given code snippet, printing out warnings, errors
|
||||||
/// and the result itself. The return value indicates whether
|
/// and the result itself. The return value indicates whether
|
||||||
/// evaluation succeeded.
|
/// evaluation succeeded.
|
||||||
|
#[instrument(skip_all, fields(indicatif.pb_show=1))]
|
||||||
fn interpret(
|
fn interpret(
|
||||||
tvix_store_io: Rc<TvixStoreIO>,
|
tvix_store_io: Rc<TvixStoreIO>,
|
||||||
code: &str,
|
code: &str,
|
||||||
|
@ -160,6 +162,11 @@ fn interpret(
|
||||||
explain: bool,
|
explain: bool,
|
||||||
allow_incomplete: AllowIncomplete,
|
allow_incomplete: AllowIncomplete,
|
||||||
) -> Result<bool, IncompleteInput> {
|
) -> Result<bool, IncompleteInput> {
|
||||||
|
let span = Span::current();
|
||||||
|
span.pb_start();
|
||||||
|
span.pb_set_style(&tvix_tracing::PB_SPINNER_STYLE);
|
||||||
|
span.pb_set_message("Setting up evaluator…");
|
||||||
|
|
||||||
let mut eval = tvix_eval::Evaluation::new(
|
let mut eval = tvix_eval::Evaluation::new(
|
||||||
Box::new(TvixIO::new(tvix_store_io.clone() as Rc<dyn EvalIO>)) as Box<dyn EvalIO>,
|
Box::new(TvixIO::new(tvix_store_io.clone() as Rc<dyn EvalIO>)) as Box<dyn EvalIO>,
|
||||||
true,
|
true,
|
||||||
|
@ -187,6 +194,7 @@ fn interpret(
|
||||||
eval.runtime_observer = Some(&mut runtime_observer);
|
eval.runtime_observer = Some(&mut runtime_observer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
span.pb_set_message("Evaluating…");
|
||||||
eval.evaluate(code, path)
|
eval.evaluate(code, path)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue