diff --git a/docs/getting-started.md b/docs/getting-started.md index f2313aecd..699860b11 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -12,3 +12,83 @@ Here is a typical progression: 7. Enable stricter type checking options like "reportOptionalSubscript", "reportOptionalMemberAccess", "reportOptionalCall", and "reportUntypedFunctionDecorator". 8. On a file-by-file basis, enable all type checking options by adding the comment `# pyright: strict` somewhere in the file. + +### Running Pyright as part of Continuous Integration (CI) + +Here is a simple bash script that installs the latest version of Pyright and runs it on a code base. It can be used in a CI environment. + +``` +#!/bin/bash +PATH_TO_PYRIGHT=`which pyright` + +vercomp () { + if [[ $1 == $2 ]] + then + return 0 + fi + local IFS=. + local i ver1=($1) ver2=($2) + # fill empty fields in ver1 with zeros + for ((i=${#ver1[@]}; i<${#ver2[@]}; i++)) + do + ver1[i]=0 + done + for ((i=0; i<${#ver1[@]}; i++)) + do + if [[ -z ${ver2[i]} ]] + then + # fill empty fields in ver2 with zeros + ver2[i]=0 + fi + if ((10#${ver1[i]} > 10#${ver2[i]})) + then + return 1 + fi + if ((10#${ver1[i]} < 10#${ver2[i]})) + then + return 2 + fi + done + return 0 +} + +# Node version check +echo "Checking node version..." +NODE_VERSION=`node -v | cut -d'v' -f2` +MIN_NODE_VERSION="10.15.2" +vercomp $MIN_NODE_VERSION $NODE_VERSION +# 1 == gt +if [[ $? -eq 1 ]]; then + echo "Node version ${NODE_VERSION} too old, min expected is ${MIN_NODE_VERSION}, run:" + echo " npm -g upgrade node" + exit -1 +fi + +# Do we need to sudo? +echo "Checking node_modules dir..." +NODE_MODULES=`npm -g root` +SUDO="sudo" +if [ -w "$NODE_MODULES" ]; then + SUDO="" #nop +fi + +# If we can't find pyright, install it. +echo "Checking pyright exists..." +if [ -z "$PATH_TO_PYRIGHT" ]; then + echo "...installing pyright" + ${SUDO} npm install -g pyright +else + # already installed, upgrade to make sure it's current + # this avoids a sudo on launch if we're already current + echo "Checking pyright version..." + CURRENT=`pyright --version | cut -d' ' -f2` + REMOTE=`npm info pyright version` + if [ "$CURRENT" != "$REMOTE" ]; then + echo "...new version of pyright found, upgrading." + ${SUDO} npm upgrade -g pyright + fi +fi + +echo "done." +pyright -w +```