@@ -23,7 +23,7 @@ use crate::cache::{INTERNER, Interned};
23
23
use crate :: config:: Config ;
24
24
25
25
macro_rules! book {
26
- ( $( $name: ident, $path: expr, $book_name: expr; ) +) => {
26
+ ( $( $name: ident, $path: expr, $book_name: expr, $book_ver : expr ; ) +) => {
27
27
$(
28
28
#[ derive( Debug , Copy , Clone , Hash , PartialEq , Eq ) ]
29
29
pub struct $name {
@@ -49,26 +49,36 @@ macro_rules! book {
49
49
builder. ensure( Rustbook {
50
50
target: self . target,
51
51
name: INTERNER . intern_str( $book_name) ,
52
+ version: $book_ver,
52
53
} )
53
54
}
54
55
}
55
56
) +
56
57
}
57
58
}
58
59
60
+ // NOTE: When adding a book here, make sure to ALSO build the book by
61
+ // adding a build step in `src/bootstrap/builder.rs`!
59
62
book ! (
60
- Nomicon , "src/doc/nomicon " , "nomicon" ;
61
- Reference , "src/doc/reference " , "reference" ;
62
- EditionGuide , "src/doc/edition-guide " , "edition-guide" ;
63
- RustdocBook , "src/doc/rustdoc " , "rustdoc" ;
64
- RustcBook , "src/doc/rustc" , "rustc" ;
65
- RustByExample , "src/doc/rust-by-example " , "rust-by-example" ;
63
+ EditionGuide , "src/doc/edition-guide " , "edition-guide" , RustbookVersion :: MdBook1 ;
64
+ Nomicon , "src/doc/nomicon " , "nomicon" , RustbookVersion :: MdBook1 ;
65
+ Reference , "src/doc/reference " , "reference" , RustbookVersion :: MdBook1 ;
66
+ RustByExample , "src/doc/rust-by-example " , "rust-by-example" , RustbookVersion :: MdBook1 ;
67
+ RustcBook , "src/doc/rustc" , "rustc" , RustbookVersion :: MdBook1 ;
68
+ RustdocBook , "src/doc/rustdoc " , "rustdoc" , RustbookVersion :: MdBook1 ;
66
69
) ;
67
70
71
+ #[ derive( Debug , Copy , Clone , Hash , PartialEq , Eq ) ]
72
+ enum RustbookVersion {
73
+ MdBook1 ,
74
+ MdBook2 ,
75
+ }
76
+
68
77
#[ derive( Debug , Copy , Clone , Hash , PartialEq , Eq ) ]
69
78
struct Rustbook {
70
79
target : Interned < String > ,
71
80
name : Interned < String > ,
81
+ version : RustbookVersion ,
72
82
}
73
83
74
84
impl Step for Rustbook {
@@ -90,6 +100,7 @@ impl Step for Rustbook {
90
100
target : self . target ,
91
101
name : self . name ,
92
102
src : INTERNER . intern_path ( src) ,
103
+ version : self . version ,
93
104
} ) ;
94
105
}
95
106
}
@@ -122,6 +133,7 @@ impl Step for UnstableBook {
122
133
target : self . target ,
123
134
name : INTERNER . intern_str ( "unstable-book" ) ,
124
135
src : builder. md_doc_out ( self . target ) ,
136
+ version : RustbookVersion :: MdBook1 ,
125
137
} )
126
138
}
127
139
}
@@ -175,6 +187,7 @@ struct RustbookSrc {
175
187
target : Interned < String > ,
176
188
name : Interned < String > ,
177
189
src : Interned < PathBuf > ,
190
+ version : RustbookVersion ,
178
191
}
179
192
180
193
impl Step for RustbookSrc {
@@ -205,11 +218,19 @@ impl Step for RustbookSrc {
205
218
}
206
219
builder. info ( & format ! ( "Rustbook ({}) - {}" , target, name) ) ;
207
220
let _ = fs:: remove_dir_all ( & out) ;
221
+
222
+ let vers = match self . version {
223
+ RustbookVersion :: MdBook1 => "1" ,
224
+ RustbookVersion :: MdBook2 => "2" ,
225
+ } ;
226
+
208
227
builder. run ( rustbook_cmd
209
228
. arg ( "build" )
210
229
. arg ( & src)
211
230
. arg ( "-d" )
212
- . arg ( out) ) ;
231
+ . arg ( out)
232
+ . arg ( "-m" )
233
+ . arg ( vers) ) ;
213
234
}
214
235
}
215
236
@@ -255,6 +276,7 @@ impl Step for TheBook {
255
276
builder. ensure ( Rustbook {
256
277
target,
257
278
name : INTERNER . intern_string ( name. to_string ( ) ) ,
279
+ version : RustbookVersion :: MdBook1 ,
258
280
} ) ;
259
281
260
282
// building older edition redirects
@@ -263,18 +285,21 @@ impl Step for TheBook {
263
285
builder. ensure ( Rustbook {
264
286
target,
265
287
name : INTERNER . intern_string ( source_name) ,
288
+ version : RustbookVersion :: MdBook1 ,
266
289
} ) ;
267
290
268
291
let source_name = format ! ( "{}/second-edition" , name) ;
269
292
builder. ensure ( Rustbook {
270
293
target,
271
294
name : INTERNER . intern_string ( source_name) ,
295
+ version : RustbookVersion :: MdBook1 ,
272
296
} ) ;
273
297
274
298
let source_name = format ! ( "{}/2018-edition" , name) ;
275
299
builder. ensure ( Rustbook {
276
300
target,
277
301
name : INTERNER . intern_string ( source_name) ,
302
+ version : RustbookVersion :: MdBook1 ,
278
303
} ) ;
279
304
280
305
// build the version info page and CSS
0 commit comments