directories is an OCaml library that provides configuration, cache and data paths (and more!) following the suitable conventions on Linux, macOS and Windows. It is inspired by similar libraries for other languages such as directories-jvm.
The following conventions are used:
Known Folders on Windows
Standard Directories on macOS
On Linux and macOS it has no dependency. On Windows, it depends only on ctypes.
You should depend on
directories then :
let () = let module App_id = struct let qualifier = "com" let organization = "YourCompany" let application = "yourapp" end in let module M = Directories.Project_dirs (App_id) in let option_value = function None -> "None" | Some v -> v in Format.printf "cache dir = `%s`@." (option_value M.cache_dir); Format.printf "config dir = `%s`@." (option_value M.config_dir); Format.printf "data dir = `%s`@." (option_value M.data_dir)
For more, have a look at the example folder.