Skip to content

Commit 2504ba9

Browse files
committed
Add information about expected configuration keys
1 parent 2c5dbb9 commit 2504ba9

2 files changed

Lines changed: 58 additions & 7 deletions

File tree

src/OpenRCT2.API/Program.cs

Lines changed: 43 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.IO;
3+
using System.Linq;
34
using Microsoft.AspNetCore.Hosting;
45
using Microsoft.Extensions.Configuration;
56
using Microsoft.Extensions.Hosting;
@@ -60,13 +61,35 @@ private static IHost BuildHost(string[] args)
6061
{
6162
// Build / load configuration
6263
var config = BuildConfiguration();
63-
var apiConfig = config
64-
.GetSection("api")
65-
.Get<ApiConfig>();
64+
var apiSection = config.GetSection("api");
65+
var apiConfig = apiSection.Get<ApiConfig>();
66+
var configFilePath = GetConfigFilePath();
6667

67-
if (apiConfig == null)
68+
if (!apiSection.Exists())
6869
{
69-
Log.Logger.Warning("No configuration found for api");
70+
Log.Logger.Warning(
71+
"No 'api' configuration section was found. Expected file: {ConfigFilePath}. Expected keys: api.bind, api.baseUrl, api.passwordServerSalt, api.authTokenSecret.",
72+
configFilePath);
73+
}
74+
else
75+
{
76+
var missingApiKeys = new[]
77+
{
78+
(Key: "api.bind", Value: apiConfig?.Bind),
79+
(Key: "api.passwordServerSalt", Value: apiConfig?.PasswordServerSalt),
80+
(Key: "api.authTokenSecret", Value: apiConfig?.AuthTokenSecret)
81+
}
82+
.Where(x => string.IsNullOrWhiteSpace(x.Value))
83+
.Select(x => x.Key)
84+
.ToArray();
85+
86+
if (missingApiKeys.Length > 0)
87+
{
88+
Log.Logger.Warning(
89+
"Missing API configuration values: {MissingKeys}. Expected file: {ConfigFilePath}.",
90+
string.Join(", ", missingApiKeys),
91+
configFilePath);
92+
}
7093
}
7194

7295
var hostBuilder = Host.CreateDefaultBuilder(args)
@@ -92,16 +115,31 @@ private static IConfiguration BuildConfiguration()
92115
{
93116
var config = new ConfigurationBuilder();
94117
string configDirectory = GetConfigDirectory();
118+
var configFilePath = GetConfigFilePath();
95119
if (Directory.Exists(configDirectory))
96120
{
97121
config
98122
.SetBasePath(configDirectory)
99123
.AddYamlFile(ConfigFileName, optional: true, reloadOnChange: true);
124+
125+
if (!File.Exists(configFilePath))
126+
{
127+
Log.Logger.Warning("Configuration directory exists, but config file was not found: {ConfigFilePath}", configFilePath);
128+
}
129+
}
130+
else
131+
{
132+
Log.Logger.Warning("Configuration directory does not exist: {ConfigDirectory}", configDirectory);
100133
}
101134
config.AddEnvironmentVariables();
102135
return config.Build();
103136
}
104137

138+
private static string GetConfigFilePath()
139+
{
140+
return Path.Combine(GetConfigDirectory(), ConfigFileName);
141+
}
142+
105143
private static string GetConfigDirectory()
106144
{
107145
string homeDirectory = Environment.GetEnvironmentVariable("HOME");

src/OpenRCT2.API/Startup.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,22 @@ public void Configure(
9595
}
9696

9797
// Setup / connect to the database
98-
if (dbOptions.Value.Host == null)
98+
var missingDatabaseKeys = new[]
9999
{
100-
logger.LogWarning("No database has been configured");
100+
(Key: "database.host", Env: "database__host", Value: dbOptions.Value.Host),
101+
(Key: "database.user", Env: "database__user", Value: dbOptions.Value.User),
102+
(Key: "database.password", Env: "database__password", Value: dbOptions.Value.Password),
103+
(Key: "database.name", Env: "database__name", Value: dbOptions.Value.Name)
104+
}
105+
.Where(x => string.IsNullOrWhiteSpace(x.Value))
106+
.ToArray();
107+
108+
if (missingDatabaseKeys.Length > 0)
109+
{
110+
logger.LogWarning(
111+
"Database configuration is incomplete. Missing keys: {MissingKeys}. You can set them in the 'database' section of ~/.openrct2/api.config.yml or via env vars: {EnvKeys}.",
112+
string.Join(", ", missingDatabaseKeys.Select(x => x.Key)),
113+
string.Join(", ", missingDatabaseKeys.Select(x => x.Env)));
101114
}
102115
else
103116
{

0 commit comments

Comments
 (0)