feat(tvix/cli): support configuring BuildService
Allow using a BUILD_SERVICE_ADDR env var, or cmdline args to configure it. Still default to the dummy implementation. Change-Id: I68f34f7b09eabef2b0491103857bbc798398ebfc Reviewed-on: https://cl.tvl.fyi/c/depot/+/10846 Tested-by: BuildkiteCI Reviewed-by: raitobezarius <tvl@lahfa.xyz>
This commit is contained in:
parent
da3ce74f73
commit
e7815945df
1 changed files with 20 additions and 3 deletions
|
@ -1,9 +1,8 @@
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use rustyline::{error::ReadlineError, Editor};
|
use rustyline::{error::ReadlineError, Editor};
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
use std::sync::Arc;
|
|
||||||
use std::{fs, path::PathBuf};
|
use std::{fs, path::PathBuf};
|
||||||
use tvix_build::buildservice::DummyBuildService;
|
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};
|
||||||
use tvix_eval::{EvalIO, Value};
|
use tvix_eval::{EvalIO, Value};
|
||||||
|
@ -67,6 +66,9 @@ struct Args {
|
||||||
|
|
||||||
#[arg(long, env, default_value = "memory://")]
|
#[arg(long, env, default_value = "memory://")]
|
||||||
path_info_service_addr: String,
|
path_info_service_addr: String,
|
||||||
|
|
||||||
|
#[arg(long, env, default_value = "dummy://")]
|
||||||
|
build_service_addr: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Interprets the given code snippet, printing out warnings, errors
|
/// Interprets the given code snippet, printing out warnings, errors
|
||||||
|
@ -91,11 +93,26 @@ fn interpret(code: &str, path: Option<PathBuf>, args: &Args, explain: bool) -> b
|
||||||
})
|
})
|
||||||
.expect("unable to setup {blob|directory|pathinfo}service before interpreter setup");
|
.expect("unable to setup {blob|directory|pathinfo}service before interpreter setup");
|
||||||
|
|
||||||
|
let build_service = tokio_runtime
|
||||||
|
.block_on({
|
||||||
|
let blob_service = blob_service.clone();
|
||||||
|
let directory_service = directory_service.clone();
|
||||||
|
async move {
|
||||||
|
buildservice::from_addr(
|
||||||
|
&args.build_service_addr,
|
||||||
|
blob_service.clone(),
|
||||||
|
directory_service.clone(),
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.expect("unable to setup buildservice before interpreter setup");
|
||||||
|
|
||||||
let tvix_store_io = Rc::new(TvixStoreIO::new(
|
let tvix_store_io = Rc::new(TvixStoreIO::new(
|
||||||
blob_service.clone(),
|
blob_service.clone(),
|
||||||
directory_service.clone(),
|
directory_service.clone(),
|
||||||
path_info_service.into(),
|
path_info_service.into(),
|
||||||
Arc::<DummyBuildService>::default(),
|
build_service.into(),
|
||||||
tokio_runtime.handle().clone(),
|
tokio_runtime.handle().clone(),
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue