reactive_graph_tooling/tooling/instances/config/
graphql.rs1use crate::shared::config::graphql::GraphQLServerConfigArgs;
2use crate::tooling::instances::config::serde::read_config_file;
3use crate::tooling::instances::config::serde::write_config_file;
4use reactive_graph_config_model::GraphQLServerConfig;
5use std::path::PathBuf;
6
7pub const GRAPHQL_CONFIG_FILENAME: &str = "graphql.toml";
8
9pub fn handle_graphql_config(config_dir: &PathBuf, args: GraphQLServerConfigArgs) -> anyhow::Result<()> {
10 let path = get_graphql_config_path(config_dir);
11 let mut config: GraphQLServerConfig = read_config_file(&path)?;
12 let mut changed = false;
13 if let Some(hostname) = args.hostname {
14 config.hostname = Some(hostname);
15 changed = true;
16 }
17 if let Some(port) = args.port {
18 config.port = Some(port);
19 changed = true;
20 }
21 if let Some(secure) = args.secure {
22 config.secure = Some(secure);
23 changed = true;
24 }
25 if let Some(default_context_path) = args.default_context_path {
26 config.default_context_path = Some(default_context_path);
27 changed = true;
28 }
29 if let Some(shutdown_timeout) = args.shutdown_timeout {
30 config.shutdown_timeout = Some(shutdown_timeout);
31 changed = true;
32 }
33 if let Some(ssl_certificate_path) = args.ssl_certificate_path {
34 config.ssl_certificate_path = Some(ssl_certificate_path);
35 changed = true;
36 }
37 if let Some(ssl_private_key_path) = args.ssl_private_key_path {
38 config.ssl_private_key_path = Some(ssl_private_key_path);
39 changed = true;
40 }
41 if let Some(workers) = args.workers {
42 config.workers = Some(workers);
43 changed = true;
44 }
45 if changed {
46 write_config_file(&path, config)?;
47 }
48
49 Ok(())
50}
51
52pub fn get_graphql_config_path(config_dir: &PathBuf) -> PathBuf {
53 let mut path = config_dir.to_owned();
54 path.push(GRAPHQL_CONFIG_FILENAME);
55 path
56}