diff --git a/web/atward/build.rs b/web/atward/build.rs new file mode 100644 index 000000000..5dadba3bf --- /dev/null +++ b/web/atward/build.rs @@ -0,0 +1,50 @@ +//! 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()); +} diff --git a/web/atward/default.nix b/web/atward/default.nix index e50ac32be..f3ed04345 100644 --- a/web/atward/default.nix +++ b/web/atward/default.nix @@ -2,4 +2,7 @@ depot.third_party.naersk.buildPackage { src = ./.; + override = x: { + ATWARD_INDEX_HTML = depot.web.atward.indexHtml; + }; } diff --git a/web/atward/indexHtml/default.nix b/web/atward/indexHtml/default.nix new file mode 100644 index 000000000..acb7b6acc --- /dev/null +++ b/web/atward/indexHtml/default.nix @@ -0,0 +1,97 @@ +{ depot, ... }: + +depot.web.tvl.template { + useUrls = true; + title = "atward"; + content = '' +
+ atward is TVL's search + service. It can be configured as a browser search engine for easy + access to TVL bugs, code reviews, code paths and more. +
+ ++ To configure atward, add a search engine to your browser with the + following search string: +
https://at.tvl.fyi/?q=%s+ Consider setting a shortcut, for example t or tvl. + You can now quickly access TVL resources by typing something + like t b/42 in your URL bar to get to the bug with ID + 42. + + +
+ The following query types are supported in atward: +
+ Some behaviour of atward can be configured by adding query + parameters to the search string: +
+ In some browsers (like Firefox) users can not edit query + parameters for search engines. As an alternative configuration can + be supplied via cookies with the same names as the configuration + parameters. +
++ The form below can set this configuration: +
+ + + ++ atward's source code lives + at //web/atward. +
+ ''; + extraHead = '' + + + ''; +} diff --git a/web/atward/src/index.html b/web/atward/src/index.html deleted file mode 100644 index a62d168bd..000000000 --- a/web/atward/src/index.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -- atward is TVL's search - service. It can be configured as a browser search engine for easy - access to TVL bugs, code reviews, code paths and more. -
- -- To configure atward, add a search engine to your browser with the - following search string: -
https://at.tvl.fyi/?q=%s- Consider setting a shortcut, for example t or tvl. - You can now quickly access TVL resources by typing something - like t b/42 in your URL bar to get to the bug with ID - 42. - - -
- The following query types are supported in atward: -
- Some behaviour of atward can be configured by adding query - parameters to the search string: -
- In some browsers (like Firefox) users can not edit query - parameters for search engines. As an alternative configuration can - be supplied via cookies with the same names as the configuration - parameters. -
-- The form below can set this configuration: -
- - - -- atward's source code lives - at //web/atward. -
- -