A Brighterscript plugin that injects properties into the argument of the main function - useful for adding deep links for debugging, for example.
NOTE: Only Supports Brighterscript Version 1
It works by injecting a single line of code as the first line the main()
(or runUserInterface()
) function , like this:
sub main(args)
args.append(parseJson("{""extra"":""args here""}"))
...
end sub
In a Brighterscript project, install the plugin:
npm install -D bsc-plugin-update-main-args
Add it to the plugins list in bsconfig.json
, and set up the arguments to load:
{
"plugins": ["bsc-plugin-update-main-args"],
"updateMainArgs": {
"args": {
"mediaType": "movie",
"contentId": "test-1234"
}
}
}
This plugin can also read arguments from an .env
file (or from your system's environment variables).
Create a .env
file with the variable MAIN_ARGS
. It should be in JSON format:
MAIN_ARGS={"mediaType":"movie","contentId":"test-1234"}
Change the bsconfig
options to load the environment variable:
{
"plugins": ["bsc-plugin-update-main-args"],
"updateMainArgs": {
"useEnv": true,
"envFilePath": ".env"
}
}
{
"updateMainArgs": {
"useEnv": true, // read environment variable
"envFilePath": ".env", // path to specific .env file to read
"envVar": "MAIN_ARGS", // The environment variable to read
"args": {} // Just add args directly
}
}
There is an test app showing how the plugin works in ./testapp
(with the caveat that it is loading the plugin directly from source instead of through npm).
You can run the test app through VSCode:
-
npm install
to install all dependencies - Open VSCode, run debug configuration
Debug Test App
It will display all the arguments that werethe following screen:
Test App configuration (./testapp/bsconfig.json
):
{
"updateMainArgs": {
"useEnv": true,
"envFilePath": "./testenv",
"args": {
"extra": "args here",
"extra_params": {
"can": "include",
"objects": "too"
}
}
}
}
Environment variables file (./testapp/testenv
):
MAIN_ARGS={"mediaType":"movie","contentId":"abc1234"}