> `cargo-eosiocontract` is a CLI tool which helps you develop EOS smart contracts.
## Installation
* Step 1: `rustup component add rust-src`.
* Step 2: Install `binaryen` in a version >= 99:
* [Debian/Ubuntu](https://tracker.debian.org/pkg/binaryen): `apt-get install binaryen`
* [Homebrew](https://formulae.brew.sh/formula/binaryen): `brew install binaryen`
* [Arch Linux](https://archlinux.org/packages/community/x86_64/binaryen/): `pacman -S binaryen`
* Windows: [binary releases are available](https://github.com/WebAssembly/binaryen/releases)
There's only an old version in your distributions package manager? Just use a
[binary release](https://github.com/WebAssembly/binaryen/releases).
* Step 3: `cargo install --force cargo-eosiocontract`.
## Usage
You can always use `cargo eosiocontract help` to print information on available
commands and their usage.
For each command there is also a `--help` flag with info on additional parameters,
e.g. `cargo eosiocontract new --help`.
##### `cargo eosiocontract new my_contract`
Creates an initial smart contract with some scaffolding code into a new
folder `my_contract` .
The contract contains the source code for the [`Flipper`](https://github.com/paritytech/ink/blob/master/examples/flipper/lib.rs)
contract, which is about the simplest "smart" contract you can build ‒ a `bool` which gets flipped
from `true` to `false` through the `flip()` function.
##### `cargo +nightly contract build`
Compiles the contract into optimized WebAssembly bytecode, generates metadata for it,
and bundles both together in a `.contract` file, which you can use for
deploying the contract on-chain.
`cargo eosiocontract build` must be run using the `nightly` toolchain. If you have
[`rustup`](https://github.com/rust-lang/rustup) installed, the simplest way to
do so is `cargo +nightly contract build`.
To avoid having to always add `+nightly` you can also set `nightly` as the default
toolchain of a directory by executing `rustup override set nightly` in it.
##### `cargo eosiocontract check`
Checks that the code builds as WebAssembly. This command does not output any `.contract`
artifact to the `target/` directory.
## License
The entire code within this repository is licensed under the [GPLv3](LICENSE).