Skip to content

Commit e12c79b

Browse files
committed
Fixed crate releases list
1 parent 731d031 commit e12c79b

File tree

2 files changed

+49
-13
lines changed

2 files changed

+49
-13
lines changed

src/web/crate_details.rs

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ pub struct Release {
6363
pub version: String,
6464
pub build_status: bool,
6565
pub yanked: bool,
66+
pub is_library: bool,
6667
}
6768

6869
impl CrateDetails {
@@ -243,15 +244,23 @@ impl CrateDetails {
243244
fn map_to_release(conn: &Connection, crate_id: i32, version: String) -> Release {
244245
let rows = conn
245246
.query(
246-
"SELECT build_status, yanked
247+
"SELECT build_status,
248+
yanked,
249+
is_library
247250
FROM releases
248251
WHERE releases.crate_id = $1 and releases.version = $2;",
249252
&[&crate_id, &version],
250253
)
251254
.unwrap();
252255

253-
let (build_status, yanked) = if !rows.is_empty() {
254-
(rows.get(0).get(0), rows.get(0).get(1))
256+
let (build_status, yanked, is_library) = if !rows.is_empty() {
257+
let row = rows.get(0);
258+
259+
(
260+
row.get("build_status"),
261+
row.get("yanked"),
262+
row.get("is_library"),
263+
)
255264
} else {
256265
Default::default()
257266
};
@@ -260,6 +269,7 @@ fn map_to_release(conn: &Connection, crate_id: i32, version: String) -> Release
260269
version,
261270
build_status,
262271
yanked,
272+
is_library,
263273
}
264274
}
265275

@@ -438,6 +448,12 @@ mod tests {
438448
.name("foo")
439449
.version("0.2.0-alpha")
440450
.create()?;
451+
db.fake_release()
452+
.name("foo")
453+
.version("0.0.1")
454+
.build_result_successful(false)
455+
.binary(true)
456+
.create()?;
441457

442458
let details = CrateDetails::new(&db.conn(), "foo", "0.2.0").unwrap();
443459
assert_eq!(
@@ -446,37 +462,50 @@ mod tests {
446462
Release {
447463
version: "1.0.0".to_string(),
448464
build_status: true,
449-
yanked: false
465+
yanked: false,
466+
is_library: true,
450467
},
451468
Release {
452469
version: "0.12.0".to_string(),
453470
build_status: true,
454-
yanked: false
471+
yanked: false,
472+
is_library: true,
455473
},
456474
Release {
457475
version: "0.3.0".to_string(),
458476
build_status: false,
459-
yanked: false
477+
yanked: false,
478+
is_library: true,
460479
},
461480
Release {
462481
version: "0.2.0".to_string(),
463482
build_status: true,
464-
yanked: true
483+
yanked: true,
484+
is_library: true,
465485
},
466486
Release {
467487
version: "0.2.0-alpha".to_string(),
468488
build_status: true,
469-
yanked: false
489+
yanked: false,
490+
is_library: true,
470491
},
471492
Release {
472493
version: "0.1.1".to_string(),
473494
build_status: true,
474-
yanked: false
495+
yanked: false,
496+
is_library: true,
475497
},
476498
Release {
477499
version: "0.1.0".to_string(),
478500
build_status: true,
479-
yanked: false
501+
yanked: false,
502+
is_library: true,
503+
},
504+
Release {
505+
version: "0.0.1".to_string(),
506+
build_status: false,
507+
yanked: false,
508+
is_library: false,
480509
},
481510
]
482511
);

templates/macros.html

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@
8383
* `version` A string of the release's version
8484
* `yanked` A boolean of the release's yanked status
8585
* `build_status` A boolean of the crate's build status (true for built, false for failed build)
86+
* `is_library` A boolean that's true if the crate is a library and false if it's a binary
8687
#}
8788
{% macro releases_list(name, releases) %}
8889
{%- for release in releases -%}
@@ -92,8 +93,14 @@
9293
{%- set release_name = name ~ "-" ~ release.version -%}
9394

9495
<li class="pure-menu-item">
95-
{# If the release is yanked but built, display an warning #}
96-
{%- if release.yanked and release.build_status -%}
96+
{# If the release isn't a library, then display that warning #}
97+
{% if not release.is_library -%}
98+
<a href="{{ release_url }}" class="pure-menu-link warn" title="{{ release_name }} is not a library">
99+
<i class="fa fa-fw fa-warning"></i> {{ release.version }}
100+
</a>
101+
102+
{# If the release has been yanked and failed to build, display a warning #}
103+
{%- elif release.yanked and release.build_status -%}
97104
<a href="{{ release_url }}" class="pure-menu-link warn" title="{{ release_name }} is yanked">
98105
<i class="fa fa-fw fa-warning"></i> {{ release.version }}
99106
</a>
@@ -116,7 +123,7 @@
116123
<a href="{{ release_url }}" class="pure-menu-link">
117124
{{ release.version }}
118125
</a>
119-
{%- endif -%}
126+
{%- endif %}
120127
</li>
121128
{%- endfor -%}
122129
{% endmacro releases_list %}

0 commit comments

Comments
 (0)