11using System ;
22using System . IO ;
3+ using System . Linq ;
34using Microsoft . AspNetCore . Hosting ;
45using Microsoft . Extensions . Configuration ;
56using 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" ) ;
0 commit comments