<a id="task_expression"/>
Task Expression
--------------

The tasks in subtask and preload-task can be defined using a Task Expression.
Each task expression can contain multiple tasks (all can be optional). Tasks
from other files and refs can be referenced using [Task Reference](#task_reference).

```
TASK_EXPR = TASK_REFERENCE [ WHITE_SPACE * '|' [ WHITE_SPACE * TASK_EXPR ] ]
```

To define a task that may not exist and that will not cause the task referencing
it to be INVALID, follow the task name with pipe (`|`) character. This feature
is particularly useful when a property is used in the task name.

```
    preload-task = Optional task ${_name} |
```

To define an alternate task to load when an optional task does not exist,
list the alternate task name after the pipe (`|`) character. This feature
may be chained together as many times as needed.

```
    subtask = Optional Subtask ${_name} |
              Backup Optional Subtask ${_name} Backup |
              Default Subtask # Must exist if the above two don't!
```

<a id="task_reference"/>
Task Reference
---------

Tasks reference can be a simple task name when the defined task is intended to be in
the same file, tasks from other files and refs can also be referenced by syntax explained
below.

```
 TASK_REFERENCE = [
                    [ // TASK_FILE_PATH ]
                    [ @USERNAME [ TASK_FILE_PATH ] ] |
                    [ %GROUP_NAME [ TASK_FILE_PATH ] ] |
                    [ %%GROUP_UUID [ TASK_FILE_PATH ] ] |
                    [ TASK_FILE_PATH ]
                  ] '^' TASK_NAME
```

To reference a task from root task.config (top level task.config file of a repository)
on the current ref, prefix the task name with `^`.

Example:

task/.../<any>.config
```
    ...
    preload-task = ^Task in root task config
    ...
```

task.config
```
    ...
    [task "Task in root task config"]
    ...
```

To provide an absolute reference to a task under the `task` folder, provide the subpath starting
from `task` directory with a leading `/` followed by a `^` and then task name.

Example:

task.config
```
    ...
    subtask =  /foo/bar/baz.config^Absolute Example Task
    ...
```

task/foo/bar/baz.config
```
    ...
    [task "Absolute Example Task"]
    ...
```

Similarly, to provide reference to tasks which are in a subdirectory of the file containing the
current task avoid the leading `/`.

Example:

task/foo/file.config
```
    ...
    subtask = bar/baz.config^Relative Example Task
    ...
```

task/foo/bar/baz.config
```
    ...
    [task "Relative Example Task"]
    ...
```

Relative tasks specified in a root task.config would look for a file path under the task directory.

Example:

task.config
```
    ...
    subtask = foo/bar.config^Relative from Root Example Task
    ...
```

task/foo/bar.config
```
    ...
    [task "Relative from Root Example Task"]
    ...
```

To reference a task from a specific user ref (All-Users.git:refs/users/<user>), specify the
username with `@`.

when referencing from user refs, to get task from top level task.config on a user ref use
`@<username>^<task_name>` and to get any task under the task directory use the relative
path, like: `@<username>/<relative path from task dir>^<task_name>`. It doesn't matter which
project, ref and file one is referencing from while using this syntax.

Example:
Assumption: Account id of user_a is 1000000

All-Users:refs/users/00/1000000:task.config
```
    ...
    [task "top level task"]
    ...
```

All-Users:refs/users/00/1000000:/task/dir/common.config
```
    ...
    [task "common task"]
    ...
```

All-Projects:refs/meta/config:/task.config
```
    ...
    preload-task = @user_a_username^top level task
    preload-task = @user_a_username/dir/common.config^common task
    ...
```

To reference a task from the root task.config on the root project and branch
(defaults to `All-Projects` and `refs/meta/config` and is
[configurable](config.html#section-rootconfig)), prefix the task name with
`//^` and to reference a task from the task dir on the root project and branch,
use `//<relative path from task dir>^<task_name>`. It doesn't matter which
project, ref and file one is referencing from while using this syntax.

Example:

All-Projects:refs/meta/config:task.config
```
    ...
    [task "root task"]
    ...
```

All-Projects:refs/meta/config:/task/dir/sample.config

```
    ...
    [task "sample task"]
    ...
```

All-Users:refs/users/00/1000000:task.config
```
    ...
    preload-task = //dir/sample.config^sample task
    preload-task = //^root task
    ...
```

To reference a task from a specific group ref (All-Users.git:refs/groups/<sharded-group-uuid>),
specify the group name with `%` or group uuid with `%%`.

When referencing from group refs, to get task from top level task.config on a group ref use
`%<group_name>^<task_name>` or `%%<group_uuid>^<task_name>` and to get any task under the
task directory use the relative path,
like: `%<group_name>/<relative path from task dir>^<task_name>` or
`%%<group_uuid>/<relative path from task dir>^<task_name>`.
It doesn't matter which project, ref and file one is referencing from while using this syntax.

Example:
Assumption: Group uuid of group_a is 720269095421a08a24889e29d092df1839a7a706

All-Users:refs/groups/72/720269095421a08a24889e29d092df1839a7a706:task.config
```
    ...
    [task "top level task"]
    ...
```

All-Users:refs/groups/72/720269095421a08a24889e29d092df1839a7a706:/task/dir/common.config
```
    ...
    [task "common task"]
    ...
```

All-Projects:refs/meta/config:/task.config
```
    ...
    preload-task = %group_a^top level task
    preload-task = %%720269095421a08a24889e29d092df1839a7a706/dir/common.config^common task
    ...
```
