aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_vfs/src/io.rs
blob: f90fe0e8484b5d7c84d5dcfc5c88437fe047d579 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
use std::{
    fs,
    path::{Path, PathBuf},
    thread::JoinHandle,
};

use walkdir::WalkDir;
use crossbeam_channel::{Sender, Receiver};

pub(crate) fn start_io() -> (JoinHandle<(), Sender<()>, Receiver()>) {}

// use crate::thread_watcher::{ThreadWatcher, Worker};

// #[derive(Debug)]
// pub struct FileEvent {
//     pub path: PathBuf,
//     pub kind: FileEventKind,
// }

// #[derive(Debug)]
// pub enum FileEventKind {
//     Add(String),
// }

// pub fn roots_loader() -> (Worker<PathBuf, (PathBuf, Vec<FileEvent>)>, ThreadWatcher) {
//     Worker::<PathBuf, (PathBuf, Vec<FileEvent>)>::spawn(
//         "roots loader",
//         128,
//         |input_receiver, output_sender| {
//             input_receiver
//                 .map(|path| {
//                     log::debug!("loading {} ...", path.as_path().display());
//                     let events = load_root(path.as_path());
//                     log::debug!("... loaded {}", path.as_path().display());
//                     (path, events)
//                 })
//                 .for_each(|it| output_sender.send(it))
//         },
//     )
// }

// fn load_root(path: &Path) -> Vec<FileEvent> {
//     let mut res = Vec::new();
//     for entry in WalkDir::new(path) {
//         let entry = match entry {
//             Ok(entry) => entry,
//             Err(e) => {
//                 log::warn!("watcher error: {}", e);
//                 continue;
//             }
//         };
//         if !entry.file_type().is_file() {
//             continue;
//         }
//         let path = entry.path();
//         if path.extension().and_then(|os| os.to_str()) != Some("rs") {
//             continue;
//         }
//         let text = match fs::read_to_string(path) {
//             Ok(text) => text,
//             Err(e) => {
//                 log::warn!("watcher error: {}", e);
//                 continue;
//             }
//         };
//         res.push(FileEvent {
//             path: path.to_owned(),
//             kind: FileEventKind::Add(text),
//         })
//     }
//     res
// }