@@ -7,55 +7,55 @@ use ProjectDirectories;
use strip_qualification;
pub fn base_directories () -> BaseDirectories {
let home_dir = env:: home_dir ().unwrap ();
let cache_dir = env:: var ("XDG_CACHE_HOME" ).ok ().and_then (is_absolute_path).unwrap_or (home_dir.join (".cache" ));
let config_dir = env:: var ("XDG_CONFIG_HOME" ).ok ().and_then (is_absolute_path).unwrap_or (home_dir.join (".config" ));
let data_dir = env:: var ("XDG_DATA_HOME" ).ok ().and_then (is_absolute_path).unwrap_or (home_dir.join (".local/share" ));
let data_roaming_dir = data_dir.clone ();
let runtime_dir = env:: var ("XDG_RUNTIME_DIR" ).ok ().and_then (is_absolute_path);
let executable_dir =
let home_dir = env:: home_dir ().unwrap ();
let cache_dir = env:: var ("XDG_CACHE_HOME" ).ok ().and_then (is_absolute_path).unwrap_or (home_dir.join (".cache" ));
let config_dir = env:: var ("XDG_CONFIG_HOME" ).ok ().and_then (is_absolute_path).unwrap_or (home_dir.join (".config" ));
let data_dir = env:: var ("XDG_DATA_HOME" ).ok ().and_then (is_absolute_path).unwrap_or (home_dir.join (".local/share" ));
let data_local_dir = data_dir.clone ();
let runtime_dir = env:: var ("XDG_RUNTIME_DIR" ).ok ().and_then (is_absolute_path);
let executable_dir =
env:: var ("XDG_BIN_HOME" ).ok ().and_then (is_absolute_path).unwrap_or ({
let mut new_dir = data_dir.clone (); new_dir.pop (); new_dir.push ("bin" ); new_dir });
let font_dir = data_dir.join ("fonts" );
let font_dir = data_dir.join ("fonts" );
BaseDirectories {
home_dir: home_dir,
cache_dir: cache_dir,
config_dir: config_dir,
data_dir: data_dir,
data_roaming_dir: data_roaming_dir ,
executable_dir: Some (executable_dir),
runtime_dir: runtime_dir,
audio_dir: run_xdg_user_dir_command ("MUSIC" ),
desktop_dir: run_xdg_user_dir_command ("DESKTOP" ),
document_dir: run_xdg_user_dir_command ("DOCUMENTS" ),
download_dir: run_xdg_user_dir_command ("DOWNLOAD" ),
font_dir: Some (font_dir),
picture_dir: run_xdg_user_dir_command ("PICTURES" ),
public_dir: run_xdg_user_dir_command ("PUBLICSHARE" ),
template_dir: Some (run_xdg_user_dir_command ("TEMPLATES" )),
video_dir: run_xdg_user_dir_command ("VIDEOS" )
home_dir: home_dir,
cache_dir: cache_dir,
config_dir: config_dir,
data_dir: data_dir,
data_local_dir: data_local_dir ,
executable_dir: Some (executable_dir),
runtime_dir: runtime_dir,
audio_dir: run_xdg_user_dir_command ("MUSIC" ),
desktop_dir: run_xdg_user_dir_command ("DESKTOP" ),
document_dir: run_xdg_user_dir_command ("DOCUMENTS" ),
download_dir: run_xdg_user_dir_command ("DOWNLOAD" ),
font_dir: Some (font_dir),
picture_dir: run_xdg_user_dir_command ("PICTURES" ),
public_dir: run_xdg_user_dir_command ("PUBLICSHARE" ),
template_dir: Some (run_xdg_user_dir_command ("TEMPLATES" )),
video_dir: run_xdg_user_dir_command ("VIDEOS" )
}
}
impl ProjectDirectories {
pub fn from_unprocessed_string (value: & str ) -> ProjectDirectories {
let project_name = String :: from (value);
let home_dir = env:: home_dir ().unwrap ();
let project_cache_dir = env:: var ("XDG_CACHE_HOME" ).ok ().and_then (is_absolute_path).unwrap_or (home_dir.join (".cache" )).join (& value);
let project_config_dir = env:: var ("XDG_CONFIG_HOME" ).ok ().and_then (is_absolute_path).unwrap_or (home_dir.join (".config" )).join (& value);
let project_data_dir = env:: var ("XDG_DATA_HOME" ).ok ().and_then (is_absolute_path).unwrap_or (home_dir.join (".local/share" )).join (& value);
let project_roaming_data_dir = project_data_dir.clone ();
let project_runtime_dir = env:: var ("XDG_RUNTIME_DIR" ).ok ().and_then (is_absolute_path).unwrap ().join (& value);
let home_dir = env:: home_dir ().unwrap ();
let project_cache_dir = env:: var ("XDG_CACHE_HOME" ).ok ().and_then (is_absolute_path).unwrap_or (home_dir.join (".cache" )).join (& value);
let project_config_dir = env:: var ("XDG_CONFIG_HOME" ).ok ().and_then (is_absolute_path).unwrap_or (home_dir.join (".config" )).join (& value);
let project_data_dir = env:: var ("XDG_DATA_HOME" ).ok ().and_then (is_absolute_path).unwrap_or (home_dir.join (".local/share" )).join (& value);
let project_data_local_dir = project_data_dir.clone ();
let project_runtime_dir = env:: var ("XDG_RUNTIME_DIR" ).ok ().and_then (is_absolute_path).unwrap ().join (& value);
ProjectDirectories {
project_name: project_name,
project_cache_dir: project_cache_dir,
project_config_dir: project_config_dir,
project_data_dir: project_data_dir,
project_data_roaming_dir: project_roaming_data_dir ,
project_runtime_dir: Some (project_runtime_dir)
project_name: project_name,
project_cache_dir: project_cache_dir,
project_config_dir: project_config_dir,
project_data_dir: project_data_dir,
project_data_local_dir: project_data_local_dir ,
project_runtime_dir: Some (project_runtime_dir)
}
}
0 comments on commit
4c4b410