feat(tvix/cli): track known plain paths in NixCompatIO

When adding things to a C++ Nix store, ensure that the path is tracked
in the tracker.

Since the mechanism for propagating the tracker instance isn't
finalised yet, I've opted to take an Rc<RefCell> parameter for it. How
exactly that ends up there is going to become clear in the next
commits, but for now it's just instantiated in main with
Default::default.

Change-Id: I90f0b44f2d4f292dedc98ff1aa39041d279b61fd
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7833
Tested-by: BuildkiteCI
Reviewed-by: flokli <flokli@flokli.de>
This commit is contained in:
Vincent Ambo 2023-01-14 15:45:22 +03:00 committed by tazjin
parent 9cb3daee20
commit 499e72c1cb
3 changed files with 46 additions and 28 deletions

View file

@ -2,9 +2,12 @@ mod known_paths;
mod nix_compat;
mod refscan;
use std::cell::RefCell;
use std::rc::Rc;
use std::{fs, path::PathBuf};
use clap::Parser;
use known_paths::KnownPaths;
use rustyline::{error::ReadlineError, Editor};
use tvix_eval::observer::{DisassemblingObserver, TracingObserver};
use tvix_eval::Value;
@ -48,7 +51,9 @@ struct Args {
/// evaluation succeeded.
fn interpret(code: &str, path: Option<PathBuf>, args: &Args, explain: bool) -> bool {
let mut eval = tvix_eval::Evaluation::new_impure(code, path);
eval.io_handle = Box::new(nix_compat::NixCompatIO::new());
let known_paths: Rc<RefCell<KnownPaths>> = Default::default();
eval.io_handle = Box::new(nix_compat::NixCompatIO::new(known_paths));
eval.nix_path = args.nix_search_path.clone();
let source_map = eval.source_map();