# Elide Toolchain

> Run, build, test, format and package projects with one binary.

Elide runs source files directly. Add an `elide.pkl` manifest for dependencies, builds, tests and artifacts.

## Start with a source file

The file extension picks the language:

```bash
elide app.js
elide app.ts
elide app.py
```

Explicit forms:

```bash
elide run app.ts
elide python app.py
```

## Common workflows

| Task | Command | Notes |
| --- | --- | --- |
| Run JavaScript or TypeScript | `elide run app.ts` | Types are stripped. |
| Run Python (experimental) | `elide python app.py` | Needs `elide setup python`. |
| Compile Java | `elide javac -- -d out Hello.java` | |
| Compile Kotlin | `elide kotlinc -- -d out Hello.kt` | |
| Format Java and Kotlin | `elide format -- src` | `-n` after `--` checks only. |
| Install dependencies | `elide install` | Maven by default; `--ecosystems=npm` for npm. |
| Build a project | `elide build` | Needs `elide.pkl`. |
| Run tests | `elide test` | JVM tests need `elide.pkl`. |

<img src="https://elide.help/assets/demos/project-build.gif" alt="Building and running a Kotlin project with Elide" width="1591" height="910" loading="lazy" decoding="async" class="rounded-lg border border-border my-6 w-full" />

## Direct tools

Elide's options go before `--`; the wrapped tool's go after:

```bash
elide javac -- -d out Hello.java
elide kotlinc -- -d out Hello.kt
elide jar -- --create --file app.jar -C out .
elide mvn -- package
```

Wrapped tools: `java`, `javac`, `javap`, `jdeps`, `javadoc`, `jar`, `javaformat`, `kotlinc`, `ktfmt`,
`native-image`, `mvn`. `elide <tool> --help` shows Elide's options and how to show the tool's own help.

## Project-aware commands

```pkl
amends "elide:project.pkl"

name = "my-project"
```

```bash
elide install
elide build
elide test
elide run
```

All take `-p PATH` (project directory) and `-f NAME[=VALUE]` ([build flags](https://elide.help/docs/toolchain/build-flags)).
`elide help options` lists every global flag. Next: [Elide Projects](https://elide.help/docs/projects).
