Provide values to configurable variables
Table of contents Expand all Collapse all
The values for configurable variables can be provided through configuration files, command line arguments, and environment variables. The configuration values will be overridden in the following precedence order if the values are given through multiple ways when retrieving configurable values:
-
Command line arguments: The values can be configured through the command line arguments when executing the Ballerina program. The configurable value provided through a command line argument is expected to be the
toString()
representation of the intended value. -
Configuration files: The values can be configured through the configuration files in the TOML(v0.4) format. The file location can be specified through an environment variable with the name
BAL_CONFIG_FILES
. Ballerina supports specifying multiple configuration files using this environment variable with the OS-specific separator. The file precedence order will be as specified in the environment variable. If an environment variable is not specified, the file will be located in the current working directory with the file nameConfig.toml
by default. -
Environment variables: Users can provide the configuration values through an environment variable with the name
BAL_CONFIG_DATA
in which the content is expected to be in the TOML(v0.4.0) format.Note: Providing multiple configuration values through separate environment variables is not supported.
Provide via command line arguments
The following syntax can be used to provide values for the variables through the command line parameters:
-Ckey=value
Currently, the command line based configuration is only supported for configurable variables of types int
, byte
,
float
, boolean
, string
, decimal
, enum
and xml
.
The following examples explain the way of providing command line arguments to configure variables of specific Ballerina types.
Ballerina type | Ballerina example | Command line argument |
---|---|---|
int, byte | configurable byte age = ?; configurable int port = ?; |
bal run -- -Cage=25 -Cport=9090 |
string | configurable string name = ?; |
bal run -- -Cname=John |
float, decimal | configurable float height = ?; configurable decimal salary = ?; |
bal run -- -Cheight=5.6 -Csalary=50500.65 |
boolean | configurable boolean isAdmin = ?; |
bal run -- -CisAdmin=true or bal run -- -CisAdmin=1 |
xml | configurable xml book = ?; |
bal run -- -CxmlVar="<book>The Lost World</book>" |
enum | enum Country { LK = "Sri Lanka", US = "United States" } configurable Country country = ?; |
bal run -- -Ccountry="Sri Lanka" |
Provide via TOML syntax
Ballerina defines a specific TOML syntax to be used when configuring the variables through the configuration files and
environment variables. Depending on the type of the configurable variable, the way of providing values in the TOML
content differs. Currently, TOML-based configuration is supported for configurable variables of int
, float
,
boolean
, string
, xml
, decimal
, enum
, the arrays of the respective types, map, record, table and the union of
the respective types.
The mapping of Ballerina types to TOML types can be explained through the following examples:
Ballerina type | Ballerina example | TOML type | TOML example |
---|---|---|---|
int, byte | configurable byte age = ?; configurable int port = ?; |
Integer | age = 25 port = 9090 |
string | configurable string name = ?; |
String | name = "John" |
float, decimal | configurable float height = ?; configurable decimal salary = ?; |
Float | height = 5.6 salary = 50500.65 |
boolean | configurable boolean isAdmin = ?; |
Boolean | isAdmin = true |
xml | configurable xml book = ?; |
String | book = "<book>The Lost World</book>" |
enum | enum Country { LK = "Sri Lanka" , US = "United States" } configurable Country country = ?; |
String | country = "Sri Lanka" |
union | configurable int|string code = ?; |
Relevant TOML type for the value | code = "10001A" |
int[] , byte[] | configurable int[] ports = ?; |
Array of integers | ports = [9090, 9091] |
string[] | configurable string[] colors = ?; |
Array of strings | colors = ["Red", "Green", "Blue"] |
float[], decimal[] | configurable float[] rates = ?; |
Array of floats | rates = [55.4, 76.3, 38.5] |
boolean[] | configurable boolean[] switches = ?; |
Array of booleans | switches = [false, false, true] |
map | configurable map <string> person = ?; |
TOML table | [person] name = "Anna" city = "London" |
map[] | configurable map <string>[] people = ?; |
Array of TOML tables | [[people]] name = "John" city = "Paris" [[people]] name = "Jack" city = "Colombo" |
record | type Person record { string name; int age; }; configurable Person person ?; |
TOML table | [person] name = "John" age = 45 |
record[] | type Person record { string name; int age; }; configurable Person[] peope = ?; |
Array of TOML tables | [[people]] name = "John" age = 45 [[people]] name = "Jack" age = 32 |
table | configurable table <map<string>> users = ?; |
Array of TOML tables | [[users]] name = "Tom" occupation = "Software Engineer" [[users]] name = "Harry" occupation = "Doctor" |