atlas.json and atlas-settings.json schemas
The VS Code extension will validate both the atlas.json
and atlas-settings.json
for you. There are snippets available for populating a commented sample of all valid options, which can be retrieved by typing "atlas" or "atlas-settings".
atlas.json
Sample structure
Note
Required properties are highlighted.
Detailed description
Property | Required | Description |
---|---|---|
name | ✓ | name of your project |
displayName | user-friendly name for the project | |
description | ✓ | verbose description of what your project does |
authors | ✓ | an array of names of developers for the project |
license | license under which you wish the project to be available | |
publisher | owner of the project, typically your company name | |
repo | where the course code can be accessed | |
library | group name for the projectIf stored on GitHub, this would be the repository name. | |
version | ✓ | current version for the projectSemver format is recommended. |
sourceDir | ✓ | directory where main runnable VoltScript files will be storedIf you wish to place such files in the root of the project, use an empty string (""). |
testDir | directory where unit and integration test runnable VoltScript files will be storedThis can be omitted if tests are being put in the root. | |
libsDir | directory where VoltScript Libraries (.vss files) will be stored This can be omitted if they will be put in the root. | |
vsesDir | directory where VoltScript Extensions will be storedThis can be omitted if they will be put in the root. | |
mainScripts | ✓ | An array of files that are main runnable scripts. |
unitTestScript | An array of files that are unit test runnable scripts. | |
integrationTestScripts | An array of files that are integration test runnable scripts. | |
repositories | ✓ | an array of repository objects, each containing the following properties:- id: Use to cross-reference with the atlas-settings.json .- type: Currently, only "github", "webserver", and "marketplace" are supported.- url: base URL for API calls to the repository. See below for more details how this is used. |
dependencies | ✓ | an array of dependency objects mapping to VoltScript files to use. The dependency contains three properties:- library: The group under which the .vss files and their own atlas.json are grouped.- version: an explicit version number mapping to a release, or "latest" to also retrieve the most recent- module: the specific file to be incorporated- repository: an optional property mapping to a repository IDIf used, Archipelago will look in that repository first. |
testDependencies | ✓ | an array of dependency objects mapping to VoltScript files only for use in unit and integration tests. The dependency structure if the same as for dependencies |
vseDependencies | ✓ | an object of extension dependency objects mapping to extensions to use. The extension dependency is a JSON object whose label is the name you intend to use in the UseVSE statement, and which has the following properties:- library: the group under which the VoltScript Extension(s) are grouped. For Volt MX Marketplace, this is the first five digits from the download URL. For example, if the URL is "https://community.demo-hclvoltmx.com/marketplace/asset/25265/25264/19371?agent=web", the library is "25265".- version: a human-readable version number mapping to a release. "latest" is not relevant for Volt MX Marketplace.- module: the specific extension to be incorporated. For Volt MX Marketplace, this will be the subsequent two sets of five digits from the download URL. For example, if the URL is "https://community.demo-hclvoltmx.com/marketplace/asset/25265/25264/19371?agent=web", the module is "25264/19371". NOTE: This will change with every release. |
Note
If you have the VoltScript Build Manager extension installed, validation in Visual Studio Code ensures your atlas.json
is valid. Typing "atlas" allows you to pull in a snippet providing all possible options and comments.
atlas-settings.json
Sample structure
Within each repository JSON object, all properties are required.
Detailed description
The label for each settings JSON object should be the id used for that repository in the atlas.json
. The schema for each settings object is:
Property | Required | Description |
---|---|---|
type | ✓ | either "github", "webserver", or "marketplace |
token | ✓ | only accepted where type is "github"This is the GitHub Personal Access Token. |
credentials | ✓ | only accepted where 'type' is "webserver" a Base64-encoded string of the username + ":" + password |
username | ✓ | only accepted where 'type' is "marketplace" The username to log into Volt MX Marketplace |
password | ✓ | only accepted where 'type' is "marketplace" The password to log into Volt MX Marketplace |
authUrl | ✓ | only accepted where 'type' is "marketplace" The login URL for Volt MX Marketplace, https://accounts.auth.demo-hclvoltmx.net/login |
A sample atlas-settings file would be:
{
"hcl-github": {
"type": "github",
"token": "${env.TOKEN}"
},
"my-web-server": {
"type": "webserver",
"credentials": "${env.CRED}"
},
"volt-mx-marketplace": {
"type": "marketplace",
"username": "${env.USERNAME}",
"password": "${env.PASSWORD}",
"authUrl": "https://accounts.auth.demo-hclvoltmx.net/login",
}
}
Warning
The atlas-settings.json
is a JSON object of settings for repositories in an atlas.json
. As a result, you won't get content assist at the top level. You'll only receive content assist for each settings JSON object. Typing "atlas-settings" enables you to pull in a snippet providing all possible options and comments.
See Using VoltScript Build Manager for more details.