diff options
Diffstat (limited to 'src/librustdoc/config.rs')
| -rw-r--r-- | src/librustdoc/config.rs | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/src/librustdoc/config.rs b/src/librustdoc/config.rs index fd4d9845c89..e67fe6c88ea 100644 --- a/src/librustdoc/config.rs +++ b/src/librustdoc/config.rs @@ -315,23 +315,30 @@ pub(crate) enum ModuleSorting { Alphabetical, } -#[derive(Copy, Clone, Debug, PartialEq, Eq)] +#[derive(Clone, Debug, PartialEq, Eq)] pub(crate) enum EmitType { Unversioned, Toolchain, InvocationSpecific, + DepInfo(Option<PathBuf>), } impl FromStr for EmitType { type Err = (); fn from_str(s: &str) -> Result<Self, Self::Err> { - use EmitType::*; match s { - "unversioned-shared-resources" => Ok(Unversioned), - "toolchain-shared-resources" => Ok(Toolchain), - "invocation-specific" => Ok(InvocationSpecific), - _ => Err(()), + "unversioned-shared-resources" => Ok(Self::Unversioned), + "toolchain-shared-resources" => Ok(Self::Toolchain), + "invocation-specific" => Ok(Self::InvocationSpecific), + "dep-info" => Ok(Self::DepInfo(None)), + option => { + if let Some(file) = option.strip_prefix("dep-info=") { + Ok(Self::DepInfo(Some(Path::new(file).into()))) + } else { + Err(()) + } + } } } } @@ -340,6 +347,15 @@ impl RenderOptions { pub(crate) fn should_emit_crate(&self) -> bool { self.emit.is_empty() || self.emit.contains(&EmitType::InvocationSpecific) } + + pub(crate) fn dep_info(&self) -> Option<Option<&Path>> { + for emit in &self.emit { + if let EmitType::DepInfo(file) = emit { + return Some(file.as_deref()); + } + } + None + } } /// Create the input (string or file path) |
