Skip to content
lunacookiesPublic

About

An unopinionated Rust library for locating configuration, data and cache directories across platforms

Resources

Stars

151 stars

Watchers

3 watching

Forks

Latest commit

 

History

89 Commits

Folders and files

Repository files navigation

crates.io version crates.io revdeps documentation license

Etcetera

This is a Rust library that allows you to determine the locations of configuration, data, cache & other files for your application. Existing Rust libraries generally do not give you a choice in terms of which standards/conventions they follow. Etcetera, on the other hand, gives you the choice.

MSRV: 1.95.0

Note: The MSRV was raised to 1.95.0 in v0.12 to remove the dependency on the cfg-if crate & instead use the cfg_select! macro introduced in that version. If you want, you can use one of the following releases with a lower MSRV:

  • v0.9 with an MSRV of 1.70.0
  • v0.10 with an MSRV of 1.81.0
  • v0.11 with an MSRC of 1.87.0

Conventions

Etcetera supports the following conventions:

Strategies

Etcetera has 2 modes of operation: BaseStrategy & AppStrategy:

  • With BaseStrategy, you just get the location of the respective directory. For eg. for config_dir():
    • XDG: ~/.config
    • Apple: ~/Library/Preferences
    • Windows: ~\AppData\Roaming
  • With AppStrategy, you provide additional information to get the location of your app directory. For eg. if you provide the following details: { top_level_domain: "org", author: "Acme Corp", app_name: "Frobnicator Plus" }, you'll get:
    • XDG: ~/.config/frobnicator-plus
    • Unix: ~/.frobnicator-plus
    • Apple: ~/Library/Preferences/org.acme-corp.Frobnicator-Plus
    • Windows: ~\AppData\Roaming\Acme Corp\Frobnicator Plus

Note: the location of the home (~) is determined by std::env::home_dir.

Convenience functions

Etcetera also provides convenience functions for selecting the appropriate strategy on each platform:

  • base_strategy::choose_base_strategy & app_strategy::choose_app_strategy: Uses Windows on Windows & XDG everywhere else. This is used by most CLI tools & some GUI tools on each platform.
  • base_strategy::choose_native_strategy & app_strategy::choose_native_strategy: Uses Windows on Windows, Apple on macOS/iOS, & XDG everywhere else. This is used by most GUI applications on each platform.

See the documentation for examples.

About

An unopinionated Rust library for locating configuration, data and cache directories across platforms

Resources

Stars

151 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages