AL Scaffold
This extension provides a quick method to prep a new AL project with defaults for easy standardisation across your development team.
Features
The extension will create the required folder structure as defined in a config file (see below)
Once created it can move any existing .al files into a specific folder.
The project app.json file will be modified to include the specified object range, project name, Company name and Url along with other settings as defined in the config file
Requirements
You need to make sure you run the AL:Go command first.
Extension Settings
This extension contributes the following settings:
rolandthompson.al.scaffold.workspaceSettingsUrl
: Specifies a url that should point to a txt file (can be web based or network/local), this will be added to the local project workspace settings. (See next section for more information)
rolandthompson.al.scaffold.companyName
: Specifies the Company name to use
rolandthompson.al.scaffold.logoUrl
: Specifies the url for the Logo, the extension will download and add it to the app.json file.
rolandthompson.al.scaffold.foldersToCreate
: Specifies the folders to create. Json - See below example
rolandthompson.al.scaffold.url
: Company URL to set in the app.json file.
rolandthompson.al.scaffold.moveALFiles
: Move .al files to folders. true/false.
rolandthompson.al.scaffold.moveALFilesToDir
: Folders to move .al files to.
rolandthompson.al.scaffold.customObjectRange
: Default object range to allow for extensions. You can specify multiple ranges.
rolandthompson.al.scaffold.copySettingsToWorkspace
: Specifies if the settings should be copied to the local workspace.
rolandthompson.al.scaffold.brief
: Brief description of the project
rolandthompson.al.scaffold.description
: Detailed description of the project
rolandthompson.al.scaffold.privacyStatement
: Url to privacy statement
rolandthompson.al.scaffold.EULA
: Url to your EULA
rolandthompson.al.scaffold.help
: Url for general help
rolandthompson.al.scaffold.contextSensitiveHelpUrl
: Url for context help
rolandthompson.al.scaffold.target
: Target platform
rolandthompson.al.scaffold.applicationInsightsConnectionString
: Application insights connection
Remote File Based Configuration
While all the settings can be manualy typed, by using the rolandthompson.al.scaffold.workspaceSettingsUrl setting, you can specify a remote file (json), with the settings already in. This file will be downloaded and will overwrite the current Workspace settings.json file.
You can also specify other extension settings in this file, as you would with workspace settings.
For example, if your file looked like:
{
"rolandthompson.al.scaffold.companyName": "You Company/Publisher Name",
"rolandthompson.al.scaffold.companyUrl": "https://yoururl.com",
"rolandthompson.al.scaffold.logoUrl": "https://yoururl.com/logo.png",
"rolandthompson.al.scaffold.brief": "A brief description",
"rolandthompson.al.scaffold.description": "Something more descriptive",
"rolandthompson.al.scaffold.privacyStatement": "https://yoururl.com/privacy",
"rolandthompson.al.scaffold.EULA": "https://yoururl.com/eula",
"rolandthompson.al.scaffold.help": "https://yoururl.com/help",
"rolandthompson.al.scaffold.contextSensitiveHelpUrl": "https://yoururl.com/{projectid}/0",
"rolandthompson.al.scaffold.target": "Cloud",
"rolandthompson.al.scaffold.applicationInsightsConnectionString": "",
"rolandthompson.al.scaffold.foldersToCreate": [
{
"name": ".builds"
},
{
"name": "src",
"subfolders": [
{
"name": "Tables"
},
{
"name": "TableExts"
},
{
"name": "Codeunits"
},
{
"name": "Pages"
},
{
"name": "PageExts"
},
{
"name": "Reports"
},
{
"name": "Enums"
},
{
"name": "EnumExts"
},
{
"name": "XmlPorts"
},
{
"name": "Querys"
}
]
},
{
"name": "res"
},
{
"name": "test"
}
],
"rolandthompson.al.scaffold.customObjectRange": [
{
"from": 50000,
"to": 50100
},
{
"from": 60000,
"to": 60100
}
],
"rolandthompson.al.scaffold.moveALFiles": true,
"rolandthompson.al.scaffold.moveALFilesToDir": "src",
"rolandthompson.al.scaffold.downloadFilesToRoot": [
{
"filename": "https://yoururl.com/build.ps1",
"destfile": "build.ps1"
},
{
"filename": "https://yoururl.com/.gitignore",
"destfile": ".gitignore"
}
]
}
Then all these will be applied to the current Workspace. The settings specific to this extension will then be skipped when running the scaffold, as they have already been specified.
Release Notes
Version 0.0.6
Improved folder/subfolder creation
Allowed for additional fields
Ability to download extra files
Version 0.0.5
Fixed issue downloading with some SSL certs
Version 0.0.4
Altered Object range settings to use JsonObject
Altered FoldersToCreate to use Objects, now supports subfolders
Version 0.0.3
Fixed an issue with Object range arrays not being supported
Version 0.0.2
Fixed issue with folders not being created
Version 0.0.1
Initial release