ecformat 0.1.0

command line tool to keep files correct in respect of your EditorConfig
<!--
SPDX-FileCopyrightText: Contributors to ecformat project <https://codeberg.org/BaumiCoder/ecformat>

SPDX-License-Identifier: BlueOak-1.0.0
-->
# Development

## Environment

For working on the ecformat project the following tools have to be installed:

- [Rust]https://www.rust-lang.org/tools/install - Tool chain for the Rust programming language
- [just]https://just.systems/man/en/prerequisites.html - A command runner, see `just -l` for available commands
- [pre-commit]https://pre-commit.com/#install - Manage git commit hooks
    and installs additional linters to run.
    Add the hooks of the repository with `pre-commit install`
- [REUSE]https://git.fsfe.org/reuse/tool#install (optional) - For adding
    license information to files (see `just` commands `annotate_*`).
    Copying the header (or `.license` file) from another file also works.

You can check your local environment by running all linters with `just lint`.

The recommended editor for the project is [VSCodium](https://vscodium.com)
for which the repository contains extension recommendations and settings.
If you prefer any other editor or IDE for Rust, it should also work.

## Release management

The issues for a release and the related pull requests are bundled
in a [milestone](https://codeberg.org/BaumiCoder/ecformat/milestones),
which is named in the schemata `Version x.y.z`.
The version numbers should follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html)
and if the number for the next release have to change the milestone name will be updated.

Before a release can be created, every issue in the related milestone have to be closed.
To create a release with CI a tag needs to be pushed on the main branch.
This tag has to be named `vx.y.z` for the version `x.y.z` as set in the `Cargo.toml`.
The tag message will be part of the release description,
which will also link to the [packages](https://codeberg.org/BaumiCoder/ecformat/packages)
of the version and the version on other, central, package repositories.
The description of the pull requests in the milestone will be linked,
to be kind of a changelog for the version.

Steps to create a release for version `x.y.z`
when milestone `Version x.y.z` has not open issue anymore:

1. Switch to the `main` branch
2. Set the version in the `Cargo.toml` to `x.y.z` and commit this change
3. `git tag -a vx.y.z` and give a short summary about the version in the message
4. `git push --follow-tags` to trigger CI - **ATTENTION:** Versions cannot be removed from some package repositories (like crates.io)
5. Wait for the [CI]https://codeberg.org/BaumiCoder/ecformat/actions to complete
6. Check if all links the description of the created [release]https://codeberg.org/BaumiCoder/ecformat/releases are working