diff --git a/tooling/xtask/src/tasks/licenses.rs b/tooling/xtask/src/tasks/licenses.rs index fc9832a4b0..c0b82d9a18 100644 --- a/tooling/xtask/src/tasks/licenses.rs +++ b/tooling/xtask/src/tasks/licenses.rs @@ -9,15 +9,18 @@ use crate::workspace::load_workspace; pub struct LicensesArgs {} pub fn run_licenses(_args: LicensesArgs) -> Result<()> { + const LICENSE_FILES: &[&'static str] = &["LICENSE-APACHE", "LICENSE-GPL", "LICENSE-AGPL"]; + let workspace = load_workspace()?; for member in workspace.members { let crate_dir = PathBuf::from(&member); - if has_any_license_file( - &crate_dir, - &["LICENSE-APACHE", "LICENSE-GPL", "LICENSE-AGPL"], - ) { + if let Some(license_file) = first_license_file(&crate_dir, &LICENSE_FILES) { + if !license_file.is_symlink() { + println!("{} is not a symlink", license_file.display()); + } + continue; } @@ -27,13 +30,13 @@ pub fn run_licenses(_args: LicensesArgs) -> Result<()> { Ok(()) } -fn has_any_license_file(path: &Path, license_files: &[&str]) -> bool { +fn first_license_file(path: &Path, license_files: &[&str]) -> Option { for license_file in license_files { let path_to_license = path.join(license_file); if path_to_license.exists() { - return true; + return Some(path_to_license); } } - false + None }