Tuist for Elixir

Package skeleton for the future Tuist integration with Mix and ExUnit. Build instrumentation, test reporting, uploading, and dashboard integration are not implemented yet.

Development

Requires Elixir 1.18 or later. From tuist_ex/:

mix deps.get
mix format --check-formatted
mix compile --warnings-as-errors
mix test --warnings-as-errors
mix hex.build
mix docs --warnings-as-errors

Quokka is configured as a formatter plugin. mix format applies its fixes; mix format --check-formatted enforces them in automated checks. Mimic is available for test mocks. Register modules with Mimic.copy/1 in test/test_helper.exs as tests are added. The skeleton intentionally contains no implementation modules or test cases.

Automated checks and releases

The check workflow runs compilation, documentation, tests, formatting, and package assembly as separate jobs. Compilation checks Elixir 1.18 and the repository's current Elixir version; the other jobs use the current version.

The tuist-ex release component uses tuist-ex@ tags and scoped commits such as feat(tuist-ex): add build instrumentation. On main, the release workflow checks for a version bump, runs the same validation, publishes the package and documentation to Hex, and creates a GitHub release. Publication is serialized and never cancelled mid-release. If package publication succeeds but the GitHub release fails, a retry verifies the published package contents and resumes documentation and release creation without replacing the package. Manual releases are restricted to main.

The release workflow sets the package version from the shared release checker; the version in mix.exs is the development baseline. Release notes are generated from scoped commits using cliff.toml.

Publication reuses the repository's HEX_API_KEY secret, which also publishes Noora. Its Hex account must be the intended owner of tuist_ex and the key must have package publishing permission. The first publication requires the package name to be available. TUIST_RELEASE_GITHUB_TOKEN is used for GitHub releases when available, with the workflow token as the fallback.