Skip to content

Commit 4356ab5

Browse files
committed
Allow FileWatcher watch directories to be configured (#608)
1 parent cec05cd commit 4356ab5

File tree

12 files changed

+129
-26
lines changed

12 files changed

+129
-26
lines changed

WebJobs.Script.sln

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebHook-Azure-FSharp", "Web
349349
sample\WebHook-Azure-FSharp\run.fsx = sample\WebHook-Azure-FSharp\run.fsx
350350
EndProjectSection
351351
EndProject
352+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{C9FCBCFD-0AD1-44B0-A15B-EE2F5219A345}"
353+
ProjectSection(SolutionItems) = preProject
354+
sample\Shared\Message.csx = sample\Shared\Message.csx
355+
sample\Shared\Order.csx = sample\Shared\Order.csx
356+
EndProjectSection
357+
EndProject
352358
Global
353359
GlobalSection(SolutionConfigurationPlatforms) = preSolution
354360
Debug|Any CPU = Debug|Any CPU
@@ -443,5 +449,6 @@ Global
443449
{5C25CC30-5E4B-4E17-A0CB-AB0E72B70D8E} = {FF9C0818-30D3-437A-A62D-7A61CA44F459}
444450
{49A40362-2EB9-424C-B605-6BEE16A1C8B6} = {FF9C0818-30D3-437A-A62D-7A61CA44F459}
445451
{94B16BEB-70BD-4357-A21A-D1E70C8CDDF1} = {FF9C0818-30D3-437A-A62D-7A61CA44F459}
452+
{C9FCBCFD-0AD1-44B0-A15B-EE2F5219A345} = {FF9C0818-30D3-437A-A62D-7A61CA44F459}
446453
EndGlobalSection
447454
EndGlobal

sample/QueueTrigger-CSharp/run.csx

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
#load "..\Shared\Message.csx"
2+
13
using System;
24
using System.Linq;
35
using System.Threading.Tasks;
@@ -8,10 +10,4 @@ public static void Run(Message message, out string result, TraceWriter log)
810
log.Info($"C# Queue trigger function processed message: {message.Id}");
911

1012
result = message.Value;
11-
}
12-
13-
public class Message
14-
{
15-
public string Id { get; set; }
16-
public string Value { get; set; }
1713
}

sample/SendGrid-CSharp/run.csx

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#r "SendGridMail"
2+
#load "..\Shared\Message.csx"
23

34
using System;
45
using SendGrid;
@@ -14,11 +15,4 @@ public static void Run(Order order, out SendGridMessage message, TraceWriter log
1415
Text = string.Format("{0}, your order ({1}) is being processed!", order.CustomerName, order.OrderId)
1516
};
1617
message.AddTo(order.CustomerEmail);
17-
}
18-
19-
public class Order
20-
{
21-
public string OrderId { get; set; }
22-
public string CustomerName { get; set; }
23-
public string CustomerEmail { get; set; }
2418
}

sample/Shared/Message.csx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
public class Message
2+
{
3+
public string Id { get; set; }
4+
public string Value { get; set; }
5+
}

sample/Shared/Order.csx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
public class Order
2+
{
3+
public string OrderId { get; set; }
4+
public string CustomerName { get; set; }
5+
public string CustomerEmail { get; set; }
6+
}

sample/host.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"id": "5a709861cab44e68bfed5d2c2fe7fc0c",
3+
"watchDirectories": [ "Shared" ],
34
"sendGrid": {
45
"from": "Azure Functions <[email protected]>"
56
}

src/WebJobs.Script/Config/ScriptHostConfiguration.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Licensed under the MIT License. See License.txt in the project root for license information.
33

44
using System;
5+
using System.Collections.Generic;
56
using System.Collections.ObjectModel;
67
using System.IO;
78
using Microsoft.Azure.WebJobs.Host;
@@ -48,6 +49,14 @@ public ScriptHostConfiguration()
4849
/// </summary>
4950
public bool FileWatchingEnabled { get; set; }
5051

