Workspace.Filtering (Workspace v0.3.1)
View SourceThe workspace filtering logic.
Most workspace tasks support various filtering methods, like excluding specific projects, including only projects with specific tags or with a specific modification status among other.
This module provides all filtering related functionality.
Summary
Functions
Filter the workspace projects based on the given options.
Functions
@spec run(workspace :: Workspace.State.t(), opts :: keyword()) :: Workspace.State.t()
Filter the workspace projects based on the given options.
It will iterate over all projects and wil set the :skip to true if the
project is considered skippable. The decision is made based on the provided
options.
A Workspace.State is returned with the projects updated.
Options
:exclude(list ofatom/0) - a list of projects to be ignored. This has the highest priority, e.g. if the project is in the:ignorelist it is always skipped.:exclude_tags(list oft:Workspace.Project.tag()) - a list of tags to be ignored. Any project that has any of the provided tags will be skipped.:project(list ofatom/0) - a list of projects to consider. If set all projects that are not included in the list are considered skippable.:tags(list oft:Workspace.Project.tag()) - a list of tags to be considered. All projects that do not have at least one the specified tags will be skipped.:paths(list oft:String.t()) - a list of project paths to be considered. Only projects located under any of the provided path will be considered.:dependency(atom/0) - keeps only projects that have the given dependency.:dependent(atom/0) - keeps only dependencies of the given project.:affected(boolean/0) - if set only the affected projects will be included and everything else will be skipped. Defaults tofalse.:modified(boolean/0) - if set only the modified projects will be included. A project is considered modified if any file under the project's root (excluding files in the.gitignore) has changed. Defaults tofalse.:only_roots(boolean/0) - if set only the root projects will be included and everything else will be skipped. Defaults tofalse.:base(String.t/0) - The base git reference for detecting changed files, If not set only working tree changes will be included.:head(String.t/0) - The head git reference for detecting changed files. It is used only if:baseis set.
Filtering order
Notice that projects are filtered using the following precedence:
- Excluded projects (
:excludeor:exclude_tagsoptions set) - Selected projects (
:projector:tagsoption set) - Code status modifiers (
:affected,:modifiedand:only_roots)