CHANGELOG.md

# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

## [v0.2.1](https://github.com/sportradar/elixir-workspace/tree/workspace/v0.2.0) (2025-03-14)

* Allow having multiple workspaces under the same git repo.

## [v0.2.0](https://github.com/sportradar/elixir-workspace/tree/workspace/v0.2.0) (2025-02-07)

**This version requires at least elixir v1.16**

### Added

* `workspace.run`: support specifying execution order through the `--option` flag.

  Till now `workspace.run` was executing the tasks in alphabetical order. A new `--order`
  cli option is added that support setting it to `preorder`. This will perform a
  depth first search on the project graph and return the projects in post-order, e.g.
  outer leaves are returned first respecting the topology of your workspace.

* `workspace.run`: support filtering by root paths through the `--path` flag.

* `workspace.run`: support filtering by `--dependency` and `--dependent` similarly
to `workspace.list`.

* Support passing most repeated CLI arguments as a comma separated list, for
  example you can now do:

  ```bash
  $ mix workspace.run -t format -p p1,p2,p3
  ```

* `workspace.check`: support running specific checks through the `--check` option
* `workspace.check`: support grouping checks.

  You can now configure the group of each check in your workspace config, with the
  `group` option. Checks with the same group will be printed together on the CLI output,
  under a group header.

  Additionally you can specify `groups_for_checks` with which you can modify the default
  look and feel of each check group, for example:

  ```elixir
  groups_for_checks: [
    package: [
      style: [:light_blue_background, :black],
      title: " 📦 Package checks"
    ],
    documentation: [
      style: [:yellow_background, :black],
      title: " 📚 Documentation checks"
    ]
  ]
  ```

* `workspace.list`: support filtering by root paths through the `--path` flag.

* Promoted helper testing utilities to a `Workspace.Test` module.

### Deprecated

* Check definitions without an `id` is deprecated. ids can be used for filtering
  the checks that will be executed.

### Removed

* `Workspace.Utils.Path.relative_to/2` has been removed. After requiring at least
elixir 1.16 you can now use `Path.relative_to/3` instead with the `force: true`
option.

### Fixed

* Escape base and head references in git commands.

* `workspace.test.coverage`: respect `ignore_modules` from coverage report

## [v0.1.2](https://github.com/sportradar/elixir-workspace/tree/workspace/v0.1.2) (2024-09-30)

### Added

* `workspace.list`: support filtering by dependents through the `--dependent` flag. You
can now list all projects that are direct dependencies of a given project:

  ```bash
  mix workspace.list --dependent my_project
  ```

* `workspace.list`: support filtering by dependencies through the `--dependency`. Using this
flag you can list only those projects that have the given direct dependency:

  ```bash
  mix workspace.list --dependency a_project
  ```

* `workspace.list`: add `--maintainer` for filtering projects with the given maintainer

## [v0.1.1](https://github.com/sportradar/elixir-workspace/tree/workspace/v0.1.1) (2024-07-04)

### Added

* `workspace.run`: add `--export` option for exporting execution results as a `json`
file
* `workspace.run`: log execution time per project
* `workspace.list`: add `--relative-paths` option for exporting relative paths with
respect to the workspace path instead of absolute paths (the default one).

### Removed

* `workspace.run`: remove `--execution-mode` flag

## [v0.1.0](https://github.com/sportradar/elixir-workspace/tree/workspace/v0.1.0) (2024-05-13)

Initial release.