@ -1,17 +1,31 @@
extern crate serde_json ;
use std ::io ::prelude ::* ;
use std ::time ::* ;
fn main ( ) {
println! ( "cargo:rerun-if-changed=config.json" ) ;
println! ( "cargo:rerun-if-changed=src" ) ;
println! ( "cargo:rerun-if-changed=Cargo.toml" ) ;
// Load theme name from config.json and output code to load the theme via include_dir!
let config : serde_json ::Value =
serde_json ::from_str ( & std ::fs ::read_to_string ( "./config.json" ) . unwrap ( ) ) . unwrap ( ) ;
generate_build_timestamp ( ) ;
generate_theme_loader ( & config ) ;
generate_hljs_loader ( & config ) ;
}
fn generate_build_timestamp ( ) {
let build_time = format! (
"pub const BUILD_TIMESTAMP: u64 = {};" ,
SystemTime ::now ( ) . duration_since ( SystemTime ::UNIX_EPOCH ) . unwrap ( ) . as_secs ( ) ) ;
let out_path = std ::path ::PathBuf ::from ( std ::env ::var ( "OUT_DIR" ) . unwrap ( ) ) ;
let mut out_file = std ::fs ::File ::create ( out_path . join ( "build_timestamp.rs" ) ) . unwrap ( ) ;
out_file . write ( build_time . as_bytes ( ) ) . unwrap ( ) ;
out_file . sync_data ( ) . unwrap ( ) ;
}
fn generate_theme_loader ( config : & serde_json ::Value ) {
let theme_name = match config . get ( "theme" ) {
Some ( name ) = > name ,
@ -25,8 +39,6 @@ fn generate_theme_loader(config: &serde_json::Value) {
}
fn generate_hljs_loader ( config : & serde_json ::Value ) {
println! ( "cargo:rerun-if-changed=src/hljs_tpl.rs" ) ;
let highlight_lang = match config . get ( "hljs" ) {
Some ( val ) = > val ,
None = > panic! ( "Please specify what language for hljs to support in `config.json` with `hljs`" )