/elan

A Lean version manager

Primary LanguageRustApache License 2.0Apache-2.0

elan: Lean version manager

LicenseWindowsLinux / OS X

elan is a small tool for managing your installations of the Lean theorem prover. It places lean and leanpkg binaries in your PATH that automatically select and, if necessary, download the Lean version described in the lean_version field of your project's leanpkg.toml. You can also install, select, run, and uninstall Lean versions manually using the commands of the elan executable.

~/my/package $ cat leanpkg.toml | grep lean_version
lean_version = "nightly-2018-04-10"
~/my/package $ leanpkg -v
info: downloading component 'lean'
 14.6 MiB /  14.6 MiB (100 %)   2.2 MiB/s ETA:   0 s
info: installing component 'lean'
Lean package manager, version nightly-2018-04-10
[...]
~/my/package $ elan show
installed toolchains
--------------------

stable
nightly-2018-04-06
nightly-2018-04-10
master

active toolchain
----------------

nightly-2018-04-10 (overridden by '/home/me/my/package/leanpkg.toml')
Lean (version 3.3.1, nightly-2018-04-10, commit d36b859c6579, Release)

Installation

Linux/OS X/Cygwin/MSYS2/git bash/...: Run the following command in a terminal and follow the printed instructions:

curl https://raw.githubusercontent.com/Kha/elan/master/elan-init.sh -sSf | sh

Alternatively, any supported platform: Grab the latest release for your platform, unpack it, run it in a terminal, and follow the printed instructions.

Prerequisites

On some systems elan will not work out of the box:

  • Windows 10
    • You'll need a unix-like terminal.
      • Recommended: "git bash", available via Git for Windows works well, or
      • the terminal from MSYS2, and then run pacman -S unzip git
  • macOS: Install Homebrew, then run brew install gmp coreutils. (gmp is required by lean, coreutils is required by leanpkg)

Implementation

elan is basically a fork of rustup. Apart from new features and adaptions to the Lean infrastructure, these are the basic changes to the original code:

  • Replaced every mention of rustup with elan, cargo with leanpkg, and rust(c) with lean
  • Removed Windows installer... for now?
  • Merged CARGO_HOME and RUSTUP_HOME
  • Removed options to configure host triple