# dr-eureka

[![Release](https://img.shields.io/gitlab/v/release/mshepherd%2Fdr-eureka)](https://img.shields.io/gitlab/v/release/mshepherd%2Fdr-eureka)
[![Build status](https://gitlab.com/mshepherd/dr-eureka/badges/main/pipeline.svg)](https://gitlab.com/mshepherd/dr-eureka/-/pipelines/latest)
[![coverage](https://gitlab.com/mshepherd/dr-eureka/badges/main/coverage.svg)](https://coverage_report_placeholde.html)
[![License](https://img.shields.io/gitlab/license/mshepherd/dr-eureka)](https://img.shields.io/gitlab/license/mshepherd/dr-eureka)

Dr Eureka implementation and solver

- **GitLab repository**: <https://gitlab.com/mshepherd/dr-eureka/>
- **Documentation** <https://mshepherd.gitlab.io/dr-eureka/>

## Getting started with your project

### 1. Create a New Repository

First, create a repository on GitLab with the same name as this project, and then run the following commands:

```bash
git init -b main
git add .
git commit -m "init commit"
git remote add origin git@gitlab.com:mshepherd/dr-eureka.git
git push -u origin main
```

### 2. Set Up Your Development Environment

Then, install the environment and the pre-commit hooks with

```bash
make install
```

This will also generate your `uv.lock` file

### 3. Run the pre-commit hooks

Initially, the CI/CD pipeline might be failing due to formatting issues. To resolve those run:

```bash
uv run pre-commit run -a
```

### 4. Commit the changes

Lastly, commit the changes made by the two steps above to your repository.

```bash
git add .
git commit -m 'Fix formatting issues'
git push origin main
```

You are now ready to start development on your project!
The CI/CD pipeline will be triggered when you open a pull request, merge to main, or when you create a new release.

To finalize the set-up for publishing to PyPI, see [here](https://gitlab-uv-templates.gitlab.io/cookiecutter-uv-gitlab/features/publishing/#set-up-for-pypi).
For activating the automatic documentation with MkDocs, see [here](https://gitlab-uv-templates.gitlab.io/cookiecutter-uv-gitlab/features/mkdocs/#enabling-the-documentation-on-gitlab).
To enable the code coverage reports, see [here](https://gitlab-uv-templates.gitlab.io/cookiecutter-uv-gitlab/features/codecov/).

## Releasing a new version

When using GitLab as Registry jump to step 3.

1. Create an API Token on [PyPI](https://pypi.org/).
2. Add the API Token to your projects secrets with the name `PYPI_TOKEN` by visiting [this page](https://gitlab.com/mshepherd/dr-eureka/-/settings/ci_cd#js-cicd-variables-settings).
3. Create a new tag in the form `*.*.*`.
4. Push the new tag to origin.

For more details, see [here](https://gitlab-uv-templates.gitlab.io/cookiecutter-uv-gitlab/features/cicd/#how-to-trigger-a-release).

---

Repository initiated with [gitlab-uv-templates/cookiecutter-uv-gitlab](https://gitlab.com/gitlab-uv-templates/cookiecutter-uv-gitlab).
