Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Source file directories.ml
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159# 1 "src/linux/directories.ml"openCommonmoduleBase_dirs()=struct(** $HOME or initial working directory value for the current user (taken from
user database) *)lethome_dir=matchgetenvdir"HOME"with|None->(match(Unix.getpwuid(Unix.getuid())).Unix.pw_dirwith|exceptionUnix.Unix_error_->None|exceptionNot_found->None|dir->relative_optdir)|Some_dirasdir->dir(** $XDG_CACHE_HOME or $HOME/.cache *)letcache_dir=matchgetenvdir"XDG_CACHE_HOME"with|None->option_map(fundir->dir/".cache")home_dir|Some_dirasdir->dir(** $XDG_CONFIG_HOME or $HOME/.config *)letconfig_dir=matchgetenvdir"XDG_CONFIG_DIR"with|None->option_map(fundir->dir/".config")home_dir|Some_dirasdir->dir(** $XDG_DATA_HOME or $HOME/.local/share *)letdata_dir=matchgetenvdir"XDG_DATA_DIR"with|None->option_map(fundir->dir/".local"/"share")home_dir|Some_dirasdir->dir(** $XDG_DATA_HOME or $HOME/.local/share *)letdata_local_dir=data_dir(** $XDG_CONFIG_HOME or $HOME/.config *)letpreference_dir=config_dir(** $XDG_RUNTIME_DIR *)letruntime_dir=getenvdir"XDG_RUNTIME_DIR"(** $XDG_BIN_HOME or $XDG_DATA_HOME/../bin or $HOME/.local/bin *)letexecutable_dir=matchgetenvdir"XDG_BIN_HOME"with|None->(matchgetenvdir"XDG_DATA_HOME"with|None->option_map(fundir->dir/".local"/"bin")home_dir|Somedir->Some(dir/".."/"bin"))|Some_dirasdir->direndmoduleUser_dirs()=structmoduleBase_dirs=Base_dirs()(** $HOME or initial working directory value for the current user (taken from
user database) *)lethome_dir=Base_dirs.home_dirletuser_dirs=option_map(fundir->dir/"user-dirs.dirs")Base_dirs.config_dirletuser_dirs=option_binduser_dirs(funf->ifSys.file_existsfthenSomefelseNone)letuser_dirs=option_binduser_dirs(funf->ifSys.is_directoryfthenNoneelseSomef)letuser_shell=getenv"SHELL"letget_user_dirdir=match(user_shell,user_dirs)with|Somesh,Somef->(tryletchan=Unix.open_process_in(Format.sprintf"%s -c '. %s && echo \"$XDG_%s_DIR\"'"shfdir)inletxdg=input_linechaninletresult=Unix.close_process_inchaninmatchresultwith|WEXITED0->Somexdg|_->Nonewith_->None)|_->Noneletget_user_dir(env,default)=matchget_user_direnvwith|Somev->Somev|None->option_map(fundir->dir/default)home_dir(** Defaults can be found here
https://cgit.freedesktop.org/xdg/xdg-user-dirs/tree/user-dirs.defaults *)(** $XDG_MUSIC_DIR *)letaudio_dir=get_user_dir("MUSIC","Music")(** $XDG_DESKTOP_DIR *)letdesktop_dir=get_user_dir("DESKTOP","Desktop")(** $XDG_DOCUMENTS_DIR *)letdocument_dir=get_user_dir("DOCUMENTS","Documents")(** $XDG_DOWNLOAD_DIR *)letdownload_dir=get_user_dir("DOWNLOAD","Downloads")(** $XDG_DATA_HOME/fonts or $HOME/.local/share/fonts *)letfont_dir=matchgetenvdir"XDG_DATA_HOME"with|None->option_map(fundir->dir/".local"/"share"/"fonts")home_dir|Somedir->Some(dir/"fonts")(** $XDG_PICTURES_DIR *)letpicture_dir=get_user_dir("PICTURES","Pictures")(** $XDG_PUBLIC_DIR *)letpublic_dir=get_user_dir("PUBLICSHARE","Public")(** $XDG_TEMPLATES_DIR *)lettemplate_dir=get_user_dir("TEMPLATES","Templates")(** $XDG_VIDEOS_DIR *)letvideo_dir=get_user_dir("VIDEOS","Videos")endmoduleProject_dirs(App_id:App_id)=structmoduleBase_dirs=Base_dirs()letproject_path=Common.lower_and_replace_wsApp_id.application""letconcat_project_path=option_map(fundir->dir/project_path)(** $XDG_CACHE_HOME/<project_path> or $HOME/.cache/<project_path> *)letcache_dir=concat_project_pathBase_dirs.cache_dir(** $XDG_CONFIG_HOME/<project_path> or $HOME/.config/<project_path> *)letconfig_dir=concat_project_pathBase_dirs.config_dir(** $XDG_DATA_HOME/<project_path> or $HOME/.local/share/<project_path> *)letdata_dir=concat_project_pathBase_dirs.data_dir(** $XDG_DATA_HOME/<project_path> or $HOME/.local/share/<project_path> *)letdata_local_dir=data_dir(** $XDG_CONFIG_HOME/<project_path> or $HOME/.config/<project_path> *)letpreference_dir=config_dir(** $XDG_RUNTIME_DIR/<project_path> *)letruntime_dir=concat_project_pathBase_dirs.runtime_dirend