Skip to content

Commit f8d6df8

Browse files
committed
Refactor toml manifest parsing
1 parent 40c31b4 commit f8d6df8

4 files changed

Lines changed: 370 additions & 268 deletions

File tree

src/check.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,10 @@ pub async fn all_checks(
2828
) -> Result<(SystemWorld, Diagnostics)> {
2929
let mut diags = Diagnostics::default();
3030

31-
let worlds = manifest::check(&package_dir, &mut diags, package_spec).await?;
31+
let (manifest, worlds) = manifest::check(&package_dir, &mut diags, package_spec).await?;
32+
33+
files::check(&mut diags, &package_dir, &manifest);
34+
3235
compile::check(&mut diags, &worlds.package);
3336
if let Some(template_world) = worlds.template {
3437
let mut template_diags = Diagnostics::default();

src/check/files.rs

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,14 @@ use std::collections::HashSet;
22
use std::path::Path;
33

44
use codespan_reporting::diagnostic::{Diagnostic, Label};
5-
use ignore::overrides::Override;
65

6+
use crate::check::manifest::Manifest;
77
use crate::check::path::PackagePath;
88
use crate::check::Diagnostics;
99

10-
pub fn check_files(
11-
diags: &mut Diagnostics,
12-
package_dir: &Path,
13-
exclude: &Override,
14-
thumbnail_path: Option<PackagePath>,
15-
) {
16-
let thumbnail_path = thumbnail_path.as_ref().map(PackagePath::as_path);
10+
pub fn check(diags: &mut Diagnostics, package_dir: &Path, manifest: &Manifest) {
11+
let exclude = &manifest.package.exclude;
12+
let thumbnail_path = manifest.thumbnail();
1713

1814
// Manually keep track of excluded directories, to figure out if nested
1915
// files are ignored. This is done, so we can generate diagnostics for
@@ -39,13 +35,12 @@ pub fn check_files(
3935
}
4036

4137
// The thumbnail is always excluded.
42-
let is_thumbnail = Some(file_path) == thumbnail_path;
38+
let is_thumbnail = thumbnail_path.is_some_and(|t| t.val == file_path);
4339
let excluded = is_thumbnail
4440
|| parent_is_excluded(&excluded_dirs, file_path)
4541
|| exclude.matched(file_path.relative(), false).is_ignore();
4642

4743
forbid_font_files(diags, file_path);
48-
4944
exclude_large_files(diags, file_path, excluded, metadata.len());
5045
exclude_examples_and_tests(diags, file_path, excluded);
5146
}

0 commit comments

Comments
 (0)