Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
109 changes: 80 additions & 29 deletions mise.toml
Original file line number Diff line number Diff line change
@@ -1,57 +1,108 @@
# SPDX-License-Identifier: CC-BY-SA-4.0
#
# Every entry below was checked against `mise registry` before being written.
# The previous version named 13 tools that do not exist in the registry, so
# mise emitted ~25 lines of warnings on EVERY shell entry in this repo while
# installing none of them.

[tools]
# Language runtimes
# ---------------------------------------------------------------------------
# Primary languages for this repo.
#
# erlang + elixir were MISSING entirely, despite Elixir being the language of
# lib/ and the 71 test files. Pinned to the same versions .github/workflows/
# tests.yml gives erlef/setup-beam, so a local `mix test` runs on the same
# toolchain as CI rather than on whatever the developer happens to have.
# ---------------------------------------------------------------------------
erlang = "27.0"
elixir = "1.17"
rust = "latest"
zig = "latest"

# ---------------------------------------------------------------------------
# Secondary runtimes retained from the previous file.
# ---------------------------------------------------------------------------
node = "latest"
python = "latest"
rust = "latest"
go = "latest"
zig = "latest"
java = "latest"
bun = "latest"
denojs = "latest"
deno = "latest" # was `denojs` — not a registry name

# Package managers
# ---------------------------------------------------------------------------
# Package managers / task runner
# ---------------------------------------------------------------------------
npm = "latest"
yarn = "latest"
pnpm = "latest"
pip = "latest"
cargo = "latest"
go-task = "latest"
just = "latest" # the actual task runner for this repo (see Justfile)

# Formatting & Linting
gofmt = "latest"
# ---------------------------------------------------------------------------
# Formatting & linting
# ---------------------------------------------------------------------------
black = "latest"
isort = "latest"
ruff = "latest"
prettier = "latest"
shfmt = "latest"
stylua = "latest"

# ---------------------------------------------------------------------------
# Build tools
# ---------------------------------------------------------------------------
cmake = "latest"
make = "latest"
ninja = "latest"

# Shell tools
git = "latest"
gnu-sed = "latest"
gnu-tar = "latest"
gnu-grep = "latest"

# Testing
vitest = "latest"
pytest = "latest"
jest = "latest"
# ---------------------------------------------------------------------------
# REMOVED — none of these resolve in the mise registry, so they installed
# nothing and only produced warnings. Grouped by why they were wrong:
#
# Already provided by a tool that IS listed above:
# cargo -> ships with `rust`
# gofmt -> ships with `go`
# pip -> ships with `python`
#
# Project-level dependencies, not system tools. These belong in
# package.json / pyproject.toml / mix.exs, not in a toolchain manager:
# vitest, jest, pytest, isort
#
# Task runner that never installed:
# go-task -> not a registry name. NB the bare name `task` does not work
# either: `mise registry` LISTS it as `aqua:go-task/task`, but resolving
# `task@latest` still fails. Appearing in `mise registry` output is not
# sufficient to conclude a name resolves — check with `mise ls-remote`.
# Dropped entirely; this repo drives everything through the Justfile, so
# `just` is listed above instead.
#
# Base system binaries that mise should not be shadowing on Linux:
# git, gnu-sed, gnu-grep, gnu-tar
#
# If a GNU-vs-BSD coreutils difference ever actually bites on macOS, add
# `coreutils` (which does exist in the registry) rather than these names.
# ---------------------------------------------------------------------------

[env]
# Common environment variables
NODE_ENV = "development"
PYTHONDONTWRITEBYTECODE = "1"
PYTHONUNBUFFERED = "1"

# Task runner alias
[alias]
task = "go-task"
build = "cargo build --release || npm run build || go build"
test = "cargo test || npm test || go test ./..."
lint = "ruff check . || prettier --check . || black --check ."
fmt = "ruff format . || prettier --write . || black ."
# ---------------------------------------------------------------------------
# REMOVED — an `[alias]` section holding what were clearly meant to be tasks:
#
# [alias]
# task = "go-task"
# build = "cargo build --release || npm run build || go build"
# test = "cargo test || npm test || go test ./..."
# lint = "ruff check . || prettier --check . || black --check ."
# fmt = "ruff format . || prettier --write . || black ."
#
# mise's `[alias]` maps an alias to a TOOL PLUGIN — it does not define tasks,
# so none of these ever ran. mise also warns that `[alias]` is deprecated in
# favour of `[tool_alias]`.
#
# They are not re-added as `[tasks]`, because the Justfile already defines
# `build`, `test`, `fmt`, `fmt-check`, `lint`, `doctor` and `heal` properly and
# for the languages this repo actually uses. Two competing task runners with
# the same verb names — one of which silently falls through `||` chains to a
# different language's build — is worse than one. Use `just <recipe>`.
# ---------------------------------------------------------------------------
Loading