refactor(tvix): use io::Result for EvalIO

This is just a alias for Result<_, io::Error>, but shorter.

Change-Id: I7c22f61b85e3014885a747b5c1e5abd11b0ef17d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10327
Tested-by: BuildkiteCI
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
This commit is contained in:
Florian Klink 2023-12-12 15:44:30 +02:00 committed by clbot
parent ad566999ca
commit 27c07b72c6
3 changed files with 22 additions and 22 deletions

View file

@ -46,7 +46,7 @@ pub trait EvalIO {
/// * checking whether a file added to the `NIX_PATH` actually exists when
/// it is referenced in `<...>` brackets.
/// * `builtins.pathExists :: path -> bool`
fn path_exists(&self, path: &Path) -> Result<bool, io::Error>;
fn path_exists(&self, path: &Path) -> io::Result<bool>;
/// Read the file at the specified path to a string.
///
@ -54,7 +54,7 @@ pub trait EvalIO {
///
/// * `builtins.readFile :: path -> string`
/// * `builtins.import :: path -> any`
fn read_to_string(&self, path: &Path) -> Result<String, io::Error>;
fn read_to_string(&self, path: &Path) -> io::Result<String>;
/// Read the directory at the specified path and return the names
/// of its entries associated with their [`FileType`].
@ -62,7 +62,7 @@ pub trait EvalIO {
/// This is used for the following language evaluation cases:
///
/// * `builtins.readDir :: path -> attrs<filename, filetype>`
fn read_dir(&self, path: &Path) -> Result<Vec<(bytes::Bytes, FileType)>, io::Error>;
fn read_dir(&self, path: &Path) -> io::Result<Vec<(bytes::Bytes, FileType)>>;
/// Import the given path. What this means depends on the implementation,
/// for example for a `std::io`-based implementation this might be a no-op,
@ -74,7 +74,7 @@ pub trait EvalIO {
/// * string coercion of path literals (e.g. `/foo/bar`), which are expected
/// to return a path
/// * `builtins.toJSON` on a path literal, also expected to return a path
fn import_path(&self, path: &Path) -> Result<PathBuf, io::Error>;
fn import_path(&self, path: &Path) -> io::Result<PathBuf>;
/// Returns the root of the store directory, if such a thing
/// exists in the evaluation context.
@ -95,15 +95,15 @@ pub struct StdIO;
// TODO: we might want to make this whole impl to be target_family = "unix".
#[cfg(feature = "impure")]
impl EvalIO for StdIO {
fn path_exists(&self, path: &Path) -> Result<bool, io::Error> {
fn path_exists(&self, path: &Path) -> io::Result<bool> {
path.try_exists()
}
fn read_to_string(&self, path: &Path) -> Result<String, io::Error> {
fn read_to_string(&self, path: &Path) -> io::Result<String> {
std::fs::read_to_string(path)
}
fn read_dir(&self, path: &Path) -> Result<Vec<(bytes::Bytes, FileType)>, io::Error> {
fn read_dir(&self, path: &Path) -> io::Result<Vec<(bytes::Bytes, FileType)>> {
let mut result = vec![];
for entry in path.read_dir()? {
@ -128,7 +128,7 @@ impl EvalIO for StdIO {
// this is a no-op for `std::io`, as the user can already refer to
// the path directly
fn import_path(&self, path: &Path) -> Result<PathBuf, io::Error> {
fn import_path(&self, path: &Path) -> io::Result<PathBuf> {
Ok(path.to_path_buf())
}
}
@ -138,28 +138,28 @@ impl EvalIO for StdIO {
pub struct DummyIO;
impl EvalIO for DummyIO {
fn path_exists(&self, _: &Path) -> Result<bool, io::Error> {
fn path_exists(&self, _: &Path) -> io::Result<bool> {
Err(io::Error::new(
io::ErrorKind::Unsupported,
"I/O methods are not implemented in DummyIO",
))
}
fn read_to_string(&self, _: &Path) -> Result<String, io::Error> {
fn read_to_string(&self, _: &Path) -> io::Result<String> {
Err(io::Error::new(
io::ErrorKind::Unsupported,
"I/O methods are not implemented in DummyIO",
))
}
fn read_dir(&self, _: &Path) -> Result<Vec<(bytes::Bytes, FileType)>, io::Error> {
fn read_dir(&self, _: &Path) -> io::Result<Vec<(bytes::Bytes, FileType)>> {
Err(io::Error::new(
io::ErrorKind::Unsupported,
"I/O methods are not implemented in DummyIO",
))
}
fn import_path(&self, _: &Path) -> Result<PathBuf, io::Error> {
fn import_path(&self, _: &Path) -> io::Result<PathBuf> {
Err(io::Error::new(
io::ErrorKind::Unsupported,
"I/O methods are not implemented in DummyIO",

View file

@ -40,7 +40,7 @@ impl<T: EvalIO> EvalIO for TvixIO<T> {
self.actual.store_dir()
}
fn import_path(&self, path: &Path) -> Result<PathBuf, io::Error> {
fn import_path(&self, path: &Path) -> io::Result<PathBuf> {
let imported_path = self.actual.import_path(path)?;
self.known_paths
.borrow_mut()
@ -49,7 +49,7 @@ impl<T: EvalIO> EvalIO for TvixIO<T> {
Ok(imported_path)
}
fn path_exists(&self, path: &Path) -> Result<bool, io::Error> {
fn path_exists(&self, path: &Path) -> io::Result<bool> {
if path.starts_with("/__corepkgs__") {
return Ok(true);
}
@ -57,7 +57,7 @@ impl<T: EvalIO> EvalIO for TvixIO<T> {
self.actual.path_exists(path)
}
fn read_to_string(&self, path: &Path) -> Result<String, io::Error> {
fn read_to_string(&self, path: &Path) -> io::Result<String> {
// Bundled version of corepkgs/fetchurl.nix. The counterpart
// of this happens in [crate::configure_nix_path], where the `nix_path`
// of the evaluation has `nix=/__corepkgs__` added to it.
@ -74,7 +74,7 @@ impl<T: EvalIO> EvalIO for TvixIO<T> {
self.actual.read_to_string(path)
}
fn read_dir(&self, path: &Path) -> Result<Vec<(bytes::Bytes, FileType)>, io::Error> {
fn read_dir(&self, path: &Path) -> io::Result<Vec<(bytes::Bytes, FileType)>> {
self.actual.read_dir(path)
}
}

View file

@ -59,7 +59,7 @@ impl TvixStoreIO {
&self,
store_path: &StorePath,
sub_path: &Path,
) -> Result<Option<Node>, io::Error> {
) -> io::Result<Option<Node>> {
let path_info_service = self.path_info_service.clone();
let task = self.tokio_handle.spawn({
let digest = *store_path.digest();
@ -102,7 +102,7 @@ impl TvixStoreIO {
impl EvalIO for TvixStoreIO {
#[instrument(skip(self), ret, err)]
fn path_exists(&self, path: &Path) -> Result<bool, io::Error> {
fn path_exists(&self, path: &Path) -> io::Result<bool> {
if let Ok((store_path, sub_path)) =
StorePath::from_absolute_path_full(&path.to_string_lossy())
{
@ -123,7 +123,7 @@ impl EvalIO for TvixStoreIO {
}
#[instrument(skip(self), ret, err)]
fn read_to_string(&self, path: &Path) -> Result<String, io::Error> {
fn read_to_string(&self, path: &Path) -> io::Result<String> {
if let Ok((store_path, sub_path)) =
StorePath::from_absolute_path_full(&path.to_string_lossy())
{
@ -195,7 +195,7 @@ impl EvalIO for TvixStoreIO {
}
#[instrument(skip(self), ret, err)]
fn read_dir(&self, path: &Path) -> Result<Vec<(bytes::Bytes, FileType)>, io::Error> {
fn read_dir(&self, path: &Path) -> io::Result<Vec<(bytes::Bytes, FileType)>> {
if let Ok((store_path, sub_path)) =
StorePath::from_absolute_path_full(&path.to_string_lossy())
{
@ -263,7 +263,7 @@ impl EvalIO for TvixStoreIO {
}
#[instrument(skip(self), ret, err)]
fn import_path(&self, path: &std::path::Path) -> Result<PathBuf, std::io::Error> {
fn import_path(&self, path: &std::path::Path) -> io::Result<PathBuf> {
let p = path.to_owned();
let blob_service = self.blob_service.clone();
let directory_service = self.directory_service.clone();
@ -307,7 +307,7 @@ async fn import_path_with_pathinfo(
directory_service: Arc<dyn DirectoryService>,
path_info_service: Arc<dyn PathInfoService>,
path: &std::path::Path,
) -> Result<PathInfo, io::Error> {
) -> io::Result<PathInfo> {
// Call [import::ingest_path], which will walk over the given path and return a root_node.
let root_node = import::ingest_path(blob_service.clone(), directory_service.clone(), path)
.await