@@ -229,77 +229,57 @@ protected override void BeginProcessing()
229
229
Helper . Instance . SetPSVersionTable ( psVersionTable ) ;
230
230
}
231
231
232
- string [ ] rulePaths = Helper . ProcessCustomRulePaths ( customRulePath ,
233
- this . SessionState , recurseCustomRulePath ) ;
232
+ string [ ] rulePaths = Helper . ProcessCustomRulePaths (
233
+ customRulePath ,
234
+ this . SessionState ,
235
+ recurseCustomRulePath ) ;
236
+
234
237
if ( IsFileParameterSet ( ) )
235
238
{
236
239
ProcessPath ( ) ;
237
240
}
238
241
239
- var settingFileHasErrors = false ;
240
- if ( settings == null
241
- && processedPaths != null
242
- && processedPaths . Count == 1 )
242
+ object settingsFound ;
243
+ var settingsMode = FindSettingsMode ( out settingsFound ) ;
244
+ switch ( settingsMode )
243
245
{
244
- // add a directory separator character because if there is no trailing separator character, it will return the parent
245
- var directory = processedPaths [ 0 ] . TrimEnd ( System . IO . Path . DirectorySeparatorChar ) ;
246
- if ( File . Exists ( directory ) )
247
- {
248
- // if given path is a file, get its directory
249
- directory = System . IO . Path . GetDirectoryName ( directory ) ;
250
- }
251
-
252
- this . WriteVerbose (
253
- String . Format (
254
- "Settings not provided. Will look for settings file in the given path {0}." ,
255
- path ) ) ;
256
- var settingsFileAutoDiscovered = false ;
257
- if ( Directory . Exists ( directory ) )
258
- {
259
- // if settings are not provided explicitly, look for it in the given path
260
- // check if pssasettings.psd1 exists
261
- var settingsFilename = "PSScriptAnalyzerSettings.psd1" ;
262
- var settingsFilepath = System . IO . Path . Combine ( directory , settingsFilename ) ;
263
- if ( File . Exists ( settingsFilepath ) )
264
- {
265
- settingsFileAutoDiscovered = true ;
266
- this . WriteVerbose (
267
- String . Format (
268
- "Found {0} in {1}. Will use it to provide settings for this invocation." ,
269
- settingsFilename ,
270
- directory ) ) ;
271
- settingFileHasErrors = ! ScriptAnalyzer . Instance . ParseProfile ( settingsFilepath , this . SessionState . Path , this ) ;
272
- }
273
- }
274
-
275
- if ( ! settingsFileAutoDiscovered )
276
- {
246
+ case SettingsMode . Auto :
277
247
this . WriteVerbose (
278
248
String . Format (
279
- "Cannot find a settings file in the given path {0}." ,
249
+ "Settings not provided. Will look for settings file in the given path {0}." ,
280
250
path ) ) ;
281
- }
282
- }
283
- else if ( IsBuiltinSettingPreset ( settings ) )
284
- {
285
- var settingsFilePath = Helper . GetSettingPresetFilePath ( settings as string ) ;
286
- this . WriteVerbose ( String . Format ( "Using settings file at {0}" , settingsFilePath ) ) ;
287
- settingFileHasErrors = ! ScriptAnalyzer . Instance . ParseProfile (
288
- settingsFilePath ,
289
- this . SessionState . Path ,
290
- this ) ;
291
- }
292
- else
293
- {
294
- this . WriteVerbose ( String . Format ( "Using settings file at {0}" , this . settings ) ) ;
295
- settingFileHasErrors = ! ScriptAnalyzer . Instance . ParseProfile ( this . settings , this . SessionState . Path , this ) ;
251
+ this . WriteVerbose (
252
+ String . Format (
253
+ "Found {0}. Will use it to provide settings for this invocation." ,
254
+ ( string ) settingsFound ) ) ;
255
+ break ;
256
+
257
+ case SettingsMode . Preset :
258
+ settingsFound = Helper . GetSettingPresetFilePath ( this . settings as string ) ;
259
+ goto case SettingsMode . File ;
260
+
261
+ case SettingsMode . File :
262
+ this . WriteVerbose ( String . Format ( "Using settings file at {0}" , ( string ) settingsFound ) ) ;
263
+ break ;
264
+
265
+ case SettingsMode . Hashtable :
266
+ this . WriteVerbose ( String . Format ( "Using settings hashtable." ) ) ;
267
+ break ;
268
+
269
+ default : // case SettingsMode.None
270
+ this . WriteVerbose ( String . Format ( "Cannot find a settings file." ) ) ;
271
+ break ;
296
272
}
297
273
298
- if ( settingFileHasErrors )
274
+ if ( settingsMode != SettingsMode . None )
299
275
{
300
- this . WriteWarning ( "Cannot parse settings. Will abort the invocation." ) ;
301
- stopProcessing = true ;
302
- return ;
276
+ var settingFileHasErrors = ! ScriptAnalyzer . Instance . ParseProfile ( settingsFound , this . SessionState . Path , this ) ;
277
+ if ( settingFileHasErrors )
278
+ {
279
+ this . WriteWarning ( "Cannot parse settings. Will abort the invocation." ) ;
280
+ stopProcessing = true ;
281
+ return ;
282
+ }
303
283
}
304
284
305
285
ScriptAnalyzer . Instance . Initialize (
0 commit comments