mirror of
https://github.com/rust-lang/cargo.git
synced 2025-10-01 11:30:39 +00:00
refactor(toml): Move the parse fn onto ScriptSource
This commit is contained in:
parent
7ec1867ba0
commit
e82a4beaed
@ -21,7 +21,7 @@ pub(super) fn expand_manifest(
|
||||
path: &std::path::Path,
|
||||
gctx: &GlobalContext,
|
||||
) -> CargoResult<String> {
|
||||
let source = split_source(content)?;
|
||||
let source = ScriptSource::parse(content)?;
|
||||
if let Some(frontmatter) = source.frontmatter {
|
||||
match source.info {
|
||||
Some("cargo") | None => {}
|
||||
@ -196,8 +196,9 @@ struct ScriptSource<'s> {
|
||||
content: &'s str,
|
||||
}
|
||||
|
||||
fn split_source(input: &str) -> CargoResult<ScriptSource<'_>> {
|
||||
let mut source = ScriptSource {
|
||||
impl<'s> ScriptSource<'s> {
|
||||
fn parse(input: &'s str) -> CargoResult<Self> {
|
||||
let mut source = Self {
|
||||
shebang: None,
|
||||
info: None,
|
||||
frontmatter: None,
|
||||
@ -278,6 +279,7 @@ fn split_source(input: &str) -> CargoResult<ScriptSource<'_>> {
|
||||
|
||||
Ok(source)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test_expand {
|
||||
@ -291,7 +293,7 @@ mod test_expand {
|
||||
fn assert_source(source: &str, expected: impl IntoData) {
|
||||
use std::fmt::Write as _;
|
||||
|
||||
let actual = match split_source(source) {
|
||||
let actual = match ScriptSource::parse(source) {
|
||||
Ok(actual) => actual,
|
||||
Err(err) => panic!("unexpected err: {err}"),
|
||||
};
|
||||
@ -497,7 +499,7 @@ content: "\nfn main() {}"
|
||||
#[test]
|
||||
fn split_too_few_dashes() {
|
||||
assert_err(
|
||||
split_source(
|
||||
ScriptSource::parse(
|
||||
r#"#!/usr/bin/env cargo
|
||||
--
|
||||
[dependencies]
|
||||
@ -513,7 +515,7 @@ fn main() {}
|
||||
#[test]
|
||||
fn split_mismatched_dashes() {
|
||||
assert_err(
|
||||
split_source(
|
||||
ScriptSource::parse(
|
||||
r#"#!/usr/bin/env cargo
|
||||
---
|
||||
[dependencies]
|
||||
@ -529,7 +531,7 @@ fn main() {}
|
||||
#[test]
|
||||
fn split_missing_close() {
|
||||
assert_err(
|
||||
split_source(
|
||||
ScriptSource::parse(
|
||||
r#"#!/usr/bin/env cargo
|
||||
---
|
||||
[dependencies]
|
||||
|
Loading…
x
Reference in New Issue
Block a user