dire 0.3.2

A library for querying operating system specific directories
Documentation
use std::path::Path;
use std::path::PathBuf;

use error::Result;
use self::sys::KnownFolder;

mod api;
mod sys;

pub struct Directories {
    bin_home: PathBuf,
    cache_home: PathBuf,
    config_home: PathBuf,
    data_home: PathBuf,
}

impl Directories {
    pub fn with_prefix(_prefix_lowercased: &Path, prefix_capitalized: &Path)
        -> Result<Directories>
    {
        let get = |k| -> Result<PathBuf> {
            let mut buf = sys::get_known_folder_path(k)?;
            buf.push(prefix_capitalized);
            Ok(buf)
        };

        let cache_home = get(KnownFolder::Temp)?;
        let config_home = get(KnownFolder::RoamingAppData)?;
        let bin_home = get(KnownFolder::UserProgramFiles)?;
        let data_home = get(KnownFolder::LocalAppData)?;

        Ok(Directories {
            cache_home: cache_home,
            config_home: config_home,
            bin_home: bin_home,
            data_home: data_home,
        })
    }

    
    pub fn bin_home(&self) -> &Path {
        &self.bin_home
    }

    pub fn cache_home(&self) -> &Path {
        &self.cache_home
    }

    pub fn config_home(&self) -> &Path {
        &self.config_home
    }
    
    pub fn data_home(&self) -> &Path {
        &self.data_home
    }
}