From 3d7e72958b331f1b5e7cb5f61e34958e456a418e Mon Sep 17 00:00:00 2001 From: bwnyasse Date: Sat, 6 Feb 2021 16:23:34 -0500 Subject: [PATCH] refacto(setup): the process for the contribution --- .gitignore | 3 +- README.md | 68 ++++++--- doc/setup/a-current-usage.png | Bin 0 -> 90796 bytes doc/setup/a-sample-correct-setup.png | Bin 0 -> 35180 bytes lib/env/env.dart | 2 +- tezart.sh | 4 + tool/coverage-dev.sh | 14 -- tool/info-tezart | 7 + tool/logger.sh | 84 +++++++++++ tool/run_tests.sh | 3 - tool/tezart.sh | 212 +++++++++++++++++++++++++++ 11 files changed, 361 insertions(+), 36 deletions(-) create mode 100644 doc/setup/a-current-usage.png create mode 100644 doc/setup/a-sample-correct-setup.png create mode 100755 tezart.sh delete mode 100755 tool/coverage-dev.sh create mode 100644 tool/info-tezart create mode 100644 tool/logger.sh delete mode 100755 tool/run_tests.sh create mode 100755 tool/tezart.sh diff --git a/.gitignore b/.gitignore index 2ce11d50..ca21092a 100644 --- a/.gitignore +++ b/.gitignore @@ -77,9 +77,10 @@ build/ .fvm # coverage +coverage_badge.svg coverage/ test/.test_coverage.dart # .env -.env +.env.tests lib/env/env.g.dart \ No newline at end of file diff --git a/README.md b/README.md index 563caca3..07133d35 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,15 @@ # tezart -A dart library that connects to interact with the tezos blockchain. It connects to a tezos node to send transactions, interact with smart contracts. +A dart library that connects to interact with the tezos blockchain. +It connects to a tezos node to send transactions, interact with smart contracts. ## Features -wip +[wip - Classes à exporter](https://www.notion.so/Classes-exposer-fca03549f8ec4800a3ddf734ac0973d9) ## TODO -wip +[wip - Classes à exporter](https://www.notion.so/Classes-exposer-fca03549f8ec4800a3ddf734ac0973d9) ## Usage @@ -16,29 +17,62 @@ wip ## Contribution -### Run a tezos sandbox locally. -You can use: [tqtezos's sandbox](https://assets.tqtezos.com/docs/setup/2-sandbox/) +### Setup your development environment [ for Mac and Linux ] + +**Tezart** is a [dart](https://dart.dev/) package that will help your applications to interact with the tezos blockchain. + +To ensure that you can contribute to this project, you will need to setup your environment with the installation of the following tools : + +- [dart sdk for package development](https://dart.dev/get-dart) +- [docker for local testing](https://docs.docker.com/get-docker/) +- [lefthook to our git hooks](https://github.com/Arkweid/lefthook) +- [test_coverage for our code coverage](https://pub.dev/packages/test_coverage) + +#### A. Dart SDK for Package development + +You can install **Dart SDK**, by following the [official dart documentation](https://dart.dev/get-dart) +#### B. Docker to run a tezos sandbox locally + +1- If you don't have **Docker**, please install it by following the [official docker documentation](https://docs.docker.com/get-docker/) + +2- If you have **Docker**, You will need a running blockchain on your local environment to launch the tests. You can use [tqtezos's sandbox](https://assets.tqtezos.com/docs/setup/2-sandbox/) by running the following command : ``` -docker run --rm --name my-sandbox --detach -p 20000:20000 tqtezos/flextesa:20201214 delphibox start +docker run --rm \ + --name my-sandbox \ + --detach -p 20000:20000 \ + tqtezos/flextesa:20201214 delphibox start ``` -### Setup Lefthook -Install lefthook following [this](https://github.com/Arkweid/lefthook/blob/master/docs/full_guide.md#installation) guide, then run : -``` +#### C. Setup Lefthook + +To install lefthook, just follow [this](https://github.com/Arkweid/lefthook/blob/master/docs/full_guide.md#installation) guide, then run : + +```sh lefthook install ``` -### Setup env variables -``` -cp .env.dist .env -``` +#### Verify your setup -### Run tests -``` -./tool/run_tests.sh +To ensure that your environment is ready for contribution, please run the following command at the root of the project: + +```sh +./tezart.sh --run-setup ``` +Following is a sample of a correct setup : + +![a-sample-setup](./doc/setup/a-sample-correct-setup.png) + +### Utility functions + +We provide some utility functions through `tezart.sh` to help you in your development process. + +Following is the output usage : + +![a-current-usage](./doc/setup/a-current-usage.png) + ## Feature requests and bugs -If you want to contribute to this project, please fork the project and submit your pull request. Feature requests and bugs at the [issue tracker](https://github.com/moneytrackio/tezart/issues/new) +If you want to contribute to this project, please fork the project and submit your pull request. +Feature requests and bugs at the [issue tracker](https://github.com/moneytrackio/tezart/issues/new) diff --git a/doc/setup/a-current-usage.png b/doc/setup/a-current-usage.png new file mode 100644 index 0000000000000000000000000000000000000000..923c3a0333865a822e3ed050de9a08104040dbb7 GIT binary patch literal 90796 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 Y-!OD4BxioM1OCB?%iYYne&_N30zy9#RsaA1 literal 0 HcmV?d00001 diff --git a/doc/setup/a-sample-correct-setup.png b/doc/setup/a-sample-correct-setup.png new file mode 100644 index 0000000000000000000000000000000000000000..358ea54da9381e713a576610f3db9c86778f17a6 GIT binary patch literal 35180 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 E0yV+vkN^Mx literal 0 HcmV?d00001 diff --git a/lib/env/env.dart b/lib/env/env.dart index 091fe132..a3c1cd93 100644 --- a/lib/env/env.dart +++ b/lib/env/env.dart @@ -1,7 +1,7 @@ import 'package:envify/envify.dart'; part 'env.g.dart'; -@Envify() +@Envify(path: '.env.tests') abstract class Env { static const tezosNodeHost = _Env.tezosNodeHost; static const tezosNodePort = _Env.tezosNodePort; diff --git a/tezart.sh b/tezart.sh new file mode 100755 index 00000000..d9ad0742 --- /dev/null +++ b/tezart.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# utility functions +/bin/bash ./tool/tezart.sh $@ \ No newline at end of file diff --git a/tool/coverage-dev.sh b/tool/coverage-dev.sh deleted file mode 100755 index b8315cf2..00000000 --- a/tool/coverage-dev.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -## ONLY FOR MAC OR LINUX - -# Install test_coverage globally -# pub global activate test_coverage - -# Effective test coverage -test_coverage --no-badge - -# Generate coverage info -genhtml -o coverage coverage/lcov.info - -# Open to see coverage info -open coverage/index.html \ No newline at end of file diff --git a/tool/info-tezart b/tool/info-tezart new file mode 100644 index 00000000..ef55ee75 --- /dev/null +++ b/tool/info-tezart @@ -0,0 +1,7 @@ +.___________. _______ ________ ___ .______ .___________. +| || ____|| / / \ | _ \ | | +`---| |----`| |__ `---/ / / ^ \ | |_) | `---| |----` + | | | __| / / / /_\ \ | / | | + | | | |____ / /----./ _____ \ | |\ \----. | | + |__| |_______| /________/__/ \__\ | _| `._____| |__| + \ No newline at end of file diff --git a/tool/logger.sh b/tool/logger.sh new file mode 100644 index 00000000..f0fb2ad8 --- /dev/null +++ b/tool/logger.sh @@ -0,0 +1,84 @@ +#!/bin/bash + +################################################################### +# Description : +# Utility functions to perform logging. +# +################################################################### + +readonly BLUE="\\033[1;34m" +readonly RED="\\033[1;31m" +readonly GREEN="\\033[1;32m" +readonly YELLOW="\\033[1;33m" +readonly MAGENTA="\\033[1;35m" +readonly GRAS="\033[1m" +readonly END="\\033[1;00m" +readonly CHECK_MARK="\xE2\x9C\x94" +readonly SUFFIX="TEZART" + +#### +## Display url link in output +## $1 message +## $2 url +log::url() { + echo -e "\\e]8;;http://example.com\\aThis is a hyperlink\e]8;;\\a" +} + +log::error() { + echo -e "\n$RED [ERROR:$SUFFIX] $* $END" >&2 +} + +log::error_and_exit() { + echo -e "\n$RED [ERROR:$SUFFIX] $*\n $END" >&2 && exit 1 +} + +log::info() { + echo -e "\n$GREEN [INFO:$SUFFIX]$END $* $END" +} + +log::info_success() { + echo -e "\n$GREEN [INFO:$SUFFIX]$END $* $GREEN $CHECK_MARK $END" +} + +log::info_and_exit() { + echo -e "\n$GREEN [INFO:$SUFFIX] $* $END" && exit 0 +} + +log::debug() { + [[ -n $DEBUG ]] && echo -e "\n$BLUE [DEBUG:$SUFFIX---] $* $END" +} + +log::warn() { + echo -e "\n$YELLOW [WARN:$SUFFIX] $* $END" +} + +log::warn_and_exit() { + echo -e "\n$YELLOW [WARN:$SUFFIX] $* $END" && exit 0 +} + +log::message_success() { + echo -e " $* $GREEN $CHECK_MARK $END" +} + +log::message_error() { + echo -e " $* $RED x $END" +} + +log::title() { + echo -e "\n $* " +} + +log::title_success() { + echo -e "\n $* $GREEN $CHECK_MARK $END" +} + + + +log::message() { + echo -e " $* " +} + + +log::application(){ + echo -e "\n\n$GREEN$(cat $BASEDIR/../tool/info-tezart)$END" +} \ No newline at end of file diff --git a/tool/run_tests.sh b/tool/run_tests.sh deleted file mode 100755 index 224965d8..00000000 --- a/tool/run_tests.sh +++ /dev/null @@ -1,3 +0,0 @@ -pub get -pub run build_runner build -pub run test diff --git a/tool/tezart.sh b/tool/tezart.sh new file mode 100755 index 00000000..065976d5 --- /dev/null +++ b/tool/tezart.sh @@ -0,0 +1,212 @@ +#!/bin/bash + +# exit when any command fails +set -e + +################################################################### +# Description : +# Utility functions for dev, ci/cd operations ... +# +################################################################### + +readonly BASEDIR=$( cd $( dirname $0 ) && pwd ) + +source $BASEDIR/../tool/logger.sh + +# ██╗ ██╗███████╗ █████╗ ██████╗ ███████╗ +# ██║ ██║██╔════╝██╔══██╗██╔════╝ ██╔════╝ +# ██║ ██║███████╗███████║██║ ███╗█████╗ +# ██║ ██║╚════██║██╔══██║██║ ██║██╔══╝ +# ╚██████╔╝███████║██║ ██║╚██████╔╝███████╗ +# ╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚══════╝ + +USAGE_HELP='Display this message' +USAGE_RUN_TESTS='Process to run tests' +USAGE_RUN_SETUP='Process to run the setup of the project' +USAGE_RUN_COVERAGE_DEV='Process to run the code coverage in dev environment' + +usage() { + + log::application + cat < /dev/null && isSanboxRunning=0 && break + log::warn "retry $retry : Unable to curl localhost:20000/chains/main/mempool/pending_operations" + ((retry=retry+1)) + sleep 1 + done + + if [[ isSanboxRunning -eq 0 ]] + then + log::title_success " - a tezos sandbox is running locally" + else + log::error_and_exit "Please read the README.md to run a tezos sandbox locally." + fi + + +} + +tezart::_check_requirements() { + ## check for dart + if docker --version &>/dev/null + then + log::title_success " - docker is present on your system" + else + log::error_and_exit 'The docker is missing on your system. Please read the README.md to install it' + fi + + ## check for dart + if dart --version &>/dev/null + then + log::title_success " - dart sdk is present on your system" + else + log::error_and_exit 'The dart sdk is missing on your system. Please read the README.md to install it' + fi + + ## check for lefthook + if lefthook &>/dev/null + then + log::title_success " - lefthook is present on your system" + else + log::error_and_exit 'The Lefthook plugin is missing on your system. Please read the README.md to install it' + fi + + ## check for test_coverage + if test_coverage &>/dev/null + then + pub global activate test_coverage &>/dev/null && log::title_success " - test_coverage is present on your dart environment" + else + log::error_and_exit 'The dart test_coverage package is missing on your system. The script is unable to install it !' + fi +} + +tezart::_init_env_var() { + + if [[ -f .env.tests ]] + then + log::warn "A .env.tests file is already found. the script won't generate a new one" + else + log::title_success " - a new .env.tests file is generated for your tests" + cp .env.dist .env.tests + fi +} + +########### +### PUBLIC +########### + +tezart::run_coverage_dev() { + log::info "$USAGE_RUN_COVERAGE_DEV :" + + # Effective test coverage + test_coverage --no-badge + + # Generate coverage info + genhtml -o coverage coverage/lcov.info + + # Open to see coverage info + open coverage/index.html +} + +tezart::run_setup() { + log::info "$USAGE_RUN_SETUP :" + + tezart::_check_requirements + tezart::_check_localhost_chain + tezart::_init_env_var +} + +tezart::run_tests() { + log::info "$USAGE_RUN_TESTS :" + + tezart::_check_localhost_chain + tezart::_init_env_var + + echo -e '\n' + + pub get + pub run build_runner build + pub run test +} + +# ███╗ ███╗ █████╗ ██╗███╗ ██╗ +# ████╗ ████║██╔══██╗██║████╗ ██║ +# ██╔████╔██║███████║██║██╔██╗ ██║ +# ██║╚██╔╝██║██╔══██║██║██║╚██╗██║ +# ██║ ╚═╝ ██║██║ ██║██║██║ ╚████║ +# ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝ + +# +## Optional parameters +RUN_TESTS= +RUN_SETUP= +RUN_COVERAGE_DEV= + +main() { + [[ -n $RUN_TESTS ]] && tezart::run_tests + [[ -n $RUN_SETUP ]] && tezart::run_setup + [[ -n $RUN_COVERAGE_DEV ]] && tezart::run_coverage_dev + + exit 0 +} + +# ██████╗ ███████╗████████╗ ██████╗ ██████╗ ███████╗ +# ██╔════╝ ██╔════╝╚══██╔══╝██╔═══██╗██╔══██╗██╔════╝ +# ██║ ███╗█████╗ ██║ ██║ ██║██████╔╝███████╗ +# ██║ ██║██╔══╝ ██║ ██║ ██║██╔═══╝ ╚════██║ +# ╚██████╔╝███████╗ ██║ ╚██████╔╝██║ ███████║ +# ╚═════╝ ╚══════╝ ╚═╝ ╚═════╝ ╚═╝ ╚══════╝ + + +while getopts :-:h option +do + case $option in + -) + case $OPTARG in + run-setup) + RUN_SETUP=1 + ;; + run-tests) + RUN_TESTS=1 + ;; + run-coverage-dev) + RUN_COVERAGE_DEV=1 + ;; + *) + log::error "Unknow parameter '--$OPTARG' !" + usage + exit 2 + ;; + esac + ;; + :|?|h) + [[ $option == \? ]] && log::error "The parameter -$OPTARG can't be used !" + [[ $option == : ]] && log::error "The parameter -$OPTARG needs an argument !" + usage + exit $([[ $option == h ]] && echo 0 || echo 2) + ;; + esac +done + +main