oxide-cli 0.7.1

⚡ Lightning-fast project scaffolding tool for modern JavaScript/TypeScript development
Documentation
# Oxide

Oxide is a Rust CLI for scaffolding JavaScript and TypeScript projects from remote Oxide templates and extending them with project addons.

It supports:

- creating a new project from a template
- caching templates locally and skipping unchanged downloads
- authenticating against the Oxide service
- publishing GitHub repositories as Oxide templates
- installing cached addons and running addon commands inside a project

## Installation

### Quick install

Linux and macOS:

```bash
curl -sSL https://raw.githubusercontent.com/oxide-cli/oxide/main/install.sh | bash
```

Windows PowerShell:

```powershell
irm https://raw.githubusercontent.com/oxide-cli/oxide/main/install.ps1 | iex
```

Unix installers place the `oxide` binary in `~/.local/bin`. Cargo installs it in `~/.cargo/bin`. Make sure the relevant directory is in your `PATH`.

### Install with npm

```bash
npm install -g @maksym-zhuk/oxide-cli
```

The npm package downloads the matching prebuilt Oxide binary during `postinstall`.

### Install with cargo

```bash
cargo install oxide-cli
```

### Manual install from GitHub Releases

Download the latest release artifact for your platform:

- [Linux x86_64]https://github.com/oxide-cli/oxide/releases/latest/download/oxide-linux-x86_64.tar.gz
- [Linux ARM64]https://github.com/oxide-cli/oxide/releases/latest/download/oxide-linux-aarch64.tar.gz
- [macOS Apple Silicon]https://github.com/oxide-cli/oxide/releases/latest/download/oxide-macos-aarch64.tar.gz
- [Windows x86_64]https://github.com/oxide-cli/oxide/releases/latest/download/oxide-windows-x86_64.zip

## Getting started

Most remote operations require authentication first:

```bash
oxide login
```

Create a new project from a template:

```bash
oxide new my-app react-vite-ts
```

If the template is not cached yet, Oxide downloads it automatically before generating the project.

## Command overview

Top-level commands:

```text
oxide new <NAME> <TEMPLATE_NAME>
oxide template <COMMAND>
oxide login
oxide logout
oxide account
oxide addon <COMMAND>
oxide <ADDON_ID> <COMMAND>
```

Template management:

```text
oxide template install <TEMPLATE_NAME>
oxide template list
oxide template remove <TEMPLATE_NAME>
oxide template publish <GITHUB_REPOSITORY_URL>
```

Addon management:

```text
oxide addon install <ADDON_ID>
oxide addon list
oxide addon remove <ADDON_ID>
```

Addon execution:

```text
oxide <ADDON_ID> <COMMAND>
```

Example:

```bash
oxide addon install drizzle
cd my-app
oxide drizzle init
```

Aliases:

- `oxide n ...` for `oxide new ...`
- `oxide t ...` for `oxide template ...`

## Common workflows

Install or refresh a template in the local cache:

```bash
oxide template install react-vite-ts
```

List cached templates:

```bash
oxide template list
```

Remove a cached template:

```bash
oxide template remove react-vite-ts
```

Show the authenticated account:

```bash
oxide account
```

Publish a GitHub repository as a template:

```bash
oxide template publish https://github.com/owner/repo
```

Install an addon:

```bash
oxide addon install drizzle
```

List installed addons:

```bash
oxide addon list
```

Remove a cached addon:

```bash
oxide addon remove drizzle
```

## Local data and generated files

Oxide stores local state under `~/.oxide/`:

- cached templates in `~/.oxide/cache/templates`
- cached addons in `~/.oxide/cache/addons`
- template cache index in `~/.oxide/cache/templates/oxide-templates.json`
- addon cache index in `~/.oxide/cache/addons/oxide-addons.json`
- authentication data in `~/.oxide/auth.json`

When addon commands run inside a project, Oxide records execution state in `oxide.lock` in the project root.

## Templates

Published templates are expected to include an `oxide.template.json` manifest in the template root. Oxide uses that manifest to track template metadata such as template name, version, source repository, and whether the template is official.

Template files ending with `.tera` are rendered during project generation and written without the `.tera` suffix.

Available template variables:

- `project_name`
- `project_name_kebab`
- `project_name_snake`

## Addons

Installed addons are expected to include an `oxide.addon.json` manifest. Oxide uses addon manifests to define:

- user inputs
- project detection rules
- command variants
- file modification steps such as create, copy, inject, replace, append, delete, rename, and move

## Development

Run the CLI locally:

```bash
cargo run -- --help
```

Run tests:

```bash
cargo test
```

## License

Licensed under either of these:

- MIT license ([LICENSE-MIT]LICENSE-MIT)
- Apache License 2.0 ([LICENSE-Apache]LICENSE-Apache)