@@ -49,17 +49,24 @@ public class ScriptHost : JobHost
4949 private static readonly TimeSpan MinTimeout = TimeSpan . FromSeconds ( 1 ) ;
5050 private static readonly TimeSpan MaxTimeout = TimeSpan . FromMinutes ( 5 ) ;
5151 private static readonly Regex FunctionNameValidationRegex = new Regex ( @"^[a-z][a-z0-9_\-]{0,127}$(?<!^host$)" , RegexOptions . Compiled | RegexOptions . IgnoreCase ) ;
52- private static ScriptSettingsManager _settingsManager ;
52+ private ScriptSettingsManager _settingsManager ;
5353
54- protected ScriptHost ( ScriptHostConfiguration scriptConfig )
54+ protected ScriptHost ( ScriptHostConfiguration scriptConfig = null , ScriptSettingsManager settingsManager = null )
5555 : base ( scriptConfig . HostConfig )
5656 {
57+ scriptConfig = scriptConfig ?? new ScriptHostConfiguration ( ) ;
58+ if ( ! Path . IsPathRooted ( scriptConfig . RootScriptPath ) )
59+ {
60+ scriptConfig . RootScriptPath = Path . Combine ( Environment . CurrentDirectory , scriptConfig . RootScriptPath ) ;
61+ }
5762 ScriptConfig = scriptConfig ;
5863 FunctionErrors = new Dictionary < string , Collection < string > > ( StringComparer . OrdinalIgnoreCase ) ;
5964#if FEATURE_NODE
6065 NodeFunctionInvoker . UnhandledException += OnUnhandledException ;
6166#endif
6267 TraceWriter = ScriptConfig . TraceWriter ;
68+
69+ _settingsManager = settingsManager ?? ScriptSettingsManager . Instance ;
6370 }
6471
6572 public static readonly string Version = GetAssemblyFileVersion ( typeof ( ScriptHost ) . Assembly ) ;
@@ -474,23 +481,9 @@ private void PurgeOldLogDirectories()
474481
475482 public static ScriptHost Create ( ScriptHostConfiguration scriptConfig = null , ScriptSettingsManager settingsManager = null )
476483 {
477- if ( scriptConfig == null )
478- {
479- scriptConfig = new ScriptHostConfiguration ( ) ;
480- }
481-
482- _settingsManager = settingsManager ;
483- if ( settingsManager == null )
484- {
485- _settingsManager = ScriptSettingsManager . Instance ;
486- }
487-
488- if ( ! Path . IsPathRooted ( scriptConfig . RootScriptPath ) )
489- {
490- scriptConfig . RootScriptPath = Path . Combine ( Environment . CurrentDirectory , scriptConfig . RootScriptPath ) ;
491- }
484+ scriptConfig = scriptConfig ?? new ScriptHostConfiguration ( ) ;
492485
493- ScriptHost scriptHost = new ScriptHost ( scriptConfig ) ;
486+ ScriptHost scriptHost = new ScriptHost ( scriptConfig , settingsManager ) ;
494487 try
495488 {
496489 scriptHost . Initialize ( ) ;
@@ -549,7 +542,7 @@ private static Collection<ScriptBindingProvider> LoadBindingProviders(ScriptHost
549542 return bindingProviders ;
550543 }
551544
552- private static FunctionMetadata ParseFunctionMetadata ( string functionName , JObject configMetadata )
545+ private static FunctionMetadata ParseFunctionMetadata ( string functionName , JObject configMetadata , ScriptSettingsManager settingsManager )
553546 {
554547 FunctionMetadata functionMetadata = new FunctionMetadata
555548 {
@@ -577,8 +570,8 @@ private static FunctionMetadata ParseFunctionMetadata(string functionName, JObje
577570 }
578571
579572 // A function can be disabled at the trigger or function level
580- if ( IsDisabled ( triggerDisabledValue ) ||
581- IsDisabled ( ( JValue ) configMetadata [ "disabled" ] ) )
573+ if ( IsDisabled ( triggerDisabledValue , settingsManager ) ||
574+ IsDisabled ( ( JValue ) configMetadata [ "disabled" ] , settingsManager ) )
582575 {
583576 functionMetadata . IsDisabled = true ;
584577 }
@@ -593,9 +586,10 @@ private static FunctionMetadata ParseFunctionMetadata(string functionName, JObje
593586 return functionMetadata ;
594587 }
595588
596- public static Collection < FunctionMetadata > ReadFunctionMetadata ( ScriptHostConfiguration config , TraceWriter traceWriter , Dictionary < string , Collection < string > > functionErrors )
589+ public static Collection < FunctionMetadata > ReadFunctionMetadata ( ScriptHostConfiguration config , TraceWriter traceWriter , Dictionary < string , Collection < string > > functionErrors , ScriptSettingsManager settingsManager = null )
597590 {
598591 var functions = new Collection < FunctionMetadata > ( ) ;
592+ settingsManager = settingsManager ?? ScriptSettingsManager . Instance ;
599593
600594 foreach ( var scriptDir in Directory . EnumerateDirectories ( config . RootScriptPath ) )
601595 {
@@ -629,7 +623,7 @@ public static Collection<FunctionMetadata> ReadFunctionMetadata(ScriptHostConfig
629623 string functionError = null ;
630624 FunctionMetadata functionMetadata = null ;
631625 var mappedHttpFunctions = new Dictionary < string , HttpTriggerBindingMetadata > ( ) ;
632- if ( ! TryParseFunctionMetadata ( functionName , functionConfig , mappedHttpFunctions , traceWriter , scriptDir , out functionMetadata , out functionError ) )
626+ if ( ! TryParseFunctionMetadata ( functionName , functionConfig , mappedHttpFunctions , traceWriter , scriptDir , settingsManager , out functionMetadata , out functionError ) )
633627 {
634628 // for functions in error, log the error and don't
635629 // add to the functions collection
@@ -652,12 +646,12 @@ public static Collection<FunctionMetadata> ReadFunctionMetadata(ScriptHostConfig
652646 }
653647
654648 internal static bool TryParseFunctionMetadata ( string functionName , JObject functionConfig , Dictionary < string , HttpTriggerBindingMetadata > mappedHttpFunctions ,
655- TraceWriter traceWriter , string scriptDirectory , out FunctionMetadata functionMetadata , out string error , IFileSystem fileSystem = null )
649+ TraceWriter traceWriter , string scriptDirectory , ScriptSettingsManager settingsManager , out FunctionMetadata functionMetadata , out string error , IFileSystem fileSystem = null )
656650 {
657651 fileSystem = fileSystem ?? new FileSystem ( ) ;
658652
659653 error = null ;
660- functionMetadata = ParseFunctionMetadata ( functionName , functionConfig ) ;
654+ functionMetadata = ParseFunctionMetadata ( functionName , functionConfig , settingsManager ) ;
661655
662656 if ( functionMetadata . IsExcluded )
663657 {
@@ -839,7 +833,7 @@ private static ScriptType ParseScriptType(string scriptFilePath)
839833
840834 private Collection < FunctionDescriptor > GetFunctionDescriptors ( )
841835 {
842- var functions = ReadFunctionMetadata ( ScriptConfig , TraceWriter , FunctionErrors ) ;
836+ var functions = ReadFunctionMetadata ( ScriptConfig , TraceWriter , FunctionErrors , _settingsManager ) ;
843837
844838 var descriptorProviders = new List < FunctionDescriptorProvider > ( )
845839 {
@@ -1155,7 +1149,7 @@ internal static string GetRelativeDirectory(string path, string scriptRoot)
11551149 return string . Empty ;
11561150 }
11571151
1158- private static bool IsDisabled ( JToken isDisabledValue )
1152+ private static bool IsDisabled ( JToken isDisabledValue , ScriptSettingsManager settingsManager )
11591153 {
11601154 if ( isDisabledValue != null )
11611155 {
@@ -1166,7 +1160,7 @@ private static bool IsDisabled(JToken isDisabledValue)
11661160 else
11671161 {
11681162 string settingName = ( string ) isDisabledValue ;
1169- string value = _settingsManager . GetSetting ( settingName ) ;
1163+ string value = settingsManager . GetSetting ( settingName ) ;
11701164 if ( ! string . IsNullOrEmpty ( value ) &&
11711165 ( string . Compare ( value , "1" , StringComparison . OrdinalIgnoreCase ) == 0 ||
11721166 string . Compare ( value , "true" , StringComparison . OrdinalIgnoreCase ) == 0 ) )
0 commit comments