pub struct Config {
pub nightly_features_allowed: bool,
/* private fields */
}
Expand description
Configuration information for cargo. This is not specific to a build, it is information relating to cargo itself.
Fields
nightly_features_allowed: bool
This should be false if:
- this is an artifact of the rustc distribution process for “stable” or for “beta”
- this is an
#[test]
that does not opt in withenable_nightly_features
- this is an integration test that uses
ProcessBuilder
that does not opt in withmasquerade_as_nightly_cargo
This should be true if: - this is an artifact of the rustc distribution process for “nightly”
- this is being used in the rustc distribution process internally
- this is a cargo executable that was built from source
- this is an
#[test]
that calledenable_nightly_features
- this is an integration test that uses
ProcessBuilder
that calledmasquerade_as_nightly_cargo
It’s public to allow tests use nightly features. NOTE: this should be set beforeconfigure()
. If calling this from an integration test, consider usingConfigBuilder::enable_nightly_features
instead.
Implementations
sourceimpl Config
impl Config
sourcepub fn new(shell: Shell, cwd: PathBuf, homedir: PathBuf) -> Config
pub fn new(shell: Shell, cwd: PathBuf, homedir: PathBuf) -> Config
Creates a new config instance.
This is typically used for tests or other special cases. default
is
preferred otherwise.
This does only minimal initialization. In particular, it does not load any config files from disk. Those will be loaded lazily as-needed.
sourcepub fn default() -> CargoResult<Config>
pub fn default() -> CargoResult<Config>
Creates a new Config instance, with all default settings.
This does only minimal initialization. In particular, it does not load any config files from disk. Those will be loaded lazily as-needed.
sourcepub fn home(&self) -> &Filesystem
pub fn home(&self) -> &Filesystem
Gets the user’s Cargo home directory (OS-dependent).
sourcepub fn git_path(&self) -> Filesystem
pub fn git_path(&self) -> Filesystem
Gets the Cargo Git directory (<cargo_home>/git
).
sourcepub fn registry_base_path(&self) -> Filesystem
pub fn registry_base_path(&self) -> Filesystem
Gets the Cargo base directory for all registry information (<cargo_home>/registry
).
sourcepub fn registry_index_path(&self) -> Filesystem
pub fn registry_index_path(&self) -> Filesystem
Gets the Cargo registry index directory (<cargo_home>/registry/index
).
sourcepub fn registry_cache_path(&self) -> Filesystem
pub fn registry_cache_path(&self) -> Filesystem
Gets the Cargo registry cache directory (<cargo_home>/registry/path
).
sourcepub fn registry_source_path(&self) -> Filesystem
pub fn registry_source_path(&self) -> Filesystem
Gets the Cargo registry source directory (<cargo_home>/registry/src
).
sourcepub fn default_registry(&self) -> CargoResult<Option<String>>
pub fn default_registry(&self) -> CargoResult<Option<String>>
Gets the default Cargo registry.
sourcepub fn shell(&self) -> RefMut<'_, Shell>
pub fn shell(&self) -> RefMut<'_, Shell>
Gets a reference to the shell, e.g., for writing error messages.
sourcepub fn rustdoc(&self) -> CargoResult<&Path>
pub fn rustdoc(&self) -> CargoResult<&Path>
Gets the path to the rustdoc
executable.
sourcepub fn load_global_rustc(
&self,
ws: Option<&Workspace<'_>>
) -> CargoResult<Rustc>
pub fn load_global_rustc(
&self,
ws: Option<&Workspace<'_>>
) -> CargoResult<Rustc>
Gets the path to the rustc
executable.
sourcepub fn cargo_exe(&self) -> CargoResult<&Path>
pub fn cargo_exe(&self) -> CargoResult<&Path>
Gets the path to the cargo
executable.
sourcepub fn updated_sources(&self) -> RefMut<'_, HashSet<SourceId>>
pub fn updated_sources(&self) -> RefMut<'_, HashSet<SourceId>>
Which package sources have been updated, used to ensure it is only done once.
sourcepub fn values(&self) -> CargoResult<&HashMap<String, ConfigValue>>
pub fn values(&self) -> CargoResult<&HashMap<String, ConfigValue>>
Gets all config values from disk.
This will lazy-load the values as necessary. Callers are responsible
for checking environment variables. Callers outside of the config
module should avoid using this.
sourcepub fn values_mut(&mut self) -> CargoResult<&mut HashMap<String, ConfigValue>>
pub fn values_mut(&mut self) -> CargoResult<&mut HashMap<String, ConfigValue>>
Gets a mutable copy of the on-disk config values.
This requires the config values to already have been loaded. This
currently only exists for cargo vendor
to remove the source
entries. This doesn’t respect environment variables. You should avoid
using this if possible.
pub fn set_values(
&self,
values: HashMap<String, ConfigValue>
) -> CargoResult<()>
sourcepub fn set_search_stop_path<P: Into<PathBuf>>(&mut self, path: P)
pub fn set_search_stop_path<P: Into<PathBuf>>(&mut self, path: P)
Sets the path where ancestor config file searching will stop. The given path is included, but its ancestors are not.
sourcepub fn reload_rooted_at<P: AsRef<Path>>(&mut self, path: P) -> CargoResult<()>
pub fn reload_rooted_at<P: AsRef<Path>>(&mut self, path: P) -> CargoResult<()>
Reloads on-disk configuration values, starting at the given path and walking up its ancestors.
sourcepub fn target_dir(&self) -> CargoResult<Option<Filesystem>>
pub fn target_dir(&self) -> CargoResult<Option<Filesystem>>
The target
output directory to use.
Returns None
if the user has not chosen an explicit directory.
Callers should prefer Workspace::target_dir
instead.
sourcepub fn get_string(&self, key: &str) -> CargoResult<OptValue<String>>
pub fn get_string(&self, key: &str) -> CargoResult<OptValue<String>>
Get a string config value.
See get
for more details.
sourcepub fn get_path(&self, key: &str) -> CargoResult<OptValue<PathBuf>>
pub fn get_path(&self, key: &str) -> CargoResult<OptValue<PathBuf>>
Get a config value that is expected to be a path.
This returns a relative path if the value does not contain any
directory separators. See ConfigRelativePath::resolve_program
for
more details.
sourcepub fn get_list(
&self,
key: &str
) -> CargoResult<OptValue<Vec<(String, Definition)>>>
pub fn get_list(
&self,
key: &str
) -> CargoResult<OptValue<Vec<(String, Definition)>>>
Get a list of strings.
DO NOT USE outside of the config module. pub
will be removed in the
future.
NOTE: this does not support environment variables. Use get
instead
if you want that.
sourcepub fn configure(
&mut self,
verbose: u32,
quiet: bool,
color: Option<&str>,
frozen: bool,
locked: bool,
offline: bool,
target_dir: &Option<PathBuf>,
unstable_flags: &[String],
cli_config: &[String]
) -> CargoResult<()>
pub fn configure(
&mut self,
verbose: u32,
quiet: bool,
color: Option<&str>,
frozen: bool,
locked: bool,
offline: bool,
target_dir: &Option<PathBuf>,
unstable_flags: &[String],
cli_config: &[String]
) -> CargoResult<()>
Update the Config instance based on settings typically passed in on the command-line.
This may also load the config from disk if it hasn’t already been loaded.
pub fn cli_unstable(&self) -> &CliUnstable
pub fn extra_verbose(&self) -> bool
pub fn network_allowed(&self) -> bool
pub fn offline(&self) -> bool
pub fn frozen(&self) -> bool
pub fn locked(&self) -> bool
pub fn lock_update_allowed(&self) -> bool
sourcepub fn load_values(&self) -> CargoResult<HashMap<String, ConfigValue>>
pub fn load_values(&self) -> CargoResult<HashMap<String, ConfigValue>>
Loads configuration from the filesystem.
sourcepub fn get_registry_index(&self, registry: &str) -> CargoResult<Url>
pub fn get_registry_index(&self, registry: &str) -> CargoResult<Url>
Gets the index for a registry.
sourcepub fn check_registry_index_not_set(&self) -> CargoResult<()>
pub fn check_registry_index_not_set(&self) -> CargoResult<()>
Returns an error if registry.index
is set.
sourcepub fn load_credentials(&mut self) -> CargoResult<()>
pub fn load_credentials(&mut self) -> CargoResult<()>
Loads credentials config from the credentials file, if present.
pub fn jobserver_from_env(&self) -> Option<&Client>
pub fn http(&self) -> CargoResult<&RefCell<Easy>>
pub fn http_config(&self) -> CargoResult<&CargoHttpConfig>
pub fn future_incompat_config(&self) -> CargoResult<&CargoFutureIncompatConfig>
pub fn net_config(&self) -> CargoResult<&CargoNetConfig>
pub fn build_config(&self) -> CargoResult<&CargoBuildConfig>
pub fn progress_config(&self) -> &ProgressConfig
pub fn env_config(&self) -> CargoResult<&EnvConfig>
sourcepub fn validate_term_config(&self) -> CargoResult<()>
pub fn validate_term_config(&self) -> CargoResult<()>
This is used to validate the term
table has valid syntax.
This is necessary because loading the term settings happens very
early, and in some situations (like cargo version
) we don’t want to
fail if there are problems with the config file.
sourcepub fn target_cfgs(&self) -> CargoResult<&Vec<(String, TargetCfgConfig)>>
pub fn target_cfgs(&self) -> CargoResult<&Vec<(String, TargetCfgConfig)>>
Returns a list of [target.‘cfg()’] tables.
The list is sorted by the table name.
pub fn doc_extern_map(&self) -> CargoResult<&RustdocExternMap>
sourcepub fn target_applies_to_host(&self) -> CargoResult<bool>
pub fn target_applies_to_host(&self) -> CargoResult<bool>
Returns true if the [target]
table should be applied to host targets.
sourcepub fn host_cfg_triple(&self, target: &str) -> CargoResult<TargetConfig>
pub fn host_cfg_triple(&self, target: &str) -> CargoResult<TargetConfig>
Returns the [host]
table definition for the given target triple.
sourcepub fn target_cfg_triple(&self, target: &str) -> CargoResult<TargetConfig>
pub fn target_cfg_triple(&self, target: &str) -> CargoResult<TargetConfig>
Returns the [target]
table definition for the given target triple.
pub fn crates_io_source_id<F>(&self, f: F) -> CargoResult<SourceId> where
F: FnMut() -> CargoResult<SourceId>,
pub fn creation_time(&self) -> Instant
sourcepub fn get<'de, T: Deserialize<'de>>(&self, key: &str) -> CargoResult<T>
pub fn get<'de, T: Deserialize<'de>>(&self, key: &str) -> CargoResult<T>
Retrieves a config variable.
This supports most serde Deserialize
types. Examples:
let v: Option<u32> = config.get("some.nested.key")?;
let v: Option<MyStruct> = config.get("some.key")?;
let v: Option<HashMap<String, MyStruct>> = config.get("foo")?;
The key may be a dotted key, but this does NOT support TOML key
quoting. Avoid key components that may have dots. For example,
foo.'a.b'.bar" does not work if you try to fetch
foo.‘a.b’“. You can
fetch foo
if it is a map, though.
pub fn assert_package_cache_locked<'a>(&self, f: &'a Filesystem) -> &'a Path
sourcepub fn acquire_package_cache_lock(&self) -> CargoResult<PackageCacheLock<'_>>
pub fn acquire_package_cache_lock(&self) -> CargoResult<PackageCacheLock<'_>>
Acquires an exclusive lock on the global “package cache”
This lock is global per-process and can be acquired recursively. An RAII structure is returned to release the lock, and if this process abnormally terminates the lock is also released.
pub fn release_package_cache_lock(&self)
Trait Implementations
Auto Trait Implementations
impl !RefUnwindSafe for Config
impl !Send for Config
impl !Sync for Config
impl Unpin for Config
impl !UnwindSafe for Config
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more