Skip to content
Open
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
56 changes: 41 additions & 15 deletions profile/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,20 +19,27 @@ and editor integrations. Designed to work for both **InterSystems IRIS** and

| Repo | What it is |
|---|---|
| [`m-cli`](https://github.com/m-dev-tools/m-cli) | The canonical `m <subcommand>` toolchain: `m fmt`, `m lint`, `m test`, `m coverage`, `m doc`, `m doctor`, `m new`, `m run`, `m build`, `m lsp`, plus modernization rules (M-MOD-001..036, 7 lint profiles). |
| [`m-cli`](https://github.com/m-dev-tools/m-cli) | The canonical `m <subcommand>` toolchain: `m fmt`, `m lint`, `m test`, `m coverage`, `m doc`, `m doctor`, `m new`, `m run`, `m build`, `m lsp`, `m plugins`, plus modernization rules (M-MOD-001..036, 7 lint profiles) and an entry-points-based plugin system for out-of-tree subcommands. |
| [`m-cli-extras`](https://github.com/m-dev-tools/m-cli-extras) | Out-of-tree m-cli subcommand plugins. First plugin: `m corpus-stats` (file / line / label / parse-error counts across a directory of `.m` files). Pluggable bucket for niche, opinionated, or third-party-flavored utilities. |

### Test engine

| Repo | What it is |
|---|---|
| [`m-test-engine`](https://github.com/m-dev-tools/m-test-engine) | Minimal YottaDB Docker container (`yottadb/yottadb-base:latest-master` + tail keep-alive) that backs `m test` and `m coverage` runtime. Bind-mounts `$PWD` as `/work`; `m-cli`'s `DockerEngine` transport dispatches via `docker exec`. Replaces vista-meta as the default engine for non-VistA work. |

### Editor support

| Repo | What it is |
|---|---|
| [`tree-sitter-m-vscode`](https://github.com/m-dev-tools/tree-sitter-m-vscode) | VS Code extension — syntax highlighting and language support powered by tree-sitter-m compiled to WASM. Recognises `.m`, `.mac`, `.int` files. |
| [`m-stdlib-vscode`](https://github.com/m-dev-tools/m-stdlib-vscode) | VS Code extension — manifest-driven hover docs, goto-definition, and completion for the `m-stdlib` public surface. |
| [`tree-sitter-m-vscode`](https://github.com/m-dev-tools/tree-sitter-m-vscode) | VS Code extension — syntax highlighting and language support powered by tree-sitter-m compiled to WASM. Recognises `.m`, `.mac`, `.int` files. Spawns m-cli's `m lsp` Language Server when m-cli is installed. |
| [`m-stdlib-vscode`](https://github.com/m-dev-tools/m-stdlib-vscode) | VS Code extension — manifest-driven hover docs, goto-definition, and completion for the `m-stdlib` public surface. Ships a bundled `dist/stdlib-manifest.json` snapshot; works on a stock install with no other repo on disk. |

### Validation data

| Repo | What it is |
|---|---|
| [`m-modern-corpus`](https://github.com/m-dev-tools/m-modern-corpus) | Snapshot collection of modern non-VistA M source from active open-source projects (EWD, mgsql, M-Web-Server, YDBOcto auxiliary, YDBTest). Used as a validation corpus for the parser and lint rules. |
| [`m-modern-corpus`](https://github.com/m-dev-tools/m-modern-corpus) | Snapshot collection of modern non-VistA M source from active open-source projects (EWD, mgsql, M-Web-Server, YDBOcto auxiliary, YDBTest). Default validation corpus for `m lint` rule profiles and parser regression gates. |

## Why this exists

Expand All @@ -50,31 +57,50 @@ stdlib).

## Getting started

A typical first install:
A typical first install of the `m` toolchain (Linux x86_64; pick the
matching wheel URL from the [tree-sitter-m
v0.1.1](https://github.com/m-dev-tools/tree-sitter-m/releases/tag/v0.1.1)
release for other platforms):

```bash
# Foundation: parser + toolchain
git clone https://github.com/m-dev-tools/tree-sitter-m
git clone https://github.com/m-dev-tools/m-cli
pip install ./tree-sitter-m # order matters — m-cli's dep declaration
pip install ./m-cli # needs the tree-sitter-m checkout present
cd m-cli
uv sync --frozen --extra dev # picks up the tree-sitter-m wheel from the
# GitHub release URL pinned in pyproject.toml
# — no sibling tree-sitter-m checkout required

# Verify
m doctor
m --help
.venv/bin/m doctor
.venv/bin/m --help
```

For the test engine (replaces a host YottaDB install):

```bash
git clone https://github.com/m-dev-tools/m-test-engine
make -C m-test-engine up # boots the YDB Docker container; m-cli
# auto-detects via DockerEngine
```

For runtime work on YottaDB, also clone [`m-stdlib`](https://github.com/m-dev-tools/m-stdlib).
For extra subcommands beyond core, install
[`m-cli-extras`](https://github.com/m-dev-tools/m-cli-extras) alongside
m-cli — its plugins register via the `m_cli.plugins` entry-point group
and surface as `m <name>` subcommands.

For VS Code, install the marketplace extensions (currently published under
the personal `rafael5` publisher; rebranding to a `m-dev-tools` Marketplace
publisher is on the roadmap).

## Licensing

Most repos are **AGPL-3.0**, the two VS Code extensions are **MIT** to
align with the broader extension ecosystem, and `m-modern-corpus` carries
**per-subdirectory upstream licenses** (see its `LICENSES.md`). A migrated
repo's license is the canonical statement; this README is summary only.
Of the nine repos in the org, seven are **AGPL-3.0** (`tree-sitter-m`,
`m-standard`, `m-stdlib`, `m-cli`, `m-cli-extras`, `m-test-engine`,
plus this `.github` org-meta repo); the two VS Code extensions are
**MIT** to align with the broader extension ecosystem; `m-modern-corpus`
carries **per-subdirectory upstream licenses** (see its `LICENSES.md`).
A repo's own LICENSE file is the canonical statement; this README is
summary only.

## Audience

Expand Down