Struct cargo_update::ops::PackageConfig
source · pub struct PackageConfig {
pub toolchain: Option<String>,
pub default_features: bool,
pub features: BTreeSet<String>,
pub debug: Option<bool>,
pub install_prereleases: Option<bool>,
pub enforce_lock: Option<bool>,
pub respect_binaries: Option<bool>,
pub target_version: Option<VersionReq>,
}
Expand description
Compilation configuration for one crate.
Examples
Reading a configset, adding an entry to it, then writing it back.
let mut configuration = PackageConfig::read(&config_file).unwrap();
configuration.insert("cargo_update".to_string(), PackageConfig::from(&operations));
PackageConfig::write(&configuration, &config_file).unwrap();
Fields§
§toolchain: Option<String>
Toolchain to use to compile the package, or None
for default.
default_features: bool
Whether to compile the package with the default features.
features: BTreeSet<String>
Features to compile the package with.
debug: Option<bool>
Whether to compile in debug mode.
install_prereleases: Option<bool>
Whether to install pre-release versions.
enforce_lock: Option<bool>
Whether to enforce Cargo.lock versions.
respect_binaries: Option<bool>
Whether to install only the pre-configured binaries.
target_version: Option<VersionReq>
Versions to constrain to.
Implementations§
source§impl PackageConfig
impl PackageConfig
sourcepub fn from<'o, O: IntoIterator<Item = &'o ConfigOperation>>(
ops: O
) -> PackageConfig
pub fn from<'o, O: IntoIterator<Item = &'o ConfigOperation>>( ops: O ) -> PackageConfig
Create a package config based on the default settings and modified according to the specified operations.
Examples
assert_eq!(PackageConfig::from(&[ConfigOperation::SetToolchain("nightly".to_string()),
ConfigOperation::DefaultFeatures(false),
ConfigOperation::AddFeature("rustc-serialize".to_string()),
ConfigOperation::SetDebugMode(true),
ConfigOperation::SetInstallPrereleases(false),
ConfigOperation::SetEnforceLock(true),
ConfigOperation::SetRespectBinaries(true),
ConfigOperation::SetTargetVersion(VersionReq::from_str(">=0.1").unwrap())]),
PackageConfig {
toolchain: Some("nightly".to_string()),
default_features: false,
features: {
let mut feats = BTreeSet::new();
feats.insert("rustc-serialize".to_string());
feats
},
debug: Some(true),
install_prereleases: Some(false),
enforce_lock: Some(true),
respect_binaries: Some(true),
target_version: Some(VersionReq::from_str(">=0.1").unwrap()),
});
sourcepub fn cargo_args<S: AsRef<str>, I: IntoIterator<Item = S>>(
&self,
executables: I
) -> Vec<Cow<'static, str>>
pub fn cargo_args<S: AsRef<str>, I: IntoIterator<Item = S>>( &self, executables: I ) -> Vec<Cow<'static, str>>
Generate cargo arguments from this configuration.
Executable names are stripped of their trailing ".exe"
, if any.
Examples
let cmd = Command::new("cargo")
.args(configuration.get(&name).unwrap().cargo_args(&["racer"]).iter().map(AsRef::as_ref))
.arg(&name)
// Process the command further -- run it, for example.
sourcepub fn execute_operations<'o, O: IntoIterator<Item = &'o ConfigOperation>>(
&mut self,
ops: O
)
pub fn execute_operations<'o, O: IntoIterator<Item = &'o ConfigOperation>>( &mut self, ops: O )
Modify self
according to the specified set of operations.
Examples
let mut cfg = PackageConfig {
toolchain: Some("nightly".to_string()),
default_features: false,
features: {
let mut feats = BTreeSet::new();
feats.insert("rustc-serialize".to_string());
feats
},
debug: None,
install_prereleases: None,
enforce_lock: None,
respect_binaries: None,
target_version: Some(VersionReq::from_str(">=0.1").unwrap()),
};
cfg.execute_operations(&[ConfigOperation::RemoveToolchain,
ConfigOperation::AddFeature("serde".to_string()),
ConfigOperation::RemoveFeature("rustc-serialize".to_string()),
ConfigOperation::SetDebugMode(true),
ConfigOperation::RemoveTargetVersion]);
assert_eq!(cfg,
PackageConfig {
toolchain: None,
default_features: false,
features: {
let mut feats = BTreeSet::new();
feats.insert("serde".to_string());
feats
},
debug: Some(true),
install_prereleases: None,
enforce_lock: None,
respect_binaries: None,
target_version: None,
});
sourcepub fn read(p: &Path) -> Result<BTreeMap<String, PackageConfig>, (String, i32)>
pub fn read(p: &Path) -> Result<BTreeMap<String, PackageConfig>, (String, i32)>
Read a configset from the specified file.
If the specified file doesn’t exist an empty configset is returned.
Examples
fs::write(&config_file, &b"\
[cargo-update]\n\
default_features = true\n\
features = [\"serde\"]\n"[..]).unwrap();
assert_eq!(PackageConfig::read(&config_file), Ok({
let mut pkgs = BTreeMap::new();
pkgs.insert("cargo-update".to_string(), PackageConfig {
toolchain: None,
default_features: true,
features: {
let mut feats = BTreeSet::new();
feats.insert("serde".to_string());
feats
},
debug: None,
install_prereleases: None,
enforce_lock: None,
respect_binaries: None,
target_version: None,
});
pkgs
}));
sourcepub fn write(
configuration: &BTreeMap<String, PackageConfig>,
p: &Path
) -> Result<(), (String, i32)>
pub fn write( configuration: &BTreeMap<String, PackageConfig>, p: &Path ) -> Result<(), (String, i32)>
Save a configset to the specified file.
Examples
PackageConfig::write(&{
let mut pkgs = BTreeMap::new();
pkgs.insert("cargo-update".to_string(), PackageConfig {
toolchain: None,
default_features: true,
features: {
let mut feats = BTreeSet::new();
feats.insert("serde".to_string());
feats
},
debug: None,
install_prereleases: None,
enforce_lock: None,
respect_binaries: None,
target_version: None,
});
pkgs
}, &config_file).unwrap();
assert_eq!(&fs::read_to_string(&config_file).unwrap(),
"[cargo-update]\n\
default_features = true\n\
features = [\"serde\"]\n");
Trait Implementations§
source§impl Clone for PackageConfig
impl Clone for PackageConfig
source§fn clone(&self) -> PackageConfig
fn clone(&self) -> PackageConfig
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for PackageConfig
impl Debug for PackageConfig
source§impl Default for PackageConfig
impl Default for PackageConfig
source§fn default() -> PackageConfig
fn default() -> PackageConfig
source§impl<'de> Deserialize<'de> for PackageConfig
impl<'de> Deserialize<'de> for PackageConfig
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where __D: Deserializer<'de>,
source§impl Hash for PackageConfig
impl Hash for PackageConfig
source§impl PartialEq<PackageConfig> for PackageConfig
impl PartialEq<PackageConfig> for PackageConfig
source§fn eq(&self, other: &PackageConfig) -> bool
fn eq(&self, other: &PackageConfig) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl Serialize for PackageConfig
impl Serialize for PackageConfig
impl Eq for PackageConfig
impl StructuralEq for PackageConfig
impl StructuralPartialEq for PackageConfig
Auto Trait Implementations§
impl RefUnwindSafe for PackageConfig
impl Send for PackageConfig
impl Sync for PackageConfig
impl Unpin for PackageConfig
impl UnwindSafe for PackageConfig
Blanket Implementations§
source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.