1+ use crate :: BaseUrl ;
12use crate :: fs:: ensure_directory;
23use anyhow:: Context ;
34use sass_rs:: { Options , compile_file} ;
@@ -22,7 +23,12 @@ fn relative_url(path: &Path, out_dir: &Path) -> anyhow::Result<String> {
2223}
2324
2425/// Compiles SASS file, stores it in `out_dir` and returns the relative URL to it.
25- fn compile_sass ( root_dir : & Path , out_dir : & Path , filename : & str ) -> anyhow:: Result < String > {
26+ fn compile_sass (
27+ root_dir : & Path ,
28+ out_dir : & Path ,
29+ filename : & str ,
30+ base_url : & str ,
31+ ) -> anyhow:: Result < String > {
2632 let scss_file = root_dir
2733 . join ( "src" )
2834 . join ( "styles" )
@@ -31,6 +37,7 @@ fn compile_sass(root_dir: &Path, out_dir: &Path, filename: &str) -> anyhow::Resu
3137 let css = compile_file ( & scss_file, Options :: default ( ) )
3238 . map_err ( |e| anyhow:: anyhow!( "{e}" ) )
3339 . with_context ( || anyhow:: anyhow!( "couldn't compile sass: {}" , scss_file. display( ) ) ) ?;
40+ let css = css. replace ( "$BASEURL" , base_url) ;
3441
3542 let css_sha = format ! ( "{filename}_{}" , hash_string( & css) ) ;
3643 let out_css_path = out_dir
@@ -41,7 +48,7 @@ fn compile_sass(root_dir: &Path, out_dir: &Path, filename: &str) -> anyhow::Resu
4148 write_file ( & out_css_path, & css. into_bytes ( ) )
4249 . with_context ( || anyhow:: anyhow!( "couldn't write css file: {}" , out_css_path. display( ) ) ) ?;
4350
44- Ok ( relative_url ( & out_css_path, & out_dir) ? )
51+ relative_url ( & out_css_path, out_dir)
4552}
4653
4754fn concat_files (
@@ -71,7 +78,7 @@ fn concat_files(
7178 write_file ( Path :: new ( & out_file_path) , concatted. as_bytes ( ) )
7279 . with_context ( || anyhow:: anyhow!( "couldn't write vendor {extension}" ) ) ?;
7380
74- Ok ( relative_url ( & out_file_path, & out_dir) ? )
81+ relative_url ( & out_file_path, out_dir)
7582}
7683
7784fn concat_vendor_css ( root_dir : & Path , out_dir : & Path , files : Vec < & str > ) -> anyhow:: Result < String > {
@@ -105,21 +112,21 @@ pub struct AssetFiles {
105112pub fn compile_assets (
106113 root_dir : & Path ,
107114 out_dir : & Path ,
108- baseurl : & str ,
115+ base_url : & str ,
109116) -> anyhow:: Result < AssetFiles > {
110- let app_css_file = compile_sass ( root_dir, out_dir, "app" ) ?;
111- let fonts_css_file = compile_sass ( root_dir, out_dir, "fonts" ) ?;
117+ let app_css_file = compile_sass ( root_dir, out_dir, "app" , base_url ) ?;
118+ let fonts_css_file = compile_sass ( root_dir, out_dir, "fonts" , base_url ) ?;
112119 let vendor_css_file = concat_vendor_css ( root_dir, out_dir, vec ! [ "tachyons" ] ) ?;
113120 let app_js_file = concat_app_js ( root_dir, out_dir, vec ! [ "tools-install" ] ) ?;
114121
115122 Ok ( AssetFiles {
116123 css : CSSFiles {
117- app : format ! ( "{baseurl} {app_css_file}" ) ,
118- fonts : format ! ( "{baseurl} {fonts_css_file}" ) ,
119- vendor : format ! ( "{baseurl} {vendor_css_file}" ) ,
124+ app : format ! ( "{base_url}/ {app_css_file}" ) ,
125+ fonts : format ! ( "{base_url}/ {fonts_css_file}" ) ,
126+ vendor : format ! ( "{base_url}/ {vendor_css_file}" ) ,
120127 } ,
121128 js : JSFiles {
122- app : format ! ( "{baseurl} {app_js_file}" ) ,
129+ app : format ! ( "{base_url}/ {app_js_file}" ) ,
123130 } ,
124131 } )
125132}
0 commit comments