hone/
studies.rs

1use crate::config::Config;
2use crate::{Error, ErrorKind, Result};
3use std::fs;
4use structopt::StructOpt;
5
6#[derive(Debug, StructOpt)]
7pub struct StudiesOpt {}
8
9pub fn list_studies(_opt: StudiesOpt, config: &Config) -> Result<Vec<String>> {
10    let mut names = Vec::new();
11
12    let dir = track!(config.data_dir())?;
13    for entry in track!(fs::read_dir(&dir).map_err(Error::from))? {
14        let entry = track!(entry.map_err(Error::from))?;
15        if !track!(entry.file_type().map_err(Error::from))?.is_dir() {
16            continue;
17        }
18
19        let name = track_assert_some!(
20            entry
21                .path()
22                .file_name()
23                .and_then(|n| n.to_str())
24                .map(|n| n.to_owned()),
25            ErrorKind::InvalidInput
26        );
27        names.push(name);
28    }
29
30    Ok(names)
31}