The tool will upload all resources described in the Solutionfile.json to a solution in your business account. This includes static assets, endpoint definitons, event handlers and modules.
- python 2.7 or later
sudo pip install --upgrade exosite
If you are running OS X El Capitan, the following may be necessary:
sudo pip install --upgrade exosite --ignore-installed six --ignore-installed prompt-toolkit --ignore-installed requests
This command will prompt you to input credential data and save it to file '.Solutionfile.secret' for latter use.
exosite --init
This command will perform upload, the target script/file will be read from config file 'Solutionfile.json'
exosite --deploy
usage: exosite [-h] [--host [HOST]] [-k] [-p] [-s] [-a] [-e] [-m] [--deploy] [--init] [-v]
-h, --help show this help message and exit
--host [HOST]
-k, --insecrue Ignore SSL
-p, --upload_productid
Upload static file
-s, --upload_static Upload static file
-a, --upload_api Upload api
-e, --upload_eventhandler
Upload event handler
-m, --upload_modules Upload modules
-c, --update_cors Update cors configuration
--enable_identity <identity> Add identity
--delete_identity <identity> Delete identity
--logs [tail] Script log information
--read <identity> <alias> Read data from resource
--write <identity> <alias> <value>
Write data to resource
--tree Listing resources
--watch Watch for modified files and deploy automatically
--open [product|solution]
Open solution/product url in browser
--deploy Upload all solution configurations
--init Configure for credential parameters
-v, --version Show Version number
{
"version": "0.2",
"default_page": "index.html",
"file_dir": "public",
"custom_api": "sample_api.lua",
"custom_api_hook": "_init",
"product_spec": {
"lightbulb": "lightbulb.yaml"
},
"modules": {
"auth": "modules/util.lua",
"debug": "modules/debug.lua"
},
"event_handler": {
"device": {
"datapoint": "event_handler/product.lua"
},
"timer": {
"timer": "event_handler/timer.lua"
}
}
}
{
"version": "0.3",
"default_page": "index.html",
"assets": "public",
"routes": "sample_api.lua",
"routes_hook": "_init",
"modules": {
"auth": "modules/util.lua",
"debug": "modules/debug.lua"
},
"services": {
"device": {
"datapoint": "event_handler/product.lua"
},
"timer": {
"timer": "event_handler/timer.lua"
}
}
"cors": {
"origin": ["http://localhost:*"],
"methods": ["get", "post"],
"headers": ["accept", "content-type", "authorization"],
"expose_headers": ["X-Key"],
"credentials": true
}
}
--#ENDPOINT <METHOD> <PATH>
SCRIPT_CODE
where --#ENDPOINT <METHOD> <PATH>
is also separator between endpoint definitions, for example:
--#ENDPOINT GET /keystore/{value}
return Keystore.get({key = request.parameters.value})
--#ENDPOINT POST /user/{email}/lightbulbs
return User.listUserRoleParamValues({
id = request.user_id,
role_id = "lightbulb_owner",
parameter_name = "serialnumber"
})