From f1ae7405aa65742aa64f6aced4e96960b81223d5 Mon Sep 17 00:00:00 2001 From: Hugo Trentesaux <hugo@trentesaux.fr> Date: Wed, 21 Sep 2022 11:42:14 +0200 Subject: [PATCH] add beginner walkthrough documentation --- README.md | 3 ++ docs/dev/beginner-walkthrough.md | 83 ++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 docs/dev/beginner-walkthrough.md diff --git a/README.md b/README.md index fb065664c..dad66715d 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ - [manual](./docs/api/manual.md) - [runtime-calls](./docs/api/runtime-calls.md) the calls you can submit through the RPC API - [dev](./docs/dev/) + - [beginner-walkthrough](./docs/dev/beginner-walkthrough.md) - [git-conventions](./docs/dev/git-conventions.md) - [launch-a-live-network](./docs/dev/launch-a-live-network.md) - [setup](./docs/dev/setup.md) @@ -102,6 +103,8 @@ docker run -it -p9944:9944 --name duniter-v2s \ ## Contribute +If you are beginner in Rust and need a well guided tutorial, follow the [beginner walkthrough](./docs/dev/beginner-walkthrough.md) + Before any contribution, please read carefully the [CONTRIBUTING](./CONTRIBUTING.md) file and our [git conventions](./docs/dev/git-conventions.md). ### Setup your dev environment diff --git a/docs/dev/beginner-walkthrough.md b/docs/dev/beginner-walkthrough.md new file mode 100644 index 000000000..9dc2a944c --- /dev/null +++ b/docs/dev/beginner-walkthrough.md @@ -0,0 +1,83 @@ +# Beginner walkthrough + +This is a beginner tutorial for those who do not have a previous experience with Rust ecosystem or need guidance to get familiar with Duniter v2s project. You'll need a development machine with an internet connexion, at least 20 Go of free storage, and an hour or two depending on your computing power. + +This walkthrough is based on the following video (french), don't hesitate to make an english voicecover if you feel so. + +[](https://tube.p2p.legal/w/n4TXxQ4SqxzpHPY4TNMXFu) + +> video walkthrough on peertube https://tube.p2p.legal/w/n4TXxQ4SqxzpHPY4TNMXFu + +## Requirements + +If you are a debian based system, you can install the system requirements with: + +```bash +sudo apt install cmake pkg-config libssl-dev git build-essential clang libclang-dev curl +``` + +Else, look at the corresponding section in the [system setup documentation](./setup.md). + +Rust recommended installation method is through the rustup script that you can run with: + +```bash +curl https://sh.rustup.rs -sSf | sh +``` + +If you reopen your terminal, it will give you access to the `rustup`, `rustc` and `cargo` commands. You can then install the required Rust toolchains with: + +```bash +rustup default stable +rustup update nightly +rustup update stable +rustup target add wasm32-unknown-unknown --toolchain nightly +``` + +This can take about one or two minutes. + +## Build project + +After cloning wherever you want the `duniter-v2s` repo with: + +```bash +git clone https://git.duniter.org/nodes/rust/duniter-v2s.git +``` + +you can go to the root folder and build the substrate client with: + +```bash +cargo build +``` + +This will take about 2 minutes to download dependencies and 12 minutes to build in debug mode. At this point, you only built the substrate client, a kind of "shell" in which lies the runtime. You can build the runtime and run a local blockchain with: + +```bash +cargo run -- --dev --tmp +``` + +Which should take about 1 minute. When you see the logs, the blockchain is running and you can connect to it with polkadotjs app: [https://polkadot.js.org/apps/?rpc=ws://127.0.0.1:9944](https://polkadot.js.org/apps/?rpc=ws%3A%2F%2F127.0.0.1%3A9944). You should see blocks being added every 6 seconds. You can use Alice, Bob, etc test accounts to submit extrinsics. + +## Autocompletion + +When using Duniter commands, you will benefit a lot from commands autocompletion. This can be achieved by following [autocompletion documentation](../user/autocompletion.md) for you shell. If you use bash the commands are: + +```bash +# create local dir to store completion script +mkdir -p ~/.local/share/duniter +# build in release mode and export the bash completion file +cargo run --release -- completion --generator bash > ~/.local/share/duniter/completion.bash +# add the following line to your ~/.bashrc to automatically load completion on startup +[[ -f $HOME/.local/share/duniter/completion.bash ]] && source $HOME/.local/share/duniter/completion.bash +``` + +Building in release mode for the first time is very long and can take up to 20 minutes. You will then benefit from completion using `<Tab>` key and `*`. + +## End to end tests using cucumber + +Cucumber end2end tests are a good way to dive in Duniter's business procedure. They work by spawning a local blockchain and submitting extrinsics to it. You can build and run the cucumber tests by running: + +```bash +cargo cucumber +``` + +which should take about 4 minutes to build and run the tests. A highly detailed documentation about the end2end tests is available [in the dedicated folder](../../end2end-tests/README.md), you will learn how to read and modify the tests. \ No newline at end of file -- GitLab