52+
/// <summary>
53+
/// Gets the or sets the collection of directories (relative to RootScriptPath) that
54+
/// should be monitored for changes. If FileWatchingEnabled is true, these directories
55+
/// will be monitored. When a file is added/modified/deleted in any of these
56+
/// directories, the host will restart.
57+
/// </summary>
58+
public ICollection<string> WatchDirectories { get; set; }
59+
5160
/// <summary>
5261
/// Gets or sets a value governing when logs should be written to disk.
5362
/// When enabled, logs will be written to the directory specified by
@@ -61,12 +70,12 @@ public ScriptHostConfiguration()
6170
/// function directories. When left null (the default) all discovered functions will
6271
/// be run.
6372
/// </summary>
64-
public Collection<string> Functions { get; set; }
73+
public ICollection<string> Functions { get; set; }
6574

6675
/// <summary>
6776
/// Gets the set of <see cref="ScriptBindingProviders"/> to use when loading functions.
6877
/// </summary>
6978
[CLSCompliant(false)]
70-
public Collection<ScriptBindingProvider> BindingProviders { get; internal set; }
79+
public ICollection<ScriptBindingProvider> BindingProviders { get; internal set; }
7180
}
7281
}

src/WebJobs.Script/Description/DotNet/ExtensionSharedAssemblyProvider.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@ namespace Microsoft.Azure.WebJobs.Script.Description
1717
[CLSCompliant(false)]
1818
public class ExtensionSharedAssemblyProvider : ISharedAssemblyProvider
1919
{
20-
private readonly Collection<ScriptBindingProvider> _bindingProviders;
20+
private readonly ICollection<ScriptBindingProvider> _bindingProviders;
2121

2222
/// <summary>
2323
/// Constructs a new instance.
2424
/// </summary>
2525
/// <param name="bindingProviders">The collection of <see cref="ScriptBindingProvider"/>s.</param>
26-
public ExtensionSharedAssemblyProvider(Collection<ScriptBindingProvider> bindingProviders)
26+
public ExtensionSharedAssemblyProvider(ICollection<ScriptBindingProvider> bindingProviders)
2727
{
2828
_bindingProviders = bindingProviders;
2929
}

src/WebJobs.Script/Description/DotNet/FunctionMetadataResolver.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public sealed class FunctionMetadataResolver : MetadataReferenceResolver, IFunct
7070
"Microsoft.Azure.WebJobs.Host"
7171
};
7272

73-
public FunctionMetadataResolver(FunctionMetadata metadata, Collection<ScriptBindingProvider> bindingProviders, TraceWriter traceWriter)
73+
public FunctionMetadataResolver(FunctionMetadata metadata, ICollection<ScriptBindingProvider> bindingProviders, TraceWriter traceWriter)
7474
{
7575
_functionMetadata = metadata;
7676
_traceWriter = traceWriter;

src/WebJobs.Script/GlobalSuppressions.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,4 +91,6 @@
9191
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Scope = "member", Target = "Microsoft.Azure.WebJobs.Script.Binding.Http.HttpTriggerAttributeBindingProvider+HttpTriggerBinding.#ToParameterDescriptor()")]
9292
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Scope = "member", Target = "Microsoft.Azure.WebJobs.Script.Binding.Http.HttpTriggerAttributeBindingProvider+HttpTriggerBinding.#FromInvokeString(System.String)")]
9393
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity", Scope = "member", Target = "Microsoft.Azure.WebJobs.Script.Description.DotNetFunctionDescriptorProvider.#GetFunctionParameters(Microsoft.Azure.WebJobs.Script.Description.IFunctionInvoker,Microsoft.Azure.WebJobs.Script.Description.FunctionMetadata,Microsoft.Azure.WebJobs.Script.Description.BindingMetadata,System.Collections.ObjectModel.Collection`1<System.Reflection.Emit.CustomAttributeBuilder>,System.Collections.ObjectModel.Collection`1<Microsoft.Azure.WebJobs.Script.Binding.FunctionBinding>,System.Collections.ObjectModel.Collection`1<Microsoft.Azure.WebJobs.Script.Binding.FunctionBinding>)")]
94-
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Scope = "member", Target = "Microsoft.Azure.WebJobs.Script.FunctionTraceWriterFactory.#Create()")]
94+
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Scope = "member", Target = "Microsoft.Azure.WebJobs.Script.FunctionTraceWriterFactory.#Create()")]
95+
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly", Scope = "member", Target = "Microsoft.Azure.WebJobs.Script.ScriptHostConfiguration.#WatchDirectories")]
96+

0 commit comments

Comments
 (0)