Wildcard paths are used to specify a collection of files that match a given pattern. It is often referred as globs in other contexts.
The build system uses wildcard paths in various configurations and also allows tasks to take advantage of this feature.
Some of the command line arguments use these wildcards to specify the files they apply to (e.g. script language configuration).
Task implementations are encouraged to support wildcard paths in order to make it convenient for users to add new source and resource files without the need of modifying the build files.
The wildcard implementation of saker.build works as follows:
A wildcard path is an either relative or absolute path that may include special characters (
**) which are handled specially by the implementation. The characters of
] are unused but reserved in case future implementations may want to add functionality for those.
* character will match 0 or more arbitrary characters in a path name but doesn't cross directory boundaries.
** when used as a single path name will match 0 or more arbitrary directory names.
Some examples for wildcard paths:
dir/*.extmatches files under the directory
dirwhich have the extension
dir/*123*matches files under the directory
dirwhich contain the number
dir/**/*.extrecursively matches files under the directory
dirwith the extension
dir/**.extis the same as
dir/**recursively matches all files under the directory
dir(children and their children too)
*d:/will match root directories whose drive ends with
The wildcard paths are considered to be case sensitive. The wildcards doesn't handle specially the
.. path names. It is usually semantically invalid to include them in a wildcard.