make for VS Code
Run a Makefile.py's tasks from the editor: the Run Task
list, an explorer tree, and a Run lens above every @task.
The extension knows nothing about tasks. It runs mk --list --json and draws what comes
back — which is the only honest way to do it, because a task file is Python and nothing
short of running it knows what tasks exist, what they are called, or where they are
written.
What it does
|
|
| Tree |
every task file in the workspace, grouped the way mk --list groups them |
| Lens |
Run / Dry run above each @task, at the line the runner reports |
| Run Task |
every argument-free task, as a type: "mk" task |
| mkrun: Run Task... |
a quick pick that asks for the arguments a task needs |
| mkrun: Doctor / Sync |
mk --doctor and mk --sync, in a terminal |
Three things it deliberately does not do
It never passes -y. A task declared dangerous=True asks before it does the thing,
and that question is the entire safety mechanism — a button that pre-answers it is a
button that restarts a production service from a misclick. Runs land in a terminal, where
the confirmation can be read.
It does nothing in an untrusted workspace. Listing the tasks runs the task file.
There is no read-only path to a listing, so the extension declares
untrustedWorkspaces: false rather than pretending there is.
A click in the tree opens the definition; it does not run. Single-clicking a row is
how people read one, and the rows include whatever that repository called dangerous.
Settings
|
|
mkrun.command |
the command to run (default mk) |
mkrun.codeLens |
show the lens (default true) |
mkrun.exclude |
task files to ignore while searching |
⚠ The command is mk. The distribution is mkrun and the import name is make, but
there is deliberately no make command — it would shadow GNU make on every Unix machine.
If the editor's PATH does not have it (a uv tool install into ~/.local/bin that only
the shell profile adds), set mkrun.command to the absolute path.
Developing
mk ext.test # node --test, including the contract test against the real mk
mk ext.package # build the .vsix
mk ext.install # build it and install it into the local VS Code
src/listing.js and src/command.js hold everything that can be decided without an
editor, and are where the tests are; client.js is the part that needs the vscode
module. Same split as optersoft/kotlin, for the same reason.
MIT OR Apache-2.0.