# aare_launcher [![Check and Lint](https://gitea.psi.ch/mx/aare_launcher/actions/workflows/check-and-lint.yaml/badge.svg)](https://gitea.psi.ch/mx/aare_launcher/actions?workflow=check-and-lint.yaml) [![Test and Coverage](https://gitea.psi.ch/mx/aare_launcher/actions/workflows/test-and-coverage.yaml/badge.svg)](https://gitea.psi.ch/mx/aare_launcher/actions?workflow=test-and-coverage.yaml) [![License: GPL-3.0](https://img.shields.io/badge/license-GPL--3.0-blue.svg)](LICENSE) CLI/TUI launcher for the AareDAQ server and GUI on MX beamline consoles at PSI. Installed as the `aarel` command. It detects the current beamline and launches the matching application, opens a TUI to pick one, or deploys a new checkout. ## Usage ``` aarel pick # open the TUI to choose what to launch aarel gui # launch the GUI for the detected beamline aarel server # launch the server for the detected beamline ``` Each command has a single-letter alias (`p`, `g`, `s`). `--config ` selects a different config file; it defaults to `data/defaults.json`. ### Launching `gui` and `server` pick their config entry from the detected beamline. Use `--entry ` to launch a different one. ## Development ``` cargo build # build cargo test # run the tests cargo fmt --all # format cargo clippy --all-targets --all-features -- -D warnings # lint ``` Releases are automated with [semantic-release]: merging a PR to `main` derives the next version from the commit history, bumps `Cargo.toml`, tags the release and builds the RPM. > **Commit messages must follow [Conventional Commits].** The release version and > notes are generated from them, so a commit that isn't `feat:`, `fix:`, etc. > produces no release. Use `feat:` for a minor bump, `fix:` for a patch, and a > `feat!:`/`fix!:` (or a `BREAKING CHANGE:` footer) for a major bump. [semantic-release]: https://semantic-release.gitbook.io/ [Conventional Commits]: https://www.conventionalcommits.org/