Skip to content

Commit

Permalink
docs: installation guide (#62)
Browse files Browse the repository at this point in the history
  • Loading branch information
cold-briu authored Oct 5, 2023
1 parent 00420b8 commit 6956e80
Show file tree
Hide file tree
Showing 12 changed files with 693 additions and 428 deletions.
2 changes: 2 additions & 0 deletions contentlayer.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ const includeDirs = [
'docs/fuel-graphql-docs/docs',
'docs/fuels-wallet/packages/docs/docs',
'docs/guides/docs',
// 'docs/fuel-nix/book/src',
// 'docs/about-fuel',
];

Expand All @@ -73,6 +74,7 @@ const excludeDirs = [
'docs/fuels-rs/docs/src/SUMMARY.md',
'docs/fuel-indexer/docs/src/SUMMARY.md',
'docs/fuel-specs/src/SUMMARY.md',
// 'docs/fuel-nix/book/src/SUMMARY.md',
];

export default makeSource({
Expand Down
32 changes: 18 additions & 14 deletions docs/guides/docs/guides.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
{
"quickstart": {
"title": "Developer Quickstart",
"description": "Get started by building a counter dApp in Fuel"
},
"running_a_node": {
"title": "Running a Node",
"description": "Run a local Fuel node"
},
"testnet_migration": {
"title": "Testnet Migration",
"description": "Sway and SDK's breaking changes reference"
}
}
{
"installation": {
"title": "Toolchain Installation",
"description": "Install the Fuel toolchain and binaries."
},
"quickstart": {
"title": "Developer Quickstart",
"description": "Get started by building a counter dApp in Fuel."
},
"running_a_node": {
"title": "Running a Node",
"description": "Run a local Fuel node."
},
"testnet_migration": {
"title": "Testnet Migration",
"description": "Sway and SDK's breaking changes reference."
}
}
73 changes: 73 additions & 0 deletions docs/guides/docs/installation/codespace.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
---
title: Fuel Github Codespace
category: Installation
parent:
label: Guides
link: /guides
---

# Github Codespace

### Introduction

The way to think about [Github Codespaces](https://github.com/features/codespaces) is essentially VSCode in a browser. It’s a remote development environment that is extremely easy to spin up. While not all VS Code plugins are supported, the Sway LSP plugin is supported and works out of the box.

### How to set up for a new repo

1. Create a devcontainer.json file. The easiest way is by navigating to the repo and clicking Code β†’ … β†’ Configure dev container

<Box.Centered>
![dev container walkthrough](/images/dev-container.gif)
</Box.Centered>

2. Edit the file to include the following features:

```json
"features": {
"ghcr.io/devcontainers/features/common-utils:1": {},
"ghcr.io/FuelLabs/devcontainer-features/fuelup:1.0.1": {},
}
```

3. Add any plugins that you want to be installed for this repo under β€œcustomizations”.

```json
"customizations": {
"vscode": {
"extensions": [
"fuellabs.sway-vscode-plugin"
]
}
}
```

Here are examples that include the Sway LSP plugin.

3.1. [https://github.com/FuelLabs/sway/blob/master/.devcontainer/devcontainer.json](https://github.com/FuelLabs/sway/blob/master/.devcontainer/devcontainer.json)

3.2. [https://github.com/FuelLabs/quickstart/blob/master/.devcontainer/devcontainer.json](https://github.com/FuelLabs/quickstart/blob/master/.devcontainer/devcontainer.json)

### How to start a codespace

1. Navigate to the repo that has Github Codespaces configured.
2. Choose Code β†’ Create codespace on master

<Box.Centered>
![Create codespace walkthrough](/images/create-codespace.gif)
</Box.Centered>

3. This will open a new tab with your codespace. It can take several minutes to start up.

3.1. You now have a fully functional remote dev environment with the Fuel toolchain installed! You can use `forc` to build and deploy Sway code, or `fuelup` to manage the toolchain version. You also have the Sway LSP plugin with full feature support for Sway, like syntax highlighting, hover docs, go-to definitions, etc.

3.2. Note: if you are working on a large repository and find the codespace is running slow, you can configure it to use a larger instance by clicking Code β†’ … β†’ change machine type on a running instance, or starting a new instance with Code β†’ … β†’ New with options.

### Pricing & billing

You will be required to enter billing information, however there is a substantial free tier.

## What's next?

Now you are ready to start building with Fuel.

πŸ‘‰ Check out the [quickstart guide](/guides/quickstart) to deploy your first smart contract.
210 changes: 210 additions & 0 deletions docs/guides/docs/installation/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,210 @@
---
title: Installation
category: Installation
parent:
label: Guides
link: /guides
---

# Toolchain installation

This guide will help you to install the Fuel toolchain binaries and prerequisites.

This guide covers the following topics:
1. [Installing Rust](#installing-rust)
2. [Installing the Fuel toolchain using `fuelup`](#installing-the-fuel-toolchain-using-fuelup)
3. [Setting up a default toolchain](#setting-up-a-default-toolchain)

## Installing Rust

The Fuel toolchain is built on top of the Rust programming language. To install Rust, you can use the `rustup` tool.

Run the following command in your shell; this downloads and runs rustup-init.sh, which in turn downloads and runs the correct version of the `rustup-init` executable for your platform.

```console
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```

Check the official Rust documentation to get more information on [installing the Rust toolchain](https://www.rust-lang.org/tools/install).

## Installing the Fuel toolchain using fuelup

`fuelup` is the official package manager for Fuel that installs the Fuel toolchain
from the official release channels, enabling you to easily switch between different
toolchains and keep them updated. It makes building and maintaining Sway applications simpler with [`forc`](docs/forc) and [`fuel-core`](https://github.com/FuelLabs/fuel-core) for common platforms.

> πŸ’‘ Check out the [fuelup docs](docs/fuelup) for more information.

### Running fuelup-init

To install the Fuel toolchain, you'll use the `fuelup-init` script. This will install `forc`, `forc-client`, `forc-fmt`, `forc-lsp`, `forc-wallet` as well as `fuel-core` in `~/.fuelup/bin`.

πŸ‘‰ Just paste the following line in your terminal and press _Enter_.

```sh
curl --proto '=https' --tlsv1.2 -sSf https://install.fuel.network/fuelup-init.sh | sh
```

> 🚧 Be aware that currently we do not natively support Windows. If you wish to use `fuelup` on Windows, please use Windows Subsystem for Linux.
### Setup PATH

Once the script is downloaded, it will be executed automatically. The `fuelup-init` script will prompt you with the question below:

```sh
fuelup uses "/home/username/.fuelup" as its home directory to manage the Fuel toolchain, and will install binaries there.

To use the toolchain, you will have to configure your PATH, which tells your machine where to locate `fuelup` and the Fuel toolchain.

If permitted, fuelup-init will configure your PATH for you by running the following:

echo "export PATH="$HOME/.fuelup/bin:$PATH"" >> /home/username/.bashrc

Would you like fuelup-init to modify your PATH variable for you? (N/y)
```

πŸ‘‰ Press the `Y` key in your terminal and press _Enter_ to modify your PATH.

### Checking the installation

After allowing the `fuelup-init` script to modify your `PATH` variable, you will see a lot of information about packages being downloaded and installed. If everything goes as expected you will see the following message:

```sh
The Fuel toolchain is installed and up to date

fuelup 0.19.5 has been installed in /home/username/.fuelup/bin.
To fetch the latest toolchain containing the forc and fuel-core binaries, run 'fuelup toolchain install latest'.
To generate completions for your shell, run 'fuelup completions --shell=SHELL'.
```

πŸ‘‰ Use `fuelup --version` any time to check which version of the package you are using.

```sh
fuelup --version
```
That will output your current `fuelup` version:

```sh
fuelup 0.19.5
```

## Setting up a default toolchain

Just as in [Rust](https://rust-lang.github.io/rustup/concepts/toolchains.html), Fuel supports multiple toolchains. A toolchain is a collection of tools (such as the compiler, lsp, etc).
By default, `fuelup` includes a series of packages tested to work with each other, providing a reliable set of tools.

In this case, we will install the `beta-4` toolchain, which is the stable toolchain compatible with the beta-4 network. For more information on `beta-4` check the [Fuel blog](https://fuel-labs.ghost.io/announcing-beta-4-testnet/) page.

### Updating fuelup

Make sure you have the latest version of `fuelup` so you can access the latest features and have the best performance.

πŸ‘‰ Update `fuelup` by running the following command:

```console
fuelup self update
```
Then you will get an output like this:
```console
Fetching binary from https://github.com/FuelLabs/fuelup/releases/download/v0.19.5/fuelup-0.19.5-aarch64-apple-darwin.tar.gz
Downloading component fuelup without verifying checksum
Unpacking and moving fuelup to /var/folders/tp/0l8zdx9j4s9_n609ykwxl0qw0000gn/T/.tmpiNJQHt
Moving /var/folders/tp/0l8zdx9j4s9_n609ykwxl0qw0000gn/T/.tmpiNJQHt/fuelup to /Users/.fuelup/bin/fuelup
```

### Installing the beta-4 toolchain

The `beta-4` network is the latest Fuel testnet. This includes public infrastructure such as the [Beta-4 faucet](https://faucet-beta-4.fuel.network/) and the [Beta-4 GraphQL endpoint](https://beta-4.fuel.network/playground).

To properly interact with the `beta-4` network it is necessary to use its corresponding toolchain.

πŸ‘‰ Run the following command to install the `beta-4` toolchain:

```console
fuelup toolchain install beta-4
```
If the toolchain was successfully installed, you will see this output:

```sh
The Fuel toolchain is installed and up to date
```

The toolchain was installed correctly, however is not in use yet. Next, you need to configure `fuelup` to use the `beta-4` toolchain as the default.

πŸ‘‰ Set `beta-4` as your default toolchain with the following command:

```console
fuelup default beta-4
```

You will get the following output indicating that you have successfully set `beta-4` as your default toolchain.

```console
default toolchain set to 'beta-4'
```

### Checking your current toolchain

Sometimes you might end up using multiple toolchains at once. Don't worry if you get confused about which toolchain you are using, since you can check your current toolchain anytime.

πŸ‘‰ Run the `fuelup show` command to see the toolchain and the versions of each tool you are using.

```sh
fuelup show
```

This command will give you the following output

```sh
active toolchain
-----------------
beta-4-x86_64-unknown-linux-gnu (default)
forc : 0.45.0
- forc-client
- forc-deploy : 0.45.0
- forc-run : 0.45.0
- forc-doc : 0.45.0
- forc-explore : 0.28.1
- forc-fmt : 0.45.0
- forc-index : 0.20.7
- forc-lsp : 0.45.0
- forc-tx : 0.45.0
- forc-wallet : 0.3.0
fuel-core : 0.20.4
fuel-core-keygen : Error getting version string
fuel-indexer : 0.20.7

fuels versions
---------------
forc : 0.45
forc-wallet : 0.45
```

As you can see, the beta-4 toolchain is active πŸš€

## What's next?

Now you are ready to start building with Fuel.

πŸ‘‰ Check out the [quickstart guide](/guides/quickstart) to deploy your first smart contract.

## Beyond the basics

### Custom toolchains

You can create your own set of specific versions, this is known as 'custom toolchains'.

> πŸ‘‰ Visit the [Fuelup docs](docs/fuelup/concepts/toolchains) to learn how to set up your own custom toolchains.
### Build form source

You can always build the Fuel packages from source.

> πŸ‘‰ Visit the [Fuelup docs](docs/fuelup/install/other) to get more details about other types of installation.
### Github Codespaces

It's always possible to run a development environment in the browser.

> πŸ‘‰ Please visit our guide on [Github Codespaces](guides/installation/codespace) to use the Fuel toolchain in the browser.
1 change: 1 addition & 0 deletions docs/guides/docs/nav.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"menu": ["Quickstart", "Running a Node", "Testnet Migration"],
"installation": ["Fuel Github Codespace"],
"quickstart": ["Building a Smart Contract", "Building a Frontend"],
"running_a_node": ["Running a Local Node", "Running a Beta-4 Node"],
"testnet_migration": ["Beta 4 Testnet Migration"]
Expand Down
Loading

0 comments on commit 6956e80

Please sign in to comment.