// glob-like matching rules
let glob_parse = |p: &String| {
- Pattern::new(p).map_err(|e| {
+ let pattern: &str = if p.starts_with('/') {
+ &p[1..p.len()]
+ } else {
+ &p
+ };
+ Pattern::new(pattern).map_err(|e| {
CargoError::from(format!("could not parse glob pattern `{}`: {}", p, e))
})
};
.collect::<Result<Vec<_>, _>>()?;
let glob_should_package = |relative_path: &Path| -> bool {
+ fn glob_match(patterns: &Vec<Pattern>, relative_path: &Path) -> bool {
+ patterns.iter().any(|pattern| pattern.matches_path(relative_path))
+ }
+
// include and exclude options are mutually exclusive.
if no_include_option {
- !glob_exclude.iter().any(|pattern| {
- pattern.matches_path(relative_path)
- })
+ !glob_match(&glob_exclude, relative_path)
} else {
- glob_include.iter().any(|pattern| {
- pattern.matches_path(relative_path)
- })
+ glob_match(&glob_include, relative_path)
}
};
.shell()
.warn(format!(
"Pattern matching for Cargo's include/exclude fields is changing and \
- file `{}` WILL be excluded in the next Cargo version.\n\
+ file `{}` WILL be excluded in a future Cargo version.\n\
See https://github.com/rust-lang/cargo/issues/4268 for more info",
relative_path.display()
))?;
.shell()
.warn(format!(
"Pattern matching for Cargo's include/exclude fields is changing and \
- file `{}` WILL NOT be included in the next Cargo version.\n\
+ file `{}` WILL NOT be included in a future Cargo version.\n\
See https://github.com/rust-lang/cargo/issues/4268 for more info",
relative_path.display()
))?;
.shell()
.warn(format!(
"Pattern matching for Cargo's include/exclude fields is changing and \
- file `{}` WILL NOT be excluded in the next Cargo version.\n\
+ file `{}` WILL NOT be excluded in a future Cargo version.\n\
See https://github.com/rust-lang/cargo/issues/4268 for more info",
relative_path.display()
))?;
.shell()
.warn(format!(
"Pattern matching for Cargo's include/exclude fields is changing and \
- file `{}` WILL be included in the next Cargo version.\n\
+ file `{}` WILL be included in a future Cargo version.\n\
See https://github.com/rust-lang/cargo/issues/4268 for more info",
relative_path.display()
))?;
See [..]
[WARNING] [..] file `dir_root_3[/]some_dir[/]file` WILL be excluded [..]
See [..]
-[WARNING] [..] file `file_root_2` WILL be excluded [..]
-See [..]
[WARNING] [..] file `some_dir[/]dir_deep_1[/]some_dir[/]file` WILL be excluded [..]
See [..]
[WARNING] [..] file `some_dir[/]dir_deep_3[/]some_dir[/]file` WILL be excluded [..]
[ARCHIVING] [..]
[ARCHIVING] [..]
[ARCHIVING] [..]
-[ARCHIVING] [..]
"));
assert_that(&p.root().join("target/package/foo-0.0.1.crate"), existing_file());
dir_root_1[/]some_dir[/]file
dir_root_2[/]some_dir[/]file
dir_root_3[/]some_dir[/]file
-file_root_2
file_root_3
file_root_4
file_root_5