Skip to content

Commit 16459e2

Browse files
committed
removing unwraps
1 parent d419312 commit 16459e2

File tree

5 files changed

+85
-50
lines changed

5 files changed

+85
-50
lines changed

src/cache/file.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ impl GlobalCache {
9191

9292
fn get_cache_path(&self) -> PathBuf {
9393
let cache_dir = self.base_path.join(PathBuf::from(&self.cache_directory));
94-
fs::create_dir_all(&cache_dir).unwrap();
94+
let _ =fs::create_dir_all(&cache_dir);
9595

9696
cache_dir.join("project-file-cache.json")
9797
}

src/ownership/mapper/directory_mapper.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ impl Mapper for DirectoryMapper {
2121
let team_by_name = self.project.teams_by_name.clone();
2222

2323
for directory_codeowner_file in &self.project.directory_codeowner_files {
24-
let dir_root = directory_codeowner_file.directory_root().to_string_lossy();
24+
let dir_root = directory_codeowner_file
25+
.directory_root()
26+
.map(|p| p.to_string_lossy())
27+
.unwrap_or_default();
2528
let team = team_by_name.get(&directory_codeowner_file.owner);
2629
if let Some(team) = team {
2730
entries.push(Entry {
@@ -41,9 +44,12 @@ impl Mapper for DirectoryMapper {
4144

4245
for file in &self.project.directory_codeowner_files {
4346
owner_matchers.push(OwnerMatcher::new_glob(
44-
format!("{}/**/**", escape_brackets(&file.directory_root().to_string_lossy())),
47+
format!(
48+
"{}/**/**",
49+
escape_brackets(&file.directory_root().map(|p| p.to_string_lossy()).unwrap_or_default())
50+
),
4551
file.owner.to_owned(),
46-
Source::Directory(file.directory_root().to_string_lossy().to_string()),
52+
Source::Directory(file.directory_root().map(|p| p.to_string_lossy().to_string()).unwrap_or_default()),
4753
));
4854
}
4955

src/ownership/mapper/package_mapper.rs

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -69,16 +69,18 @@ impl PackageMapper {
6969
let team_by_name = self.project.teams_by_name.clone();
7070

7171
for package in self.project.packages.iter().filter(|package| &package.package_type == package_type) {
72-
let package_root = package.package_root().to_string_lossy();
73-
let team = team_by_name.get(&package.owner);
74-
75-
if let Some(team) = team {
76-
entries.push(Entry {
77-
path: format!("{}/**/**", package_root),
78-
github_team: team.github_team.to_owned(),
79-
team_name: team.name.to_owned(),
80-
disabled: team.avoid_ownership,
81-
});
72+
if let Some(package_root) = package.package_root() {
73+
let package_root = package_root.to_string_lossy();
74+
let team = team_by_name.get(&package.owner);
75+
76+
if let Some(team) = team {
77+
entries.push(Entry {
78+
path: format!("{}/**/**", package_root),
79+
github_team: team.github_team.to_owned(),
80+
team_name: team.name.to_owned(),
81+
disabled: team.avoid_ownership,
82+
});
83+
}
8284
}
8385
}
8486

@@ -97,15 +99,17 @@ impl PackageMapper {
9799
let packages = remove_nested_packages(&packages);
98100

99101
for package in packages {
100-
let package_root = package.package_root().to_string_lossy();
101-
let team = team_by_name.get(&package.owner);
102-
103-
if let Some(team) = team {
104-
owner_matchers.push(OwnerMatcher::new_glob(
105-
format!("{}/**/**", package_root),
106-
team.name.to_owned(),
107-
Source::Package(package.path.to_string_lossy().to_string(), format!("{}/**/**", package_root)),
108-
));
102+
if let Some(package_root) = package.package_root() {
103+
let package_root = package_root.to_string_lossy();
104+
let team = team_by_name.get(&package.owner);
105+
106+
if let Some(team) = team {
107+
owner_matchers.push(OwnerMatcher::new_glob(
108+
format!("{}/**/**", package_root),
109+
team.name.to_owned(),
110+
Source::Package(package.path.to_string_lossy().to_string(), format!("{}/**/**", package_root)),
111+
));
112+
}
109113
}
110114
}
111115

@@ -118,9 +122,10 @@ fn remove_nested_packages<'a>(packages: &'a [&'a Package]) -> Vec<&'a Package> {
118122

119123
for package in packages.iter().sorted_by_key(|package| package.package_root()) {
120124
if let Some(last_package) = top_level_packages.last() {
121-
let last_package_root = last_package.package_root();
122-
if !package.package_root().starts_with(last_package_root) {
123-
top_level_packages.push(package);
125+
if let (Some(current_root), Some(last_root)) = (package.package_root(), last_package.package_root()) {
126+
if !current_root.starts_with(last_root) {
127+
top_level_packages.push(package);
128+
}
124129
}
125130
} else {
126131
top_level_packages.push(package);

src/project.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ pub struct Package {
6666
}
6767

6868
impl Package {
69-
pub fn package_root(&self) -> &Path {
70-
self.path.parent().unwrap()
69+
pub fn package_root(&self) -> Option<&Path> {
70+
self.path.parent()
7171
}
7272
}
7373

@@ -78,8 +78,8 @@ pub struct DirectoryCodeownersFile {
7878
}
7979

8080
impl DirectoryCodeownersFile {
81-
pub fn directory_root(&self) -> &Path {
82-
self.path.parent().unwrap()
81+
pub fn directory_root(&self) -> Option<&Path> {
82+
self.path.parent()
8383
}
8484
}
8585

src/project_builder.rs

Lines changed: 44 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,18 @@ impl<'a> ProjectBuilder<'a> {
7878
.to_lowercase();
7979

8080
match file_name.as_str() {
81-
name if name == "package.yml" && matches_globs(relative_path.parent().unwrap(), &self.config.ruby_package_paths) => {
81+
name if name == "package.yml"
82+
&& relative_path
83+
.parent()
84+
.is_some_and(|parent| matches_globs(parent, &self.config.ruby_package_paths)) =>
85+
{
8286
Ok(EntryType::RubyPackage(absolute_path.to_owned(), relative_path.to_owned()))
8387
}
84-
name if name == "package.json" && matches_globs(relative_path.parent().unwrap(), &self.config.javascript_package_paths) => {
88+
name if name == "package.json"
89+
&& relative_path
90+
.parent()
91+
.is_some_and(|parent| matches_globs(parent, &self.config.javascript_package_paths)) =>
92+
{
8593
Ok(EntryType::JavascriptPackage(absolute_path.to_owned(), relative_path.to_owned()))
8694
}
8795
".codeowner" => Ok(EntryType::CodeownerFile(absolute_path.to_owned(), relative_path.to_owned())),
@@ -124,31 +132,47 @@ impl<'a> ProjectBuilder<'a> {
124132
}
125133
}
126134
EntryType::RubyPackage(absolute_path, relative_path) => {
127-
if let Some(owner) = ruby_package_owner(&absolute_path).unwrap() {
128-
pkgs.push(Package {
129-
path: relative_path.clone(),
130-
owner,
131-
package_type: PackageType::Ruby,
132-
});
135+
match ruby_package_owner(&absolute_path) {
136+
Ok(Some(owner)) => {
137+
pkgs.push(Package {
138+
path: relative_path.clone(),
139+
owner,
140+
package_type: PackageType::Ruby,
141+
});
142+
}
143+
Ok(None) => { /* No owner, do nothing */ }
144+
Err(e) => {
145+
warn!("Error reading ruby package owner for {:?}: {:?}", absolute_path, e);
146+
}
133147
}
134148
}
135149
EntryType::JavascriptPackage(absolute_path, relative_path) => {
136-
if let Some(owner) = javascript_package_owner(&absolute_path).unwrap() {
137-
pkgs.push(Package {
150+
match javascript_package_owner(&absolute_path) {
151+
Ok(Some(owner)) => {
152+
pkgs.push(Package {
153+
path: relative_path.clone(),
154+
owner,
155+
package_type: PackageType::Javascript,
156+
});
157+
}
158+
Ok(None) => { /* No owner, do nothing */ }
159+
Err(e) => {
160+
warn!("Error reading javascript package owner for {:?}: {:?}", absolute_path, e);
161+
}
162+
}
163+
}
164+
EntryType::CodeownerFile(absolute_path, relative_path) => match std::fs::read_to_string(&absolute_path) {
165+
Ok(owner) => {
166+
let owner = owner.trim().to_owned();
167+
codeowners.push(DirectoryCodeownersFile {
138168
path: relative_path.clone(),
139169
owner,
140-
package_type: PackageType::Javascript,
141170
});
142171
}
143-
}
144-
EntryType::CodeownerFile(absolute_path, relative_path) => {
145-
let owner = std::fs::read_to_string(absolute_path).unwrap();
146-
let owner = owner.trim().to_owned();
147-
codeowners.push(DirectoryCodeownersFile {
148-
path: relative_path.clone(),
149-
owner,
150-
});
151-
}
172+
Err(e) => {
173+
warn!("Error reading codeowner file for {:?}: {:?}", absolute_path, e);
174+
}
175+
},
152176
EntryType::TeamFile(absolute_path, _relative_path) => match Team::from_team_file_path(absolute_path) {
153177
Ok(team) => {
154178
team_files.push(team);

0 commit comments

Comments
 (0)