Skip to main content

turbo_tasks_fs/
null_fs.rs

1//! [`NullFileSystem`], a filesystem where every path is empty/not-found.
2
3use turbo_rcstr::rcstr;
4use turbo_tasks::{ValueToString, Vc};
5
6use crate::{
7    FileContent, FileMeta, FileSystem, FileSystemPath, LinkContent, RawDirectoryContent,
8    WriteLinkContent,
9};
10
11#[derive(ValueToString)]
12#[value_to_string("null")]
13#[turbo_tasks::value(shared)]
14pub struct NullFileSystem;
15
16#[turbo_tasks::value_impl]
17impl FileSystem for NullFileSystem {
18    #[turbo_tasks::function]
19    fn read(&self, _fs_path: FileSystemPath) -> Vc<FileContent> {
20        FileContent::NotFound.cell()
21    }
22
23    #[turbo_tasks::function]
24    fn read_link(&self, _fs_path: FileSystemPath) -> Vc<LinkContent> {
25        LinkContent::Invalid {
26            reason: rcstr!("the filesystem does not support symbolic links"),
27        }
28        .cell()
29    }
30
31    #[turbo_tasks::function]
32    fn is_junction_point(&self, _fs_path: FileSystemPath) -> Vc<bool> {
33        Vc::cell(false)
34    }
35
36    #[turbo_tasks::function]
37    fn raw_read_dir(&self, _fs_path: FileSystemPath) -> Vc<RawDirectoryContent> {
38        RawDirectoryContent::not_found()
39    }
40
41    #[turbo_tasks::function]
42    fn write(&self, _fs_path: FileSystemPath, _content: Vc<FileContent>) {}
43
44    #[turbo_tasks::function]
45    fn write_link(&self, _fs_path: FileSystemPath, _target: Vc<WriteLinkContent>) {}
46
47    #[turbo_tasks::function]
48    fn metadata(&self, _fs_path: FileSystemPath) -> Vc<FileMeta> {
49        FileMeta::default().cell()
50    }
51}