# Azure Data Factory utilities

This library provides basic functionality to validate and generate an ARM template given a set of Data Factory resources.

Note: Users should only use [Active LTS or Maintenance LTS releases of node version](https://nodejs.org/about/previous-releases) to avoid failures while running the below commands.

## Export ARM template

Run `npm run start export <rootFolder> <factoryId> [outputFolder]` to export the ARM template using the resources of a given folder.

- rootFolder is a mandatory field that represents where the Data Factory resources are located.
- factoryId is a mandatory field that represents the Data factory resource id in the format: `/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.DataFactory/factories/<dfName>`
- outputFolder is an optional parameter that specifies the relative path to save the generated ARM template.

Example(s):  
`npm run start export C:\DataFactories\DevDataFactory /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testResourceGroup/providers/Microsoft.DataFactory/factories/DevDataFactory ArmTemplateOutput`

`npm run start-preview export C:\DataFactories\DevDataFactory /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testResourceGroup/providers/Microsoft.DataFactory/factories/DevDataFactory ArmTemplateOutput`

- **start-preview** command uses **--preview** flag to get an improved PrePostDeploymentScript.ps1 script that skips stop/start trigger if the trigger is unchanged.

`npm run start --path \\server\share\main.js export C:\DataFactories\DevDataFactory /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testResourceGroup/providers/Microsoft.DataFactory/factories/DevDataFactory ArmTemplateOutput`

- **--path** is an optional argument allows the user to point to an existing downloaded bundle's share or direct path. This might be useful when there is a download issue due to networking challenges such as proxy requirements. This argument supercedes the --url argument in combined usage.

## Validate

Run `npm run start validate <rootFolder> <factoryId>` to validate all the resources of a given folder.

- rootFolder is a mandatory field that represents where the Data Factory resources are located.
- factoryId is a mandatory field that represents the Data factory resource id in the format: `/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.DataFactory/factories/<dfName>`

Example:  
`npm run start validate C:\DataFactories\DevDataFactory /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testResourceGroup/providers/Microsoft.DataFactory/factories/DevDataFactory`
