@@ -47,12 +47,14 @@ Options:
47
47
-h, --help Show this message.
48
48
--page-size NUM How many versions should be queried and processed at a time.
49
49
--older-than DATE Only rerender readmes that are older than this date.
50
+ --crate NAME Only rerender readmes for the specified crate.
50
51
" ;
51
52
52
53
#[ derive( Deserialize ) ]
53
54
struct Args {
54
55
flag_page_size : Option < usize > ,
55
56
flag_older_than : Option < String > ,
57
+ flag_crate : Option < String > ,
56
58
}
57
59
58
60
fn main ( ) {
@@ -65,8 +67,9 @@ fn main() {
65
67
let start_time = Utc :: now ( ) ;
66
68
67
69
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
+ )
70
73
} else {
71
74
start_time
72
75
} ;
@@ -75,26 +78,43 @@ fn main() {
75
78
println ! ( "Start time: {}" , start_time) ;
76
79
println ! ( "Rendering readmes older than: {}" , older_than) ;
77
80
78
- let version_ids = versions:: table
81
+ let mut query = versions:: table
79
82
. inner_join ( readme_rendering:: table)
83
+ . inner_join ( crates:: table)
80
84
. filter ( readme_rendering:: rendered_at. lt ( older_than) )
81
85
. 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
+ ) ;
84
96
85
97
let total_versions = version_ids. len ( ) ;
86
98
println ! ( "Rendering {} versions" , total_versions) ;
87
99
88
100
let page_size = args. flag_page_size . unwrap_or ( DEFAULT_PAGE_SIZE ) ;
89
101
90
102
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
+ } ;
92
108
93
109
let mut page_num = 0 ;
94
110
95
111
for version_ids_chunk in & version_ids. into_iter ( ) . chunks ( page_size) {
96
112
page_num += 1 ;
97
- println ! ( "= Page {} of {} ==================================" , page_num, total_pages) ;
113
+ println ! (
114
+ "= Page {} of {} ==================================" ,
115
+ page_num,
116
+ total_pages
117
+ ) ;
98
118
99
119
let ids: Vec < _ > = version_ids_chunk. collect ( ) ;
100
120
0 commit comments