diff --git a/Build/PackageFiles/ItemTemplates-Isolated.nuspec b/Build/PackageFiles/ItemTemplates-Isolated.nuspec index fa70a7da6..194d835f2 100644 --- a/Build/PackageFiles/ItemTemplates-Isolated.nuspec +++ b/Build/PackageFiles/ItemTemplates-Isolated.nuspec @@ -20,22 +20,42 @@ + + + + + + + + + + + + + + + + + + + + @@ -48,10 +68,18 @@ + + + + + + + + diff --git a/Build/PackageFiles/ProjectTemplates-Isolated.nuspec b/Build/PackageFiles/ProjectTemplates-Isolated.nuspec index 71f7f2566..e7d04c475 100644 --- a/Build/PackageFiles/ProjectTemplates-Isolated.nuspec +++ b/Build/PackageFiles/ProjectTemplates-Isolated.nuspec @@ -22,5 +22,11 @@ + + + + + + \ No newline at end of file diff --git a/Functions.Templates/ProjectTemplate/FSharp-Isolated/.template.config/template.json b/Functions.Templates/ProjectTemplate/FSharp-Isolated/.template.config/template.json new file mode 100644 index 000000000..13943318d --- /dev/null +++ b/Functions.Templates/ProjectTemplate/FSharp-Isolated/.template.config/template.json @@ -0,0 +1,50 @@ +{ + "author": "Microsoft", + "classifications": [ + "Azure Functions", + "Solution" + ], + "name": "Azure Functions", + "generatorVersions": "[1.0.0.0-*)", + "groupIdentity": "Microsoft.AzureFunctions.ProjectTemplates", + "precedence": "100", + "identity": "Microsoft.AzureFunctions.ProjectTemplate.FSharp.Isolated.3.x", + "shortName": "func", + "tags": { + "language": "F#", + "type": "project" + }, + "sourceName": "Company.FunctionApp", + "symbols": { + "StorageConnectionStringValue": { + "description": "The connection string for your Azure WebJobs Storage.", + "type": "parameter", + "defaultValue": "UseDevelopmentStorage=true", + "replaces": "AzureWebJobsStorageConnectionStringValue", + "DataType": "AzureStorage" + }, + "AzureFunctionsVersion": { + "description": "The setting that determines the target release", + "type": "parameter", + "defaultValue": "V3", + "replaces": "AzureFunctionsVersionValue" + } + }, + "sources": [ + { + "modifiers": [ + { + "rename": { + "_gitignore": ".gitignore" + } + } + ] + } + ], + "primaryOutputs": [ + { + "path": "Company.FunctionApp.fsproj" + } + ], + "defaultName": "Company.FunctionApp" +} \ No newline at end of file diff --git a/Functions.Templates/ProjectTemplate/FSharp-Isolated/Company.FunctionApp.fsproj b/Functions.Templates/ProjectTemplate/FSharp-Isolated/Company.FunctionApp.fsproj new file mode 100644 index 000000000..b446521af --- /dev/null +++ b/Functions.Templates/ProjectTemplate/FSharp-Isolated/Company.FunctionApp.fsproj @@ -0,0 +1,23 @@ + + + net5.0 + AzureFunctionsVersionValue + Exe + Company.FunctionApp + + + + + + + + PreserveNewest + + + PreserveNewest + + + + + + diff --git a/Functions.Templates/ProjectTemplate/FSharp-Isolated/Program.fs b/Functions.Templates/ProjectTemplate/FSharp-Isolated/Program.fs new file mode 100644 index 000000000..430996400 --- /dev/null +++ b/Functions.Templates/ProjectTemplate/FSharp-Isolated/Program.fs @@ -0,0 +1,11 @@ +open Microsoft.Extensions.Hosting + +[] +let main args = + let host = + HostBuilder() + .ConfigureFunctionsWorkerDefaults() + .Build() + + host.Run() + 0 diff --git a/Functions.Templates/ProjectTemplate/FSharp-Isolated/_gitignore b/Functions.Templates/ProjectTemplate/FSharp-Isolated/_gitignore new file mode 100644 index 000000000..ff5b00c50 --- /dev/null +++ b/Functions.Templates/ProjectTemplate/FSharp-Isolated/_gitignore @@ -0,0 +1,264 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# Azure Functions localsettings file +local.settings.json + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +project.fragment.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +#*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config +# NuGet v3's project.json files produces more ignoreable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc \ No newline at end of file diff --git a/Functions.Templates/ProjectTemplate/FSharp-Isolated/host.json b/Functions.Templates/ProjectTemplate/FSharp-Isolated/host.json new file mode 100644 index 000000000..beb2e4020 --- /dev/null +++ b/Functions.Templates/ProjectTemplate/FSharp-Isolated/host.json @@ -0,0 +1,11 @@ +{ + "version": "2.0", + "logging": { + "applicationInsights": { + "samplingSettings": { + "isEnabled": true, + "excludedTypes": "Request" + } + } + } +} \ No newline at end of file diff --git a/Functions.Templates/ProjectTemplate/FSharp-Isolated/local.settings.json b/Functions.Templates/ProjectTemplate/FSharp-Isolated/local.settings.json new file mode 100644 index 000000000..ee9f3c090 --- /dev/null +++ b/Functions.Templates/ProjectTemplate/FSharp-Isolated/local.settings.json @@ -0,0 +1,7 @@ +{ + "IsEncrypted": false, + "Values": { + "AzureWebJobsStorage": "AzureWebJobsStorageConnectionStringValue", + "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated" + } +} \ No newline at end of file diff --git a/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/template.json b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/template.json new file mode 100644 index 000000000..462acbc28 --- /dev/null +++ b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/template.json @@ -0,0 +1,70 @@ +{ + "author": "Microsoft", + "classifications": [ + "Azure Function" + ], + "name": "BlobTrigger", + "identity": "Azure.Function.FSharp.Isolated.BlobTrigger.3.x", + "groupIdentity": "Azure.Function.BlobTrigger", + "shortName": "Blob", + "tags": { + "language": "F#", + "type": "item" + }, + "sourceName": "BlobTriggerFSharp", + "symbols": { + "namespace": { + "description": "namespace for the generated code", + "replaces": "Company.Function", + "type": "parameter" + }, + "Connection": { + "description": "The name of the app setting containing your Storage connection.", + "type": "parameter", + "defaultValue": "", + "replaces": "ConnectionValue" + }, + "Path": { + "description": "This is the path within your storage account that the trigger will monitor.", + "type": "parameter", + "defaultValue": "samples-workitems", + "replaces": "PathValue" + } + }, + "primaryOutputs": [ + { + "path": "BlobTriggerFSharp.fs" + } + ], + "defaultName": "BlobTriggerFSharp", + "postActions": [ + { + "Description": "Adding Reference to Microsoft.Azure.Functions.Worker.Extensions.Storage Nuget package", + "ActionId": "B17581D1-C5C9-4489-8F0A-004BE667B814", + "ContinueOnError": "true", + "ManualInstructions": [], + "args": { + "referenceType": "package", + "reference": "Microsoft.Azure.Functions.Worker.Extensions.Storage", + "version": "4.0.4", + "projectFileExtensions": ".fsproj" + } + }, + { + "description": "Restore NuGet packages required by this project.", + "manualInstructions": [], + "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025", + "continueOnError": true + }, + { + "condition": "(HostIdentifier != \"dotnetcli\" && HostIdentifier != \"dotnetcli-preview\")", + "description": "Opens the function class file in the editor", + "manualInstructions": [], + "actionId": "84C0DA21-51C8-4541-9940-6CA19AF04EE6", + "args": { + "files": "0" + }, + "continueOnError": true + } + ] +} \ No newline at end of file diff --git a/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json new file mode 100644 index 000000000..a105629d7 --- /dev/null +++ b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json @@ -0,0 +1,38 @@ +{ + "name": { + "text": "Blob trigger", + "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}", + "id": "2000" + }, + "description": { + "text": "An F# function that will be run whenever a blob is added to a specified container.", + "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}", + "id": "2001" + }, + "order": 400, + "icon": "vs-2017.3/blob.png", + "learnMoreLink": "https://go.microsoft.com/fwlink/?linkid=848145", + "uiFilters": [ + "functions" + ], + "symbolInfo": [ + { + "id": "Connection", + "name": { + "id": "2002", + "text": "Connection string setting name", + "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}" + }, + "isVisible": true + }, + { + "id": "Path", + "name": { + "id": "2003", + "text": "Path", + "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}" + }, + "isVisible": true + } + ] + } \ No newline at end of file diff --git a/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32.png b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32.png new file mode 100644 index 000000000..ec528eb6c Binary files /dev/null and b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32.png differ diff --git a/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32@2x.png b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32@2x.png new file mode 100644 index 000000000..14e79cccd Binary files /dev/null and b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32@2x.png differ diff --git a/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~dark.png b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~dark.png new file mode 100644 index 000000000..6332107f5 Binary files /dev/null and b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~dark.png differ diff --git a/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~dark@2x.png b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~dark@2x.png new file mode 100644 index 000000000..3c4cadd66 Binary files /dev/null and b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~dark@2x.png differ diff --git a/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~dark~sel.png b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~dark~sel.png new file mode 100644 index 000000000..4945f5ca0 Binary files /dev/null and b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~dark~sel.png differ diff --git a/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~dark~sel@2x.png b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~dark~sel@2x.png new file mode 100644 index 000000000..94596d688 Binary files /dev/null and b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~dark~sel@2x.png differ diff --git a/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~sel.png b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~sel.png new file mode 100644 index 000000000..4945f5ca0 Binary files /dev/null and b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~sel.png differ diff --git a/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~sel@2x.png b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~sel@2x.png new file mode 100644 index 000000000..94596d688 Binary files /dev/null and b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~sel@2x.png differ diff --git a/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob.png b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob.png new file mode 100644 index 000000000..ddf38c2f9 Binary files /dev/null and b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob.png differ diff --git a/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/BlobTriggerFSharp.fs b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/BlobTriggerFSharp.fs new file mode 100644 index 000000000..709c09122 --- /dev/null +++ b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/BlobTriggerFSharp.fs @@ -0,0 +1,20 @@ +namespace Company.Function + +open System.IO +open Microsoft.Azure.Functions.Worker +open Microsoft.Extensions.Logging + +module BlobTriggerFSharp = + + [] + let run + ( + [] myBlob: string, + name: string, + context: FunctionContext + ) = + let msg = + sprintf "F# Blob trigger function Processed blob\nName: %s \n Data: %s" name myBlob + + let logger = context.GetLogger "BlobTriggerFSharp" + logger.LogInformation msg diff --git a/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/template.json b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/template.json new file mode 100644 index 000000000..713e4153f --- /dev/null +++ b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/template.json @@ -0,0 +1,75 @@ +{ + "author": "Microsoft", + "classifications": [ + "Azure Function" + ], + "name": "CosmosDBTrigger", + "identity": "Azure.Function.FSharp.Isolated.CosmosDBTrigger.3.x", + "groupIdentity": "Azure.Function.CosmosDBTrigger", + "shortName": "CosmosDB", + "tags": { + "language": "F#", + "type": "item" + }, + "sourceName": "CosmosDBTriggerFSharp", + "symbols": { + "namespace": { + "description": "namespace for the generated code", + "replaces": "Company.Function", + "type": "parameter" + }, + "ConnectionStringSetting": { + "description": "The name of the App Setting containing the connection string to the service that contains the collection to be monitored.", + "type": "parameter", + "defaultValue": "", + "replaces": "ConnectionValue" + }, + "DatabaseName": { + "description": "This is the name of the database that includes the collection to be monitored.", + "type": "parameter", + "defaultValue": "databaseName", + "replaces": "DatabaseValue" + }, + "CollectionName": { + "description": "This is the name of the collection to be monitored.", + "type": "parameter", + "defaultValue": "collectionName", + "replaces": "CollectionValue" + } + }, + "primaryOutputs": [ + { + "path": "CosmosDBTriggerFSharp.fs" + } + ], + "defaultName": "CosmosDBTriggerFSharp", + "postActions": [ + { + "Description": "Adding Reference to Microsoft.Azure.Functions.Worker.Extensions.CosmosDB Nuget package", + "ActionId": "B17581D1-C5C9-4489-8F0A-004BE667B814", + "ContinueOnError": "true", + "ManualInstructions": [], + "args": { + "referenceType": "package", + "reference": "Microsoft.Azure.Functions.Worker.Extensions.CosmosDB", "version": "3.0.9", + "projectFileExtensions": ".fsproj" + } + }, + { + "description": "Restore NuGet packages required by this project.", + "manualInstructions": [], + "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025", + "continueOnError": true + }, + { + "condition": "(HostIdentifier != \"dotnetcli\" && HostIdentifier != \"dotnetcli-preview\")", + "description": "Opens the function class file in the editor", + "manualInstructions": [], + "actionId": "84C0DA21-51C8-4541-9940-6CA19AF04EE6", + "args": { + "files": "0" + }, + "continueOnError": true + } + ] +} \ No newline at end of file diff --git a/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json new file mode 100644 index 000000000..867696f57 --- /dev/null +++ b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json @@ -0,0 +1,47 @@ +{ + "name": { + "text": "Cosmos DB Trigger", + "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}", + "id": "2010" + }, + "description": { + "text": "A F# function that will be run whenever documents change in a document collection.", + "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}", + "id": "2035" + }, + "order": 700, + "icon": "vs-2017.3/cosmosdb.png", + "learnMoreLink": "https://go.microsoft.com/fwlink/?linkid=848145", + "uiFilters": [ + "functions" + ], + "symbolInfo": [ + { + "id": "ConnectionStringSetting", + "name": { + "id": "2011", + "text": "Connection string setting name", + "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}" + }, + "isVisible": true + }, + { + "id": "DatabaseName", + "name": { + "id": "2012", + "text": "Database name", + "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}" + }, + "isVisible": true + }, + { + "id": "CollectionName", + "name": { + "id": "2013", + "text": "Collection name", + "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}" + }, + "isVisible": true + } + ] +} \ No newline at end of file diff --git a/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32.png b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32.png new file mode 100644 index 000000000..63147863e Binary files /dev/null and b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32.png differ diff --git a/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32@2x.png b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32@2x.png new file mode 100644 index 000000000..bb103da52 Binary files /dev/null and b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32@2x.png differ diff --git a/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~dark.png b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~dark.png new file mode 100644 index 000000000..76b4ff67d Binary files /dev/null and b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~dark.png differ diff --git a/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~dark@2x.png b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~dark@2x.png new file mode 100644 index 000000000..0f5bfb062 Binary files /dev/null and b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~dark@2x.png differ diff --git a/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~dark~sel.png b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~dark~sel.png new file mode 100644 index 000000000..0e809becf Binary files /dev/null and b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~dark~sel.png differ diff --git a/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~dark~sel@2x.png b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~dark~sel@2x.png new file mode 100644 index 000000000..d462324d2 Binary files /dev/null and b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~dark~sel@2x.png differ diff --git a/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~sel.png b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~sel.png new file mode 100644 index 000000000..0e809becf Binary files /dev/null and b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~sel.png differ diff --git a/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~sel@2x.png b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~sel@2x.png new file mode 100644 index 000000000..d462324d2 Binary files /dev/null and b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~sel@2x.png differ diff --git a/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb.png b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb.png new file mode 100644 index 000000000..303aec186 Binary files /dev/null and b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb.png differ diff --git a/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/CosmosDBTriggerFSharp.fs b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/CosmosDBTriggerFSharp.fs new file mode 100644 index 000000000..3a1a8068e --- /dev/null +++ b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/CosmosDBTriggerFSharp.fs @@ -0,0 +1,29 @@ +namespace Company.Function + +open System +open System.Collections.Generic +open Microsoft.Azure.Functions.Worker +open Microsoft.Extensions.Logging + +module CosmosDBTriggerFSharp = + type MyDocument = + { Id: string + Text: string + Number: int + Boolean: bool } + + [] + let run + ( + [] input: IReadOnlyList, + context: FunctionContext + ) = + let logger = + context.GetLogger "CosmsoDBTriggerFSharp" + + if not (isNull input) && input.Count > 0 then + log.LogInformation(sprintf "Documents modified %d" input.Count) + log.LogInformation("First document Id " + input.[0].Id) diff --git a/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/template.json b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/template.json new file mode 100644 index 000000000..3daa3f8a6 --- /dev/null +++ b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/template.json @@ -0,0 +1,59 @@ +{ + "author": "Microsoft", + "classifications": [ + "Azure Function", + "Trigger", + "EventGrid" + ], + "name": "EventGridTrigger", + "identity": "Azure.Function.FSharp.Isolated.EventGridTrigger.3.x", + "groupIdentity": "Azure.Function.EventGridTrigger", + "shortName": "eventgrid", + "tags": { + "language": "F#", + "type": "item" + }, + "sourceName": "EventGridTriggerFSharp", + "symbols": { + "namespace": { + "description": "namespace for the generated code", + "replaces": "Company.Function", + "type": "parameter" + } + }, + "primaryOutputs": [ + { + "path": "EventGridTriggerFSharp.fs" + } + ], + "defaultName": "EventGridTriggerFSharp", + "postActions": [ + { + "Description": "Adding Reference to Microsoft.Azure.Functions.Worker.Extensions.EventGrid Nuget package", + "ActionId": "B17581D1-C5C9-4489-8F0A-004BE667B814", + "ContinueOnError": "true", + "ManualInstructions": [], + "args": { + "referenceType": "package", + "reference": "Microsoft.Azure.Functions.Worker.Extensions.EventGrid", "version": "2.1.0", + "projectFileExtensions": ".fsproj" + } + }, + { + "description": "Restore NuGet packages required by this project.", + "manualInstructions": [], + "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025", + "continueOnError": true + }, + { + "condition": "(HostIdentifier != \"dotnetcli\" && HostIdentifier != \"dotnetcli-preview\")", + "description": "Opens the function class file in the editor", + "manualInstructions": [], + "actionId": "84C0DA21-51C8-4541-9940-6CA19AF04EE6", + "args": { + "files": "0" + }, + "continueOnError": true + } + ] +} \ No newline at end of file diff --git a/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json new file mode 100644 index 000000000..10413cf13 --- /dev/null +++ b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json @@ -0,0 +1,18 @@ +{ + "name": { + "text": "Event Grid trigger", + "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}", + "id": "1020" + }, + "description": { + "text": "An F# function that will be run whenever an event grid receives a new event", + "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}", + "id": "1021" + }, + "order": 450, + "icon": "vs-2017.3/eventGrid.png", + "learnMoreLink": "https://go.microsoft.com/fwlink/?linkid=848145", + "uiFilters": [ + "functions" + ] +} \ No newline at end of file diff --git a/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32.png b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32.png new file mode 100644 index 000000000..962c83096 Binary files /dev/null and b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32.png differ diff --git a/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32@2x.png b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32@2x.png new file mode 100644 index 000000000..efc053211 Binary files /dev/null and b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32@2x.png differ diff --git a/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~dark.png b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~dark.png new file mode 100644 index 000000000..dfe1af858 Binary files /dev/null and b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~dark.png differ diff --git a/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~dark@2x.png b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~dark@2x.png new file mode 100644 index 000000000..c267fd04a Binary files /dev/null and b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~dark@2x.png differ diff --git a/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~dark~sel.png b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~dark~sel.png new file mode 100644 index 000000000..3de3643ae Binary files /dev/null and b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~dark~sel.png differ diff --git a/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~dark~sel@2x.png b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~dark~sel@2x.png new file mode 100644 index 000000000..57dd6d2c5 Binary files /dev/null and b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~dark~sel@2x.png differ diff --git a/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~sel.png b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~sel.png new file mode 100644 index 000000000..3de3643ae Binary files /dev/null and b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~sel.png differ diff --git a/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~sel@2x.png b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~sel@2x.png new file mode 100644 index 000000000..57dd6d2c5 Binary files /dev/null and b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~sel@2x.png differ diff --git a/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid.png b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid.png new file mode 100644 index 000000000..31d8aa8fc Binary files /dev/null and b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid.png differ diff --git a/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/EventGridTriggerFSharp.fs b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/EventGridTriggerFSharp.fs new file mode 100644 index 000000000..b673a2abd --- /dev/null +++ b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/EventGridTriggerFSharp.fs @@ -0,0 +1,23 @@ +namespace Company.Function +// Default URL for triggering event grid function in the local environment. +// http://localhost:7071/runtime/webhooks/EventGrid?functionName={functionname} + +open System +open Microsoft.Azure.Functions.Worker +open Microsoft.Extensions.Logging + +module EventGridTriggerFSharp = + type MyEvent = + { Id: string + Topic: string + Subject: string + EventType: string + EventTime: DateTime + Data: object } + + [] + let run ([] eventGridEvent: MyEvent, context: FunctionContext) = + let logger = + context.GetLogger("EventGridTriggerFSharp") + + log.LogInformation(eventGridEvent.Data.ToString()) diff --git a/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/template.json b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/template.json new file mode 100644 index 000000000..25059527c --- /dev/null +++ b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/template.json @@ -0,0 +1,71 @@ +{ + "author": "Microsoft", + "classifications": [ + "Azure Function", + "Trigger", + "EventHub" + ], + "name": "EventHubTrigger", + "identity": "Azure.Function.FSharp.Isolated.EventHubTrigger.3.x", + "groupIdentity": "Azure.Function.EventHubTrigger", + "shortName": "eventhub", + "tags": { + "language": "F#", + "type": "item" + }, + "sourceName": "EventHubTriggerFSharp", + "symbols": { + "namespace": { + "description": "namespace for the generated code", + "replaces": "Company.Function", + "type": "parameter" + }, + "Connection": { + "description": "The name of the app setting containing your Event Hub connection string. The connection string must have Send permissions.", + "type": "parameter", + "defaultValue": "", + "replaces": "ConnectionValue" + }, + "EventHubName": { + "description": "This is the name of the event hub to which the event will be sent.", + "type": "parameter", + "defaultValue": "samples-workitems", + "replaces": "eventHubNameValue" + } + }, + "primaryOutputs": [ + { + "path": "EventHubTriggerFSharp.fs" + } + ], + "defaultName": "EventHubTriggerFSharp", + "postActions": [ + { + "Description": "Adding Reference to Microsoft.Azure.Functions.Worker.Extensions.EventHubs NuGet package", + "ActionId": "B17581D1-C5C9-4489-8F0A-004BE667B814", + "ContinueOnError": "true", + "ManualInstructions": [], + "args": { + "referenceType": "package", + "reference": "Microsoft.Azure.Functions.Worker.Extensions.EventHubs", "version": "4.2.0", + "projectFileExtensions": ".fsproj" + } + }, + { + "description": "Restore NuGet packages required by this project.", + "manualInstructions": [], + "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025", + "continueOnError": true + }, + { + "condition": "(HostIdentifier != \"dotnetcli\" && HostIdentifier != \"dotnetcli-preview\")", + "description": "Opens the function class file in the editor", + "manualInstructions": [], + "actionId": "84C0DA21-51C8-4541-9940-6CA19AF04EE6", + "args": { + "files": "0" + }, + "continueOnError": true + } + ] +} \ No newline at end of file diff --git a/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json new file mode 100644 index 000000000..1a96266f2 --- /dev/null +++ b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json @@ -0,0 +1,38 @@ +{ + "name": { + "text": "Event Hub trigger", + "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}", + "id": "2040" + }, + "description": { + "text": "An F# function that will be run whenever an event hub receives a new event", + "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}", + "id": "2041" + }, + "order": 500, + "icon": "vs-2017.3/eventhub.png", + "learnMoreLink": "https://go.microsoft.com/fwlink/?linkid=848145", + "uiFilters": [ + "functions" + ], + "symbolInfo": [ + { + "id": "Connection", + "name": { + "id": "2042", + "text": "Connection string setting name", + "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}" + }, + "isVisible": true + }, + { + "id": "EventHubName", + "name": { + "id": "2043", + "text": "Event Hub name", + "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}" + }, + "isVisible": true + } + ] +} \ No newline at end of file diff --git a/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32.png b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32.png new file mode 100644 index 000000000..874319051 Binary files /dev/null and b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32.png differ diff --git a/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32@2x.png b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32@2x.png new file mode 100644 index 000000000..452abf8f3 Binary files /dev/null and b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32@2x.png differ diff --git a/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~dark.png b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~dark.png new file mode 100644 index 000000000..9a5088b1d Binary files /dev/null and b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~dark.png differ diff --git a/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~dark@2x.png b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~dark@2x.png new file mode 100644 index 000000000..7d028d551 Binary files /dev/null and b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~dark@2x.png differ diff --git a/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~dark~sel.png b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~dark~sel.png new file mode 100644 index 000000000..237693e86 Binary files /dev/null and b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~dark~sel.png differ diff --git a/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~dark~sel@2x.png b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~dark~sel@2x.png new file mode 100644 index 000000000..91ca04e91 Binary files /dev/null and b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~dark~sel@2x.png differ diff --git a/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~sel.png b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~sel.png new file mode 100644 index 000000000..237693e86 Binary files /dev/null and b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~sel.png differ diff --git a/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~sel@2x.png b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~sel@2x.png new file mode 100644 index 000000000..91ca04e91 Binary files /dev/null and b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~sel@2x.png differ diff --git a/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub.png b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub.png new file mode 100644 index 000000000..31d8aa8fc Binary files /dev/null and b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub.png differ diff --git a/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/EventHubTriggerFSharp.fs b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/EventHubTriggerFSharp.fs new file mode 100644 index 000000000..0314f1dff --- /dev/null +++ b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/EventHubTriggerFSharp.fs @@ -0,0 +1,17 @@ +namespace Company.Function + +open System +open Microsoft.Azure.Functions.Worker +open Microsoft.Extensions.Logging + +module EventHuBTriggerFSharp = + [] + let run + ( + [] input: string [], + context: FunctionContext + ) = + let logger = + context.GetLogger("EventHubTriggerFSharp") + + logger.LogInformation(sprintf "First Event Hubs triggered message: %s" (input |> Array.head)) diff --git a/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/template.json b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/template.json new file mode 100644 index 000000000..588fa4cd9 --- /dev/null +++ b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/template.json @@ -0,0 +1,61 @@ +{ + "author": "Microsoft", + "classifications": [ + "Azure Function" + ], + "name": "HttpTrigger", + "identity": "Azure.Function.FSharp.Isolated.HttpTrigger.3.x", + "groupIdentity": "Azure.Function.HttpTrigger", + "shortName": "Http", + "tags": { + "language": "F#", + "type": "item" + }, + "sourceName": "HttpTriggerFSharp", + "symbols": { + "namespace": { + "description": "namespace for the generated code", + "replaces": "Company.Function", + "type": "parameter" + }, + "AccessRights": { + "type": "parameter", + "description": "Authorization level controls whether the function requires an API key and which key to use; Function uses a function key; Admin uses your master key. The function and master keys are found in the 'keys' management panel on the portal, when your function is selected.", + "datatype": "choice", + "choices": [ + { + "choice": "Function", + "description": "Function" + }, + { + "choice": "Anonymous", + "description": "Anonymous" + }, + { + "choice": "Admin", + "description": "Admin" + } + ], + "replaces": "AuthLevelValue", + "defaultValue": "Function" + } + }, + "primaryOutputs": [ + { + "path": "HttpTriggerFSharp.fs" + } + ], + "defaultName": "HttpTriggerFSharp", + "postActions": [ + { + "condition": "(HostIdentifier != \"dotnetcli\" && HostIdentifier != \"dotnetcli-preview\")", + "description": "Opens the function class file in the editor", + "manualInstructions": [], + "actionId": "84C0DA21-51C8-4541-9940-6CA19AF04EE6", + "args": { + "files": "0" + }, + "continueOnError": true + } + ] +} \ No newline at end of file diff --git a/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json new file mode 100644 index 000000000..86351840f --- /dev/null +++ b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json @@ -0,0 +1,29 @@ +{ + "name": { + "text": "Http trigger", + "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}", + "id": "2050" + }, + "description": { + "text": "A F# function that will be run whenever it receives an HTTP request", + "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}", + "id": "2051" + }, + "order": 100, + "icon": "vs-2017.3/httpTrigger.png", + "learnMoreLink": "https://go.microsoft.com/fwlink/?linkid=848145", + "uiFilters": [ + "functions" + ], + "symbolInfo": [ + { + "id": "AccessRights", + "name": { + "id": "2052", + "text": "Authorization level", + "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}" + }, + "isVisible": true + } + ] +} \ No newline at end of file diff --git a/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32.png b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32.png new file mode 100644 index 000000000..35af3f04f Binary files /dev/null and b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32.png differ diff --git a/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32@2x.png b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32@2x.png new file mode 100644 index 000000000..d15cf2148 Binary files /dev/null and b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32@2x.png differ diff --git a/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~dark.png b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~dark.png new file mode 100644 index 000000000..7b608aba9 Binary files /dev/null and b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~dark.png differ diff --git a/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~dark@2x.png b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~dark@2x.png new file mode 100644 index 000000000..75d84039a Binary files /dev/null and b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~dark@2x.png differ diff --git a/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~dark~sel.png b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~dark~sel.png new file mode 100644 index 000000000..a7e429830 Binary files /dev/null and b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~dark~sel.png differ diff --git a/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~dark~sel@2x.png b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~dark~sel@2x.png new file mode 100644 index 000000000..38aa25740 Binary files /dev/null and b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~dark~sel@2x.png differ diff --git a/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~sel.png b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~sel.png new file mode 100644 index 000000000..a7e429830 Binary files /dev/null and b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~sel.png differ diff --git a/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~sel@2x.png b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~sel@2x.png new file mode 100644 index 000000000..38aa25740 Binary files /dev/null and b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~sel@2x.png differ diff --git a/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger.png b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger.png new file mode 100644 index 000000000..39237ed71 Binary files /dev/null and b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger.png differ diff --git a/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/HttpTriggerFSharp.fs b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/HttpTriggerFSharp.fs new file mode 100644 index 000000000..625bb0987 --- /dev/null +++ b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/HttpTriggerFSharp.fs @@ -0,0 +1,23 @@ +namespace Company.Function + +open System.Net +open Microsoft.Azure.Functions.Worker +open Microsoft.Azure.Functions.Worker.Http +open Microsoft.Extensions.Logging + +module HttpTriggerFSharp = + + [] + let run + ([] req: HttpRequestData) + (context: FunctionContext) + = + let logger = context.GetLogger "HttpTriggerFSharp" + logger.LogInformation "F# HTTP trigger function processed a request" + + let response = req.CreateResponse(HttpStatusCode.OK) + response.Headers.Add("Content-Type", "text/plain; charset=utf-8") + + response.WriteString "Welcome to Azure Functions!" + + response diff --git a/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/template.json b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/template.json new file mode 100644 index 000000000..7b9b3cfbd --- /dev/null +++ b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/template.json @@ -0,0 +1,69 @@ +{ + "author": "Microsoft", + "classifications": [ + "Azure Function" + ], + "name": "QueueTrigger", + "identity": "Azure.Function.FSharp.Isolated.QueueTrigger.3.x", + "groupIdentity": "Azure.Function.QueueTrigger", + "shortName": "Queue", + "tags": { + "language": "F#", + "type": "item" + }, + "sourceName": "QueueTriggerFSharp", + "symbols": { + "namespace": { + "description": "namespace for the generated code", + "replaces": "Company.Function", + "type": "parameter" + }, + "Connection": { + "description": "The name of the app setting containing your Storage connection.", + "type": "parameter", + "defaultValue": "", + "replaces": "ConnectionValue" + }, + "QueueName": { + "description": "This is the path within your storage account that the trigger will monitor.", + "type": "parameter", + "defaultValue": "myqueue-items", + "replaces": "PathValue" + } + }, + "primaryOutputs": [ + { + "path": "QueueTriggerFSharp.fs" + } + ], + "defaultName": "QueueTriggerFSharp", + "postActions": [ + { + "Description": "Adding Reference to Microsoft.Azure.Functions.Worker.Extensions.Storage Nuget package", + "ActionId": "B17581D1-C5C9-4489-8F0A-004BE667B814", + "ContinueOnError": "true", + "ManualInstructions": [], + "args": { + "referenceType": "package", + "reference": "Microsoft.Azure.Functions.Worker.Extensions.Storage", "version": "4.0.4", + "projectFileExtensions": ".fsproj" + } + }, + { + "description": "Restore NuGet packages required by this project.", + "manualInstructions": [], + "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025", + "continueOnError": true + }, + { + "condition": "(HostIdentifier != \"dotnetcli\" && HostIdentifier != \"dotnetcli-preview\")", + "description": "Opens the function class file in the editor", + "manualInstructions": [], + "actionId": "84C0DA21-51C8-4541-9940-6CA19AF04EE6", + "args": { + "files": "0" + }, + "continueOnError": true + } + ] + } \ No newline at end of file diff --git a/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json new file mode 100644 index 000000000..7342b352e --- /dev/null +++ b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json @@ -0,0 +1,38 @@ +{ + "name": { + "text": "Queue trigger", + "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}", + "id": "2060" + }, + "description": { + "text": "An F# function that will be run whenever a message is added to a specified Azure Queue Storage", + "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}", + "id": "2061" + }, + "order": 300, + "icon": "vs-2017.3/queue.png", + "learnMoreLink": "https://go.microsoft.com/fwlink/?linkid=848145", + "uiFilters": [ + "functions" + ], + "symbolInfo": [ + { + "id": "Connection", + "name": { + "id": "2062", + "text": "Connection string setting name", + "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}" + }, + "isVisible": true + }, + { + "id": "QueueName", + "name": { + "id": "2063", + "text": "Queue name", + "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}" + }, + "isVisible": true + } + ] +} \ No newline at end of file diff --git a/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32.png b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32.png new file mode 100644 index 000000000..1c4173228 Binary files /dev/null and b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32.png differ diff --git a/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32@2x.png b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32@2x.png new file mode 100644 index 000000000..b4f86a316 Binary files /dev/null and b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32@2x.png differ diff --git a/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~dark.png b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~dark.png new file mode 100644 index 000000000..57286530c Binary files /dev/null and b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~dark.png differ diff --git a/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~dark@2x.png b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~dark@2x.png new file mode 100644 index 000000000..aba48eeb3 Binary files /dev/null and b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~dark@2x.png differ diff --git a/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~dark~sel.png b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~dark~sel.png new file mode 100644 index 000000000..6e892fc6f Binary files /dev/null and b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~dark~sel.png differ diff --git a/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~dark~sel@2x.png b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~dark~sel@2x.png new file mode 100644 index 000000000..6e3db0e87 Binary files /dev/null and b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~dark~sel@2x.png differ diff --git a/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~sel.png b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~sel.png new file mode 100644 index 000000000..6e892fc6f Binary files /dev/null and b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~sel.png differ diff --git a/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~sel@2x.png b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~sel@2x.png new file mode 100644 index 000000000..6e3db0e87 Binary files /dev/null and b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~sel@2x.png differ diff --git a/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue.png b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue.png new file mode 100644 index 000000000..a12717af8 Binary files /dev/null and b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue.png differ diff --git a/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/QueueTriggerFSharp.fs b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/QueueTriggerFSharp.fs new file mode 100644 index 000000000..25d096dd7 --- /dev/null +++ b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/QueueTriggerFSharp.fs @@ -0,0 +1,18 @@ +namespace Company.Function + +open System +open Microsoft.Azure.Functions.Worker +open Microsoft.Extensions.Logging + +module QueueTriggerFSharp = + [] + let run + ( + [] myQueueItem: string, + context: FunctionContext + ) = + let msg = + sprintf "F# Queue trigger function processed: %s" myQueueItem + + let logger = context.GetLogger "QueueTriggerFSharp" + log.LogInformation msg diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/template.json b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/template.json new file mode 100644 index 000000000..b51601236 --- /dev/null +++ b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/template.json @@ -0,0 +1,46 @@ +{ + "author": "Microsoft", + "classifications": [ + "Azure Function" + ], + "name": "TimerTrigger", + "identity": "Azure.Function.FSharp.Isolated.TimerTrigger.3.x", + "groupIdentity": "Azure.Function.TimerTrigger", + "shortName": "Timer", + "tags": { + "language": "F#", + "type": "item" + }, + "sourceName": "TimerTriggerFSharp", + "symbols": { + "namespace": { + "description": "namespace for the generated code", + "replaces": "Company.Function", + "type": "parameter" + }, + "Schedule": { + "type": "parameter", + "description": "Enter a cron expression of the format '{second} {minute} {hour} {day} {month} {day of week}' to specify the schedule.", + "defaultValue": "0 */5 * * * *", + "replaces": "ScheduleValue" + } + }, + "primaryOutputs": [ + { + "path": "TimerTriggerFSharp.fs" + } + ], + "defaultName": "TimerTriggerFSharp", + "postActions": [ + { + "condition": "(HostIdentifier != \"dotnetcli\" && HostIdentifier != \"dotnetcli-preview\")", + "description": "Opens the function class file in the editor", + "manualInstructions": [], + "actionId": "84C0DA21-51C8-4541-9940-6CA19AF04EE6", + "args": { + "files": "0" + }, + "continueOnError": true + } + ] +} \ No newline at end of file diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json new file mode 100644 index 000000000..855c05508 --- /dev/null +++ b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json @@ -0,0 +1,29 @@ +{ + "name": { + "text": "Timer trigger", + "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}", + "id": "2070" + }, + "description": { + "text": "A F# function that will be run on a specified schedule", + "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}", + "id": "2071" + }, + "order": 200, + "icon": "vs-2017.3/timer.png", + "learnMoreLink": "https://go.microsoft.com/fwlink/?linkid=848145", + "uiFilters": [ + "functions" + ], + "symbolInfo": [ + { + "id": "Schedule", + "name": { + "id": "2072", + "text": "Schedule", + "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}" + }, + "isVisible": true + } + ] +} \ No newline at end of file diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32.png b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32.png new file mode 100644 index 000000000..221aeda34 Binary files /dev/null and b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32.png differ diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32@2x.png b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32@2x.png new file mode 100644 index 000000000..e5a69dbe6 Binary files /dev/null and b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32@2x.png differ diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~dark.png b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~dark.png new file mode 100644 index 000000000..6968561d6 Binary files /dev/null and b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~dark.png differ diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~dark@2x.png b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~dark@2x.png new file mode 100644 index 000000000..e24e2009b Binary files /dev/null and b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~dark@2x.png differ diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~dark~sel.png b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~dark~sel.png new file mode 100644 index 000000000..a12cd4299 Binary files /dev/null and b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~dark~sel.png differ diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~dark~sel@2x.png b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~dark~sel@2x.png new file mode 100644 index 000000000..f477bd6a8 Binary files /dev/null and b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~dark~sel@2x.png differ diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~sel.png b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~sel.png new file mode 100644 index 000000000..a12cd4299 Binary files /dev/null and b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~sel.png differ diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~sel@2x.png b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~sel@2x.png new file mode 100644 index 000000000..f477bd6a8 Binary files /dev/null and b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~sel@2x.png differ diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer.png b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer.png new file mode 100644 index 000000000..e77ada9f5 Binary files /dev/null and b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer.png differ diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/TimerTriggerFSharp.fs b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/TimerTriggerFSharp.fs new file mode 100644 index 000000000..3b843b464 --- /dev/null +++ b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/TimerTriggerFSharp.fs @@ -0,0 +1,21 @@ +namespace Company.Function + +open System +open Microsoft.Azure.Functions.Worker +open Microsoft.Extensions.Logging + +module TimerTriggerFSharp = + type MyScheduleStatus = + { Last: DateTime + Next: DateTime + LastUpdate: DateTime } + + type MyInfo = + { ScheduleStatus: MyScheduleStatus + IsPastDue: bool } + + [] + let run ([] myTimer: MyInfo, context: FunctionContext) = + let logger = context.GetLogger "TimerTriggerFSharp" + logger.LogInformation(sprintf "F# Time trigger function executed at: %A" DateTime.Now) + logger.LogInformation(sprintf "Next timer schedule at: %A" myTimer.ScheduleStatus.Next) diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/readme.md b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/readme.md new file mode 100644 index 000000000..e6b4ecc09 --- /dev/null +++ b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/readme.md @@ -0,0 +1,11 @@ +# TimerTrigger - F# + +The `TimerTrigger` makes it incredibly easy to have your functions executed on a schedule. This sample demonstrates a simple use case of calling your function every 5 minutes. + +## How it works + +For a `TimerTrigger` to work, you provide a schedule in the form of a [cron expression](https://en.wikipedia.org/wiki/Cron#CRON_expression)(See the link for full details). A cron expression is a string with 6 separate expressions which represent a given schedule via patterns. The pattern we use to represent every 5 minutes is `0 */5 * * * *`. This, in plain text, means: "When seconds is equal to 0, minutes is divisible by 5, for any hour, day of the month, month, day of the week, or year". + +## Learn more + + Documentation