Skip to content

Commit 43f6c00

Browse files
committed
Enable rendering readmes of a particular crate only
This'll make it easier to debug and try fixing particular crates.
1 parent d4e7c32 commit 43f6c00

File tree

2 files changed

+31
-7
lines changed

2 files changed

+31
-7
lines changed

src/bin/render-readmes.rs

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,14 @@ Options:
4747
-h, --help Show this message.
4848
--page-size NUM How many versions should be queried and processed at a time.
4949
--older-than DATE Only rerender readmes that are older than this date.
50+
--crate NAME Only rerender readmes for the specified crate.
5051
";
5152

5253
#[derive(Deserialize)]
5354
struct Args {
5455
flag_page_size: Option<usize>,
5556
flag_older_than: Option<String>,
57+
flag_crate: Option<String>,
5658
}
5759

5860
fn main() {
@@ -65,8 +67,9 @@ fn main() {
6567
let start_time = Utc::now();
6668

6769
let older_than = if let Some(ref time) = args.flag_older_than {
68-
Utc.datetime_from_str(&time, "%Y-%m-%d %H:%M:%S")
69-
.expect("Could not parse --older-than argument as a time")
70+
Utc.datetime_from_str(&time, "%Y-%m-%d %H:%M:%S").expect(
71+
"Could not parse --older-than argument as a time",
72+
)
7073
} else {
7174
start_time
7275
};
@@ -75,26 +78,43 @@ fn main() {
7578
println!("Start time: {}", start_time);
7679
println!("Rendering readmes older than: {}", older_than);
7780

78-
let version_ids = versions::table
81+
let mut query = versions::table
7982
.inner_join(readme_rendering::table)
83+
.inner_join(crates::table)
8084
.filter(readme_rendering::rendered_at.lt(older_than))
8185
.select(versions::id)
82-
.load::<(i32)>(&conn)
83-
.expect("error loading version ids");
86+
.into_boxed();
87+
88+
if let Some(crate_name) = args.flag_crate {
89+
println!("Rendering readmes for {}", crate_name);
90+
query = query.filter(crates::name.eq(crate_name));
91+
}
92+
93+
let version_ids = query.load::<(i32)>(&conn).expect(
94+
"error loading version ids",
95+
);
8496

8597
let total_versions = version_ids.len();
8698
println!("Rendering {} versions", total_versions);
8799

88100
let page_size = args.flag_page_size.unwrap_or(DEFAULT_PAGE_SIZE);
89101

90102
let total_pages = total_versions / page_size;
91-
let total_pages = if total_versions % page_size == 0 { total_pages } else { total_pages + 1 };
103+
let total_pages = if total_versions % page_size == 0 {
104+
total_pages
105+
} else {
106+
total_pages + 1
107+
};
92108

93109
let mut page_num = 0;
94110

95111
for version_ids_chunk in &version_ids.into_iter().chunks(page_size) {
96112
page_num += 1;
97-
println!("= Page {} of {} ==================================", page_num, total_pages);
113+
println!(
114+
"= Page {} of {} ==================================",
115+
page_num,
116+
total_pages
117+
);
98118

99119
let ids: Vec<_> = version_ids_chunk.collect();
100120

src/version.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ use util::errors::CargoError;
2424
use util::{RequestUtils, CargoResult, human};
2525
use license_exprs;
2626

27+
// This is necessary to allow joining version to both crates and readme_rendering
28+
// in the render-readmes script.
29+
enable_multi_table_joins!(crates, readme_rendering);
30+
2731
// Queryable has a custom implementation below
2832
#[derive(Clone, Identifiable, Associations, Debug)]
2933
#[belongs_to(Crate)]

0 commit comments

Comments
 (0)