Setup · installation

Installation

Install the Curie binary, keep it up to date, and configure shell completions.

Prerequisites

Install via Cargo

Curie is published on crates.io. Cargo pulls the sources, builds a release binary, and drops it on your PATH:

shell
$ cargo install curie-build
$ curie --version
curie 0.6.0

Upgrading

Re-run the install command with --force to upgrade to the latest release. To pin to a specific version, pass --version:

shell
$ cargo install curie-build --force
$ cargo install curie-build --version 0.5.0

Build from source

Clone the repository and install from the workspace. This is useful when contributing to Curie or testing unreleased changes:

shell
$ git clone https://github.com/atteo/curie-build.git
$ cd curie-build
$ cargo install --path curie-build

Shell completions

Run curie setup to automatically detect your shell and install the matching completion script:

shell
$ curie setup
  Shell           fish
  Downloading     https://raw.githubusercontent.com/atteo/curie-build/<commit>/completions/curie.fish
  Installed       /home/you/.config/fish/completions/curie.fish
  Open a new terminal, or run: source /home/you/.config/fish/completions/curie.fish

The script is downloaded at the exact commit matching your installed binary, so it always reflects the correct subcommands and flags. Override shell detection with --shell:

shell
$ curie setup --shell zsh

Alternatively, copy the scripts manually from the completions/ directory of the repository:

fish (manual)

fish
$ cp completions/curie.fish ~/.config/fish/completions/

bash (manual)

bash
$ cp completions/curie.bash ~/.local/share/bash-completion/completions/curie

zsh (manual)

zsh
$ mkdir -p ~/.zsh/completions
$ cp completions/curie.zsh ~/.zsh/completions/_curie

Add to ~/.zshrc if not already present, then open a new terminal:

~/.zshrc
fpath=(~/.zsh/completions $fpath)
autoload -Uz compinit && compinit

Creating a project manually

The scaffolding commands (curie new, curie init) are the recommended way to start a project. If you prefer to lay out files by hand, Curie expects this structure:

tree
hello/
├── Curie.toml
└── src/
    └── com.example/
        └── Hello.java

The flat-package layout (src/com.example/...) keeps the source tree shallow — the directory name is the package. Maven-style layout (src/main/java/com/example/) is equally supported; both can coexist in the same project.

Curie.toml
[application]
name      = "hello"
version   = "0.1.0"
mainClass = "com.example.Hello"
src/com.example/Hello.java
package com.example;

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello, Curie.");
    }
}