Change-Id: Iab7e00cc26a4f9727d3ab98691ef379921a33052 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5240 Tested-by: BuildkiteCI Reviewed-by: kanepyork <rikingcoding@gmail.com> Reviewed-by: Profpatsch <mail@profpatsch.de> Reviewed-by: grfn <grfn@gws.fyi> Reviewed-by: tazjin <tazjin@tvl.su>
		
			
				
	
	
		
			55 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| //! Build script that can be used outside of Nix builds to inject the
 | |
| //! ATWARD_INDEX_HTML variable when building in development mode.
 | |
| //!
 | |
| //! Note that this script assumes that atward is in a checkout of the
 | |
| //! TVL depot.
 | |
| 
 | |
| use std::process::Command;
 | |
| 
 | |
| static ATWARD_INDEX_HTML: &str = "ATWARD_INDEX_HTML";
 | |
| static ERROR_MESSAGE: &str = r#"Failed to build index page.
 | |
| 
 | |
| When building during development, atward expects to be in a checkout
 | |
| of the TVL depot. This is required to automatically build the index
 | |
| page that is needed at compile time.
 | |
| 
 | |
| As atward can not automatically detect the location of the page,
 | |
| you must set the `ATWARD_INDEX_HTML` environment variable to the
 | |
| right path.
 | |
| 
 | |
| The expected page is build using the files in //web/atward/indexHtml
 | |
| in the depot."#;
 | |
| 
 | |
| fn main() {
 | |
|     // Do nothing if the variable is already set (e.g. via Nix)
 | |
|     if let Ok(_) = std::env::var(ATWARD_INDEX_HTML) {
 | |
|         return;
 | |
|     }
 | |
| 
 | |
|     // Otherwise ask Nix to build it and inject the result.
 | |
|     let output = Command::new("nix-build")
 | |
|         .arg("-A")
 | |
|         .arg("web.atward.indexHtml")
 | |
|         // ... assuming atward is at //web/atward ...
 | |
|         .arg("../..")
 | |
|         .output()
 | |
|         .expect(ERROR_MESSAGE);
 | |
| 
 | |
|     if !output.status.success() {
 | |
|         eprintln!(
 | |
|             "{}\nNix output: {}",
 | |
|             ERROR_MESSAGE,
 | |
|             String::from_utf8_lossy(&output.stderr)
 | |
|         );
 | |
|         return;
 | |
|     }
 | |
| 
 | |
|     let out_path = String::from_utf8(output.stdout)
 | |
|         .expect("Nix returned invalid output after building index page");
 | |
| 
 | |
|     // Return an instruction to Cargo that will set the environment
 | |
|     // variable during rustc calls.
 | |
|     //
 | |
|     // https://doc.rust-lang.org/cargo/reference/build-scripts.html#cargorustc-envvarvalue
 | |
|     println!("cargo:rustc-env={}={}", ATWARD_INDEX_HTML, out_path.trim());
 | |
| }
 |