With conditions, you can introduce complex logic for processing files while they are uploaded / downloaded.
The example below shows different ways how you can use conditions:
{
// ... other parts omitted for brevity ...
"upload": {
"type": "android",
"files": [
{
// ...
"conditions": "!~equals: ${path}, src"
},
{
// ...
"conditions": [
"!~equals: ${path}, src",
[
"contains: ab, ${path}",
"contains: cd, ${path}"
]
]
}
]
}
}
Single condition 🔗
The simplest way to use a single condition is:
{
// ...
"conditions": "!~equals: ${path}, src"
}
Conditions with AND / OR 🔗
The full form of conditions is shown below.
{
// ...
"conditions": [
"condition1",
[
"condition2.1",
"condition2.2"
],
[
"condition3.1",
"condition3.1"
]
]
}
The example above is the same as this formula:
condition1 || (condition2.1 && condition2.2) || (condition3.1 && condition3.2)
Expressions 🔗
equals 🔗
equals: input, term1, term2, term3
Returns true if the input equals at least one of the terms.
contains 🔗
contains: term, text
Returns true if the term is contained in the text.
containsWord 🔗
containsWord: term, text
Returns true if the term is contained in the text but only if it’s a whole word. The text is split by the spaces and each of the parts is tested against the term.
It’s useful for checking for the existence of a particular group or product flavor, etc.
empty 🔗
empty: text
Returns true if the text is blank (empty or whitespaces only).
startsWith 🔗
startsWith: term, text
Returns true if the text starts with the term.
endsWith 🔗
endsWith: term, text
Returns true if the text ends with the term.
Variables 🔗
Variables can be used as any of the parameters in the expression.
{
// ...
"conditions": "equals: ${path}, ${expectedPath}"
}
Negation 🔗
Prepend !
before the expression name to negate the output of the command.
Example:
!equals: term1, term2
Returns false if the term1 is equals to term2.
Case-sensitivity 🔗
By default, all operations are case-sensitive.
Prepend ~
before the expression name to switch to the case-insensitive mode.
Example:
~equals: term1, TERM2
Returns true if the term1 is equals to the term2. The check is case-insensitive.
Single line AND 🔗
If you need a condition with more expressions, you can use |
character to join more expressions on a single line.
{
// ...
"conditions": "exp1 | exp2 | exp3"
}
The example above is the same as: exp1 && exp2 && exp3
Special characters 🔗
Some characters have a special meaning and so it’s necessary to replace them.
- white-spaces are trimmed to prevent formatting issues, please use
%space%
instead ,
is used as parameter separator, please use%comma%
instead$
is used for including variables, please use%dollar%
instead|
is used for separating more command on a single line, please use%vbar%
instead
Example:
For checking whether the ${path}
is equal to the weird string ab,c
(starts with space), please replace special characters like this:
{
// ...
"conditions": "equals: ${path}, %space%ab%comma%c"
}