Skip to content

Commit 0a96fe4

Browse files
Avoid populating target if package is never available
This does mean that newly added components will not be visible until they are first available, but that seems fine.
1 parent 3c5fc9d commit 0a96fe4

File tree

3 files changed

+18
-12
lines changed

3 files changed

+18
-12
lines changed

library/src/availability.rs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,13 @@ impl AvailabilityData {
4545
.map(|name| String::clone(name))
4646
.unwrap_or(package_name);
4747
for (target_tripple, target_info) in info.targets {
48-
let package_set = self
49-
.data
50-
.entry(target_tripple.clone())
51-
.or_default()
52-
.entry(package_name.clone())
53-
.or_default();
5448
if target_info.available {
55-
package_set.insert(manifest.date);
49+
self.data
50+
.entry(target_tripple.clone())
51+
.or_default()
52+
.entry(package_name.clone())
53+
.or_default()
54+
.insert(manifest.date);
5655
}
5756
}
5857
}
@@ -93,22 +92,25 @@ impl AvailabilityData {
9392
target: &str,
9493
pkg: &'a str,
9594
dates: I,
96-
) -> AvailabilityRow<'a>
95+
) -> Option<AvailabilityRow<'a>>
9796
where
9897
I: IntoIterator,
9998
I::Item: Borrow<NaiveDate>,
10099
{
100+
if self.data.get(target).and_then(|t| t.get(pkg)).is_none() {
101+
return None;
102+
}
101103
let available_dates = self.available_dates(target, pkg);
102104
let availability_list = dates
103105
.into_iter()
104106
.map(|date| available_dates.contains(date.borrow()))
105107
.collect();
106-
AvailabilityRow {
108+
Some(AvailabilityRow {
107109
package_name: pkg,
108110
availability_list,
109111
last_available: available_dates.into_iter().max(),
110112
_hidden: (),
111-
}
113+
})
112114
}
113115

114116
/// Retrieves a set of all the dates when a given package was available on a given target.

library/src/table.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ impl<'a, Additional> Table<'a, Additional> {
166166
let packages = sort(data.get_available_packages());
167167
let availability = packages
168168
.into_iter()
169-
.map(|pkg| data.get_availability_row(target, pkg, dates.clone()))
169+
.filter_map(|pkg| data.get_availability_row(target, pkg, dates.clone()))
170170
.collect();
171171
Table {
172172
current_target: target,

web/src/main.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,11 @@ fn generate_fs_tree(
132132
.with_context(|| format!("Can't create path {}", target_path.display()))?;
133133

134134
for pkg in &pkgs {
135-
let row = data.get_availability_row(target, pkg, dates);
135+
let row = if let Some(row) = data.get_availability_row(target, pkg, dates) {
136+
row
137+
} else {
138+
continue;
139+
};
136140
if let Some(date) = row.last_available {
137141
let path = target_path.join(pkg);
138142
let mut f = File::create(&path)

0 commit comments

Comments
 (0)