skips_ignore_files_outside_of_a_repo() — tailwindcss Function Reference
Architecture documentation for the skips_ignore_files_outside_of_a_repo() function in scanner.rs from the tailwindcss codebase.
Entity Profile
Dependency Diagram
graph TD 75e01ac5_c130_fb8f_fa19_fe178653d7d0["skips_ignore_files_outside_of_a_repo()"] 96c928f4_eee8_bcbc_0339_e2dce4b2d810["create_files_in()"] 75e01ac5_c130_fb8f_fa19_fe178653d7d0 -->|calls| 96c928f4_eee8_bcbc_0339_e2dce4b2d810 257cbf08_9e94_64b3_97f2_0416460fab35["public_source_entry_from_pattern()"] 75e01ac5_c130_fb8f_fa19_fe178653d7d0 -->|calls| 257cbf08_9e94_64b3_97f2_0416460fab35 1581ed51_04e1_62c1_6e26_ea43cf82d5f9["scan()"] 75e01ac5_c130_fb8f_fa19_fe178653d7d0 -->|calls| 1581ed51_04e1_62c1_6e26_ea43cf82d5f9 style 75e01ac5_c130_fb8f_fa19_fe178653d7d0 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
crates/oxide/tests/scanner.rs lines 1082–1243
fn skips_ignore_files_outside_of_a_repo() {
// Create a temporary working directory
let dir = tempdir().unwrap().into_path();
// Create files
create_files_in(
&dir,
&[
// This file should always be picked up
("home/project/apps/web/index.html", "content-['index.html']"),
// Set up various ignore rules
("home/.gitignore", "ignore-home.html"),
("home/project/.gitignore", "ignore-project.html"),
("home/project/apps/.gitignore", "ignore-apps.html"),
("home/project/apps/web/.gitignore", "ignore-web.html"),
// Some of these should be ignored depending on which dir is the repo root
(
"home/project/apps/web/ignore-home.html",
"content-['ignore-home.html']",
),
(
"home/project/apps/web/ignore-project.html",
"content-['ignore-project.html']",
),
(
"home/project/apps/web/ignore-apps.html",
"content-['ignore-apps.html']",
),
(
"home/project/apps/web/ignore-web.html",
"content-['ignore-web.html']",
),
// Auto content detection outside of `web/`
(
"home/project/apps/admin/index.html",
"content-['home/project/apps/admin/index.html']",
),
// Manual sources outside of `web/`
(
"home/project/apps/dashboard/index.html",
"content-['home/project/apps/dashboard/index.html']",
),
],
);
let sources = vec![
public_source_entry_from_pattern(
dir.join("home/project/apps/web")
.to_string_lossy()
.to_string()
.into(),
"@source '**/*'",
),
public_source_entry_from_pattern(
dir.join("home/project/apps/web")
.to_string_lossy()
.to_string()
.into(),
"@source '../admin'",
),
public_source_entry_from_pattern(
dir.join("home/project/apps/web")
.to_string_lossy()
.to_string()
.into(),
"@source '../dashboard/*.html'",
),
];
let candidates = Scanner::new(sources.clone()).scan();
// All ignore files are applied because there's no git repo
assert_eq!(
candidates,
vec![
"content-['home/project/apps/admin/index.html']",
"content-['home/project/apps/dashboard/index.html']",
"content-['index.html']"
]
);
// Initialize `home` as a git repository and scan again
// The results should be the same as before
_ = Command::new("git")
.arg("init")
.current_dir(dir.join("home"))
.output();
let candidates = Scanner::new(sources.clone()).scan();
assert_eq!(
candidates,
vec![
"content-['home/project/apps/admin/index.html']",
"content-['home/project/apps/dashboard/index.html']",
"content-['index.html']"
]
);
// Drop the .git folder
fs::remove_dir_all(dir.join("home/.git")).unwrap();
// Initialize `home/project` as a git repository and scan again
_ = Command::new("git")
.arg("init")
.current_dir(dir.join("home/project"))
.output();
let candidates = Scanner::new(sources.clone()).scan();
assert_eq!(
candidates,
vec![
"content-['home/project/apps/admin/index.html']",
"content-['home/project/apps/dashboard/index.html']",
"content-['ignore-home.html']",
"content-['index.html']"
]
);
// Drop the .git folder
fs::remove_dir_all(dir.join("home/project/.git")).unwrap();
// Initialize `home/project/apps` as a git repository and scan again
_ = Command::new("git")
.arg("init")
.current_dir(dir.join("home/project/apps"))
.output();
let candidates = Scanner::new(sources.clone()).scan();
assert_eq!(
candidates,
vec![
"content-['home/project/apps/admin/index.html']",
"content-['home/project/apps/dashboard/index.html']",
"content-['ignore-home.html']",
"content-['ignore-project.html']",
"content-['index.html']"
]
);
// Drop the .git folder
fs::remove_dir_all(dir.join("home/project/apps/.git")).unwrap();
// Initialize `home/project/apps` as a git repository and scan again
_ = Command::new("git")
.arg("init")
.current_dir(dir.join("home/project/apps/web"))
.output();
let candidates = Scanner::new(sources.clone()).scan();
assert_eq!(
candidates,
vec![
"content-['home/project/apps/admin/index.html']",
"content-['home/project/apps/dashboard/index.html']",
"content-['ignore-apps.html']",
"content-['ignore-home.html']",
"content-['ignore-project.html']",
"content-['index.html']",
]
);
}
Domain
Subdomains
Source
Frequently Asked Questions
What does skips_ignore_files_outside_of_a_repo() do?
skips_ignore_files_outside_of_a_repo() is a function in the tailwindcss codebase.
What does skips_ignore_files_outside_of_a_repo() call?
skips_ignore_files_outside_of_a_repo() calls 3 function(s): create_files_in, public_source_entry_from_pattern, scan.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free