Clarify config-relative paths for --config <path>

This commit is contained in:
Weihang Lo 2022-09-13 09:25:13 +01:00
parent 65332bc9f1
commit 164a8590be
No known key found for this signature in database
GPG key ID: D7DBF189825E82E7

View file

@ -238,13 +238,26 @@ precedence rules as other options specified directly with `--config`.
### Config-relative paths
Paths in config files may be absolute, relative, or a bare name without any
path separators. Paths for executables without a path separator will use the
`PATH` environment variable to search for the executable. Paths for
non-executables will be relative to where the config value is defined. For
config files, that is relative to the parent directory of the `.cargo`
directory where the value was defined. For environment variables it is
relative to the current working directory.
Paths in config files may be absolute, relative, or a bare name without any path separators.
Paths for executables without a path separator will use the `PATH` environment variable to search for the executable.
Paths for non-executables will be relative to where the config value is defined.
In particular, rules are:
* For environment variables, paths are relative to the current working directory.
* For config files, paths are relative to the parent directory of the directory where the config files were defined,
no matter those files are from either the [hierarchical probing](#hierarchical-structure)
or the [`--config <path>`](#command-line-overrides) option.
> **Note:** To maintain consistency with existing `.cargo/config.toml` probing behavior,
> it is by design that a path in a config file passed via `--config <path>`
> is also relative to two levels up from the config file itself.
>
> To avoid unexpected results, the rule of thumb is putting your extra config files
> at the same level of discovered `.cargo/config.toml` in your porject.
> For instance, given a project `/my/project`,
> it is recommended to put config files under `/my/project/.cargo`
> or a new directory at the same level, such as `/my/project/.config`.
```toml
# Relative path examples.