chiark / gitweb /
template_dir from config
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 26 Aug 2020 22:31:30 +0000 (23:31 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 26 Aug 2020 22:31:30 +0000 (23:31 +0100)
server.toml
src/bin/server.rs
src/global.rs

index 9c1d48b2d4d0e3f1024e8bcf9dbc12d756212508..2d6ac173a032564322ea2b0410f8bc54efae888f 100644 (file)
@@ -2,3 +2,4 @@
 # target/debug/server ~ian/Rustup/Game/server/server.toml
 
 save_directory = "/home/ian/Rustup/Game/server/save"
+template_dir = "/home/ian/Rustup/Game/server/templates"
index 04bfb6ae4fda04af49bd41872f67e3320ea1ac04..46a19f89d634ebe31669e59f5014be3245ebe95e 100644 (file)
@@ -62,8 +62,7 @@ fn updates(ctoken : InstanceAccess<ClientId>, gen: u64)
 
 #[get("/_/<leaf>")]
 fn resource(leaf : CheckedResourceLeaf) -> io::Result<NamedFile> {
-  let template_dir = "templates";
-  NamedFile::open(format!("{}/{}", template_dir, leaf.safe))
+  NamedFile::open(format!("{}/{}", config().template_dir, leaf.safe))
 }  
 
 #[throws(StartupError)]
@@ -101,6 +100,8 @@ fn main() {
   if let Some(port) = c.http_port {
     cbuilder = cbuilder.port(port);
   }
+  cbuilder.extras.insert("template_dir".to_owned(),
+                         c.template_dir.clone().into());
   let rconfig = cbuilder.finalize()?;
 
   let r = rocket::custom(rconfig)
index 4f6dd6401448c47ffdba5a35f6a01cc44380eb9b..5501b3cc3984de2a8561c11d31ed65d3c9fd6f3d 100644 (file)
@@ -924,6 +924,7 @@ const DEFAULT_CONFIG_FILENAME : &str = "server.toml";
 
 const DEFAULT_SAVE_DIRECTORY : &str = "save";
 const DEFAULT_COMMAND_SOCKET : &str = "command.socket"; // in save dir
+const DEFAULT_TEMPLATE_DIR : &str = "templates";
 
 #[derive(Deserialize,Debug,Clone)]
 pub struct ServerConfigSpec {
@@ -932,6 +933,7 @@ pub struct ServerConfigSpec {
   pub debug: Option<bool>,
   pub http_port: Option<u16>,
   pub rocket_workers: Option<u16>,
+  pub template_dir: Option<String>,
 }
 
 #[derive(Debug,Clone)]
@@ -941,6 +943,7 @@ pub struct ServerConfig {
   pub debug: bool,
   pub http_port: Option<u16>,
   pub rocket_workers: u16,
+  pub template_dir: String,
 }
 
 impl TryFrom<ServerConfigSpec> for ServerConfig {
@@ -949,7 +952,7 @@ impl TryFrom<ServerConfigSpec> for ServerConfig {
   fn try_from(spec: ServerConfigSpec) -> ServerConfig {
     let ServerConfigSpec {
       save_directory, command_socket, debug,
-      http_port, rocket_workers,
+      http_port, rocket_workers, template_dir
     } = spec;
 
     let save_directory = save_directory
@@ -965,9 +968,12 @@ impl TryFrom<ServerConfigSpec> for ServerConfig {
     let rocket_workers = rocket_workers.unwrap_or(
       if debug { 20 } else { 1000 });
 
+    let template_dir = template_dir
+      .unwrap_or_else(|| DEFAULT_TEMPLATE_DIR.to_owned());
+
     ServerConfig {
       save_directory, command_socket, debug,
-      http_port, rocket_workers,
+      http_port, rocket_workers, template_dir
     }
   }
 }