1use anyhow::{Context, Result};
4use std::path::PathBuf;
5
6const APP_NAME: &str = "shanghai";
7
8pub fn home_dir() -> Result<PathBuf> {
10 let home_dir = dirs::home_dir().context("Cannot get home dir")?;
11
12 Ok(home_dir)
13}
14
15pub fn config_dir() -> Result<PathBuf> {
19 let config_dir = dirs::config_local_dir().context("Cannot get config dir")?;
20
21 Ok(config_dir.join(APP_NAME))
22}
23
24pub fn share_dir() -> Result<PathBuf> {
28 let data_dir = dirs::data_local_dir().context("Cannot get data dir")?;
29
30 Ok(data_dir.join(APP_NAME))
31}
32
33pub fn cache_dir() -> Result<PathBuf> {
37 let home_dir = dirs::cache_dir().context("Cannot get home dir")?;
38
39 Ok(home_dir.join(APP_NAME))
40}