From 910ebda64efc4c86322f95d14c4d76a92d4f9208 Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Fri, 29 Jan 2021 14:51:06 +0100 Subject: [PATCH] finished scripts --- README.md | 47 ++++++++++++- tools/build.sh | 41 +++++++----- tools/build_dependencies.py | 13 +--- tools/create_env.sh | 110 +++++++++--------------------- tools/create_zip.sh | 127 +++++++++++++++++++++++++++++++++++ tools/make_docs.sh | 88 ++++++++++++++++++++++++ tools/run_mongo.sh | 84 +++++++++++++++++++++++ tools/run_settings.sh | 127 +++++++++++++++++++++++++++++++++++ tools/run_tests.sh | 130 ++++++++++++++++++++++++++++++++++++ tools/run_tray.sh | 127 +++++++++++++++++++++++++++++++++++ 10 files changed, 789 insertions(+), 105 deletions(-) create mode 100755 tools/create_zip.sh create mode 100755 tools/make_docs.sh create mode 100755 tools/run_mongo.sh create mode 100755 tools/run_settings.sh create mode 100755 tools/run_tests.sh create mode 100755 tools/run_tray.sh diff --git a/README.md b/README.md index cc9d69c5ac..7799c07d91 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,41 @@ export PATH=$PATH:/Applications/CMake.app/Contents/bin 2) Run `.\tools\build.sh` to build Pype executables in `.\build\` +### Linux + +You will need [Python 3.7 and newer](https://www.python.org/downloads/) and [git](https://git-scm.com/downloads). You'll need also other tools to build +some Pype dependencies like [CMake](https://cmake.org/). Python 3 should be part of all modern distributions. You can use your package manager to install **git** and **cmake**. + +For Ubuntu: +```sh +sudo apt install git cmake +``` + +For CentOS: +```sh +sudo yum install qit cmake +``` + +#### Note: +In case you run in error about `xcb` when running Pype, +you'll need also additional libraries for Qt5: + +For Ubuntu: +```sh +sudo apt install qt5-default +``` +For CentOS: +```sh +sudo yum install qt5-qtbase-devel +``` + +#### To build Pype: + +1) Run `.\tools\create_env.sh` to create virtual environment in `.\venv` +2) Run `.\tools\build.sh` to build Pype executables in `.\build\` + + + Running Pype ------------ @@ -88,10 +123,13 @@ If Pype is executed from live sources, it will use Pype version included in them it is executed from frozen code it will try to find latest Pype version installed locally on current computer and if it is not found, it will ask for its location. On that location pype can be either in directories or zip files. Pype will try to find latest version and -install it to user data directory (on Windows to `%LOCALAPPDATA%\pypeclub\pype`). +install it to user data directory (on Windows to `%LOCALAPPDATA%\pypeclub\pype`, on Linux +`~/.local/share/pype`). ### From sources Pype can be run directly from sources by activating virtual environment: + +**On Windows:** ```powershell .\venv\Scripts\Activate.ps1 ``` @@ -99,6 +137,13 @@ and running: ```powershell python start.py tray ``` +**On macOS/Linux:** +```sh +source ./venv/bin/activate +python start.py tray +``` + + This will use current Pype version with sources. You can override this with `--use-version=x.x.x` and then Pype will try to find locally installed specified version (present in user data directory). diff --git a/tools/build.sh b/tools/build.sh index 38b7acdc51..44bb22c4a6 100755 --- a/tools/build.sh +++ b/tools/build.sh @@ -1,19 +1,17 @@ #!/usr/bin/env bash -# This script will detect Python installation, create venv and install -# all necessary packages from `requirements.txt` needed by Pype to be -# included during application freeze on Unix. +# Build Pype using existing virtual environment. art () { cat <<-EOF - ____________ -/\\ \\ -\\ \\ --- \\ - \\ \\ _____/ ______ - \\ \\ \\___/ /\\ \\ - \\ \\____\\ \\ \\_____\\ - \\/____/ \\/_____/ PYPE Club . + ____________ + /\\ ___ \\ + \\ \\ \\/_\\ \\ + \\ \\ _____/ ______ ___ ___ ___ + \\ \\ \\___/ /\\ \\ \\ \\\\ \\\\ \\ + \\ \\____\\ \\ \\_____\\ \\__\\\\__\\\\__\\ + \\/____/ \\/_____/ . PYPE Club . EOF } @@ -95,28 +93,39 @@ clean_pyc () { echo -e "${BIGreen}DONE${RST}" } +############################################################################## +# Return absolute path +# Globals: +# None +# Arguments: +# Path to resolve +# Returns: +# None +############################################################################### realpath () { echo $(cd $(dirname "$1"); pwd)/$(basename "$1") } # Main +echo -e "${BGreen}" art +echo -e "${RST}" detect_python || return 1 # Directories current_dir=$(realpath "$(pwd)") -pype_root=$(realpath "${BASH_SOURCE[0]}") +pype_root=$(dirname $(realpath $(dirname $(dirname "${BASH_SOURCE[0]}")))) pushd "$pype_root" > /dev/null -version_command="from pathlib import Path;version = {};pype_root = '$pype_root';with open(pype_root / 'pype' / 'version.py') as fp exec(fp.read(), version);print(version['__version__'])" -# pype_version="$(python3 <<< ${version_command})" +version_command="import os;exec(open(os.path.join('$pype_root', 'pype', 'version.py')).read());print(__version__);" +pype_version="$(python3 <<< ${version_command})" echo -e "${BIYellow}---${RST} Cleaning build directory ..." rm -rf "$pype_root/build" && mkdir "$pype_root/build" > /dev/null -# echo -e "${BIGreen}>>>${RST} Building Pype [${IGreen} v$pype_version ${RST}]" -echo -e "${BIGreen}>>>${RST} Entering venv ..." -source venv/bin/activate +echo -e "${BIGreen}>>>${RST} Building Pype ${BIWhite}[${RST} ${BIGreen}$pype_version${RST} ${BIWhite}]${RST}" +# echo -e "${BIGreen}>>>${RST} Entering venv ..." +source "$pype_root/venv/bin/activate" echo -e "${BIGreen}>>>${RST} Cleaning cache files ..." clean_pyc echo -e "${BIGreen}>>>${RST} Building ..." diff --git a/tools/build_dependencies.py b/tools/build_dependencies.py index d28b631eca..0125de5211 100644 --- a/tools/build_dependencies.py +++ b/tools/build_dependencies.py @@ -72,17 +72,8 @@ _print("Getting venv site-packages ...") assert site_pkg, "No venv site-packages are found." _print(f"Working with: {site_pkg}", 2) -# now, copy it to build directory -build_dir = None -if sys.platform.startswith("linux"): - # TODO: what is it under linux? - raise NotImplementedError("not implemented for linux yet") -elif sys.platform == "darwin": - # TODO: what is it under macOS? - raise NotImplementedError("not implemented for macOS yet") -elif sys.platform == "win32": - # string is formatted as cx_freeze is doing it - build_dir = "exe.{}-{}".format(get_platform(), sys.version[0:3]) + +build_dir = "exe.{}-{}".format(get_platform(), sys.version[0:3]) # create full path build_dir = Path(os.path.dirname(__file__)).parent / "build" / build_dir diff --git a/tools/create_env.sh b/tools/create_env.sh index b973951b51..c847d7345a 100755 --- a/tools/create_env.sh +++ b/tools/create_env.sh @@ -1,19 +1,19 @@ #!/usr/bin/env bash -# This script will detect Python installation, create venv and install -# all necessary packages from `requirements.txt` needed by Pype to be -# included during application freeze on Unix. +# This script will detect Python installation, and create virtual environment +# for Pype to run or build. art () { cat <<-EOF - ____________ -/\\ \\ -\\ \\ --- \\ - \\ \\ _____/ ______ - \\ \\ \\___/ /\\ \\ - \\ \\____\\ \\ \\_____\\ - \\/____/ \\/_____/ PYPE Club . + ____________ + /\\ ___ \\ + \\ \\ \\/_\\ \\ + \\ \\ _____/ ______ ___ ___ ___ + \\ \\ \\___/ /\\ \\ \\ \\\\ \\\\ \\ + \\ \\____\\ \\ \\_____\\ \\__\\\\__\\\\__\\ + \\/____/ \\/_____/ . PYPE Club . + EOF } @@ -52,71 +52,6 @@ BIPurple='\033[1;95m' # Purple BICyan='\033[1;96m' # Cyan BIWhite='\033[1;97m' # White - -############################################################################### -# Test if Xcode Command Line tools are installed in MacOS -############################################################################### -have_command_line_tools() { - [[ -e "/Library/Developer/CommandLineTools/usr/bin/git" ]] -} - -############################################################################### -# Get command any key from user -############################################################################### -getc() { - local save_state - save_state=$(/bin/stty -g) - /bin/stty raw -echo - IFS= read -r -n 1 -d '' "$@" - /bin/stty "$save_state" -} - -############################################################################### -# Test if we have access via sudo -# Used in MacOS -############################################################################### -have_sudo_access() { - if [[ -z "${HAVE_SUDO_ACCESS-}" ]]; then - /usr/bin/sudo -l mkdir &>/dev/null - HAVE_SUDO_ACCESS="$?" - fi - - if [[ "$HAVE_SUDO_ACCESS" -ne 0 ]]; then - echo -e "${BIRed}!!!${RST} Need sudo access on MacOS" - return 1 - fi - - return "$HAVE_SUDO_ACCESS" -} - -############################################################################### -# Execute command and report failure -############################################################################### -execute() { - if ! "$@"; then - echo -e "${BIRed}!!!${RST} Failed execution of ${BIWhite}[ $@ ]${RST}" - fi -} - -############################################################################### -# Execute command using sudo -# This is used on MacOS to handle Xcode command line tools installation -############################################################################### -execute_sudo() { - local -a args=("$@") - if [[ -n "${SUDO_ASKPASS-}" ]]; then - args=("-A" "${args[@]}") - fi - if have_sudo_access; then - echo -e "${BIGreen}>->${RST} sudo: [${BIWhite} ${args[@]} ${RST}]" - execute "/usr/bin/sudo" "${args[@]}" - else - echo -e "${BIGreen}>->${RST} [${BIWhite} ${args[@]} ${RST}]" - execute "${args[@]}" - fi -} - - ############################################################################## # Detect required version of python # Globals: @@ -159,13 +94,28 @@ clean_pyc () { echo -e "${BIGreen}DONE${RST}" } +############################################################################## +# Return absolute path +# Globals: +# None +# Arguments: +# Path to resolve +# Returns: +# None +############################################################################### +realpath () { + echo $(cd $(dirname "$1"); pwd)/$(basename "$1") +} + # Main +echo -e "${BGreen}" art +echo -e "${RST}" detect_python || return 1 # Directories -current_dir="$(pwd)" -pype_root=`dirname $(dirname "${BASH_SOURCE[0]}")` +current_dir=$(realpath "$(pwd)") +pype_root=$(dirname $(realpath $(dirname $(dirname "${BASH_SOURCE[0]}")))) pushd "$pype_root" > /dev/null echo -e "${BIYellow}---${RST} Cleaning venv directory ..." @@ -176,6 +126,12 @@ python3 -m venv "$pype_root/venv" echo -e "${BIGreen}>>>${RST} Entering venv ..." source "$pype_root/venv/bin/activate" + +echo -e "${BIGreen}>>>${RST} Updatng pip ..." +python -m pip install --upgrade pip + +echo -e "${BIGreen}>>>${RST} Installing wheel ..." +python -m pip install wheel echo -e "${BIGreen}>>>${RST} Installing packages to new venv ..." pip install -r "$pype_root/requirements.txt" echo -e "${BIGreen}>>>${RST} Cleaning cache files ..." diff --git a/tools/create_zip.sh b/tools/create_zip.sh new file mode 100755 index 0000000000..f88a55dd0c --- /dev/null +++ b/tools/create_zip.sh @@ -0,0 +1,127 @@ +#!/usr/bin/env bash + +# Helper script to create Pype zip. + + +art () { + cat <<-EOF + ____________ + /\\ ___ \\ + \\ \\ \\/_\\ \\ + \\ \\ _____/ ______ ___ ___ ___ + \\ \\ \\___/ /\\ \\ \\ \\\\ \\\\ \\ + \\ \\____\\ \\ \\_____\\ \\__\\\\__\\\\__\\ + \\/____/ \\/_____/ . PYPE Club . + +EOF +} + +# Colors for terminal + +RST='\033[0m' # Text Reset + +# Regular Colors +Black='\033[0;30m' # Black +Red='\033[0;31m' # Red +Green='\033[0;32m' # Green +Yellow='\033[0;33m' # Yellow +Blue='\033[0;34m' # Blue +Purple='\033[0;35m' # Purple +Cyan='\033[0;36m' # Cyan +White='\033[0;37m' # White + +# Bold +BBlack='\033[1;30m' # Black +BRed='\033[1;31m' # Red +BGreen='\033[1;32m' # Green +BYellow='\033[1;33m' # Yellow +BBlue='\033[1;34m' # Blue +BPurple='\033[1;35m' # Purple +BCyan='\033[1;36m' # Cyan +BWhite='\033[1;37m' # White + +# Bold High Intensity +BIBlack='\033[1;90m' # Black +BIRed='\033[1;91m' # Red +BIGreen='\033[1;92m' # Green +BIYellow='\033[1;93m' # Yellow +BIBlue='\033[1;94m' # Blue +BIPurple='\033[1;95m' # Purple +BICyan='\033[1;96m' # Cyan +BIWhite='\033[1;97m' # White + + +############################################################################## +# Detect required version of python +# Globals: +# colors +# PYTHON +# Arguments: +# None +# Returns: +# None +############################################################################### +detect_python () { + echo -e "${BIGreen}>>>${RST} Using python \c" + local version_command="import sys;print('{0}.{1}'.format(sys.version_info[0], sys.version_info[1]))" + local python_version="$(python3 <<< ${version_command})" + oIFS="$IFS" + IFS=. + set -- $python_version + IFS="$oIFS" + if [ "$1" -ge "3" ] && [ "$2" -ge "6" ] ; then + echo -e "${BIWhite}[${RST} ${BIGreen}$1.$2${RST} ${BIWhite}]${RST}" + PYTHON="python3" + else + command -v python3 >/dev/null 2>&1 || { echo -e "${BIRed}FAILED${RST} ${BIYellow} Version [${RST}${BICyan}$1.$2${RST}]${BIYellow} is old and unsupported${RST}"; return 1; } + fi +} + +############################################################################## +# Clean pyc files in specified directory +# Globals: +# None +# Arguments: +# Optional path to clean +# Returns: +# None +############################################################################### +clean_pyc () { + path=${1:-$pype_root} + echo -e "${IGreen}>>>${RST} Cleaning pyc at [ ${BIWhite}$path${RST} ] ... \c" + find "$path" -regex '^.*\(__pycache__\|\.py[co]\)$' -delete + echo -e "${BIGreen}DONE${RST}" +} + +############################################################################## +# Return absolute path +# Globals: +# None +# Arguments: +# Path to resolve +# Returns: +# None +############################################################################### +realpath () { + echo $(cd $(dirname "$1"); pwd)/$(basename "$1") +} + +# Main +echo -e "${BGreen}" +art +echo -e "${RST}" +detect_python || return 1 + +# Directories +current_dir=$(realpath "$(pwd)") +pype_root=$(dirname $(realpath $(dirname $(dirname "${BASH_SOURCE[0]}")))) +pushd "$pype_root" > /dev/null + +echo -e "${BIGreen}>>>${RST} Entering venv ..." +source "$pype_root/venv/bin/activate" + +echo -e "${BIGreen}>>>${RST} Generating zip from current sources ..." +python "$pype_root/start.py" generate-zip $@ + +echo -e "${BIGreen}>>>${RST} Deactivating venv ..." +deactivate diff --git a/tools/make_docs.sh b/tools/make_docs.sh new file mode 100755 index 0000000000..3d3d82770d --- /dev/null +++ b/tools/make_docs.sh @@ -0,0 +1,88 @@ +#!/usr/bin/env bash + +# Make Pype documentation + + +art () { + cat <<-EOF + ____________ + /\\ ___ \\ + \\ \\ \\/_\\ \\ + \\ \\ _____/ ______ ___ ___ ___ + \\ \\ \\___/ /\\ \\ \\ \\\\ \\\\ \\ + \\ \\____\\ \\ \\_____\\ \\__\\\\__\\\\__\\ + \\/____/ \\/_____/ . PYPE Club . + +EOF +} + +# Colors for terminal + +RST='\033[0m' # Text Reset + +# Regular Colors +Black='\033[0;30m' # Black +Red='\033[0;31m' # Red +Green='\033[0;32m' # Green +Yellow='\033[0;33m' # Yellow +Blue='\033[0;34m' # Blue +Purple='\033[0;35m' # Purple +Cyan='\033[0;36m' # Cyan +White='\033[0;37m' # White + +# Bold +BBlack='\033[1;30m' # Black +BRed='\033[1;31m' # Red +BGreen='\033[1;32m' # Green +BYellow='\033[1;33m' # Yellow +BBlue='\033[1;34m' # Blue +BPurple='\033[1;35m' # Purple +BCyan='\033[1;36m' # Cyan +BWhite='\033[1;37m' # White + +# Bold High Intensity +BIBlack='\033[1;90m' # Black +BIRed='\033[1;91m' # Red +BIGreen='\033[1;92m' # Green +BIYellow='\033[1;93m' # Yellow +BIBlue='\033[1;94m' # Blue +BIPurple='\033[1;95m' # Purple +BICyan='\033[1;96m' # Cyan +BIWhite='\033[1;97m' # White + + +############################################################################## +# Return absolute path +# Globals: +# None +# Arguments: +# Path to resolve +# Returns: +# None +############################################################################### +realpath () { + echo $(cd $(dirname "$1"); pwd)/$(basename "$1") +} + +# Main +echo -e "${BGreen}" +art +echo -e "${RST}" + +# Directories +current_dir=$(realpath "$(pwd)") +pype_root=$(dirname $(realpath $(dirname $(dirname "${BASH_SOURCE[0]}")))) +pushd "$pype_root" > /dev/null + +echo -e "${BIGreen}>>>${RST} Entering venv ..." +source "$pype_root/venv/bin/activate" + +echo -e "${BIGreen}>>>${RST} Running apidoc ..." +sphinx-apidoc.exe -M -e -d 10 --ext-intersphinx --ext-todo --ext-coverage --ext-viewcode -o "$pype_root/docs/source" igniter +sphinx-apidoc.exe -M -e -d 10 --ext-intersphinx --ext-todo --ext-coverage --ext-viewcode -o "$pype_root/docs/source" pype vendor, pype\vendor + +echo -e "${BIGreen}>>>${RST} Building html ..." +python setup.py build_sphinx + +echo -e "${BIGreen}>>>${RST} Deactivating venv ..." +deactivate diff --git a/tools/run_mongo.sh b/tools/run_mongo.sh new file mode 100755 index 0000000000..95966fc145 --- /dev/null +++ b/tools/run_mongo.sh @@ -0,0 +1,84 @@ +#!/usr/bin/env bash + +# Helper script to run mongod in the backround. +# NOTE: we are expecting mongod is in PATH + + +art () { + cat <<-EOF + ____________ + /\\ ___ \\ + \\ \\ \\/_\\ \\ + \\ \\ _____/ ______ ___ ___ ___ + \\ \\ \\___/ /\\ \\ \\ \\\\ \\\\ \\ + \\ \\____\\ \\ \\_____\\ \\__\\\\__\\\\__\\ + \\/____/ \\/_____/ . PYPE Club . + +EOF +} + +# Colors for terminal + +RST='\033[0m' # Text Reset + +# Regular Colors +Black='\033[0;30m' # Black +Red='\033[0;31m' # Red +Green='\033[0;32m' # Green +Yellow='\033[0;33m' # Yellow +Blue='\033[0;34m' # Blue +Purple='\033[0;35m' # Purple +Cyan='\033[0;36m' # Cyan +White='\033[0;37m' # White + +# Bold +BBlack='\033[1;30m' # Black +BRed='\033[1;31m' # Red +BGreen='\033[1;32m' # Green +BYellow='\033[1;33m' # Yellow +BBlue='\033[1;34m' # Blue +BPurple='\033[1;35m' # Purple +BCyan='\033[1;36m' # Cyan +BWhite='\033[1;37m' # White + +# Bold High Intensity +BIBlack='\033[1;90m' # Black +BIRed='\033[1;91m' # Red +BIGreen='\033[1;92m' # Green +BIYellow='\033[1;93m' # Yellow +BIBlue='\033[1;94m' # Blue +BIPurple='\033[1;95m' # Purple +BICyan='\033[1;96m' # Cyan +BIWhite='\033[1;97m' # White + + +############################################################################## +# Return absolute path +# Globals: +# None +# Arguments: +# Path to resolve +# Returns: +# None +############################################################################### +realpath () { + echo $(cd $(dirname "$1"); pwd)/$(basename "$1") +} + +# Main +echo -e "${BGreen}" +art +echo -e "${RST}" + +# Directories +current_dir=$(realpath "$(pwd)") +pype_root=$(dirname $(realpath $(dirname $(dirname "${BASH_SOURCE[0]}")))) +pushd "$pype_root" > /dev/null + +mongo_port=2707 +echo $pype_root +dbpath="$(dirname $pype_root)/mongo_db_data" + +echo -e "${BIGreen}>>>${RST} Running mongodb ..." +mongod --dbpath "$dbpath" --port $mongo_port +echo -e "${BIGreen}>>>${RST} Detached to background." diff --git a/tools/run_settings.sh b/tools/run_settings.sh new file mode 100755 index 0000000000..9009d5d7da --- /dev/null +++ b/tools/run_settings.sh @@ -0,0 +1,127 @@ +#!/usr/bin/env bash + +# Run Pype Settings GUI + + +art () { + cat <<-EOF + ____________ + /\\ ___ \\ + \\ \\ \\/_\\ \\ + \\ \\ _____/ ______ ___ ___ ___ + \\ \\ \\___/ /\\ \\ \\ \\\\ \\\\ \\ + \\ \\____\\ \\ \\_____\\ \\__\\\\__\\\\__\\ + \\/____/ \\/_____/ . PYPE Club . + +EOF +} + +# Colors for terminal + +RST='\033[0m' # Text Reset + +# Regular Colors +Black='\033[0;30m' # Black +Red='\033[0;31m' # Red +Green='\033[0;32m' # Green +Yellow='\033[0;33m' # Yellow +Blue='\033[0;34m' # Blue +Purple='\033[0;35m' # Purple +Cyan='\033[0;36m' # Cyan +White='\033[0;37m' # White + +# Bold +BBlack='\033[1;30m' # Black +BRed='\033[1;31m' # Red +BGreen='\033[1;32m' # Green +BYellow='\033[1;33m' # Yellow +BBlue='\033[1;34m' # Blue +BPurple='\033[1;35m' # Purple +BCyan='\033[1;36m' # Cyan +BWhite='\033[1;37m' # White + +# Bold High Intensity +BIBlack='\033[1;90m' # Black +BIRed='\033[1;91m' # Red +BIGreen='\033[1;92m' # Green +BIYellow='\033[1;93m' # Yellow +BIBlue='\033[1;94m' # Blue +BIPurple='\033[1;95m' # Purple +BICyan='\033[1;96m' # Cyan +BIWhite='\033[1;97m' # White + + +############################################################################## +# Detect required version of python +# Globals: +# colors +# PYTHON +# Arguments: +# None +# Returns: +# None +############################################################################### +detect_python () { + echo -e "${BIGreen}>>>${RST} Using python \c" + local version_command="import sys;print('{0}.{1}'.format(sys.version_info[0], sys.version_info[1]))" + local python_version="$(python3 <<< ${version_command})" + oIFS="$IFS" + IFS=. + set -- $python_version + IFS="$oIFS" + if [ "$1" -ge "3" ] && [ "$2" -ge "6" ] ; then + echo -e "${BIWhite}[${RST} ${BIGreen}$1.$2${RST} ${BIWhite}]${RST}" + PYTHON="python3" + else + command -v python3 >/dev/null 2>&1 || { echo -e "${BIRed}FAILED${RST} ${BIYellow} Version [${RST}${BICyan}$1.$2${RST}]${BIYellow} is old and unsupported${RST}"; return 1; } + fi +} + +############################################################################## +# Clean pyc files in specified directory +# Globals: +# None +# Arguments: +# Optional path to clean +# Returns: +# None +############################################################################### +clean_pyc () { + path=${1:-$pype_root} + echo -e "${IGreen}>>>${RST} Cleaning pyc at [ ${BIWhite}$path${RST} ] ... \c" + find "$path" -regex '^.*\(__pycache__\|\.py[co]\)$' -delete + echo -e "${BIGreen}DONE${RST}" +} + +############################################################################## +# Return absolute path +# Globals: +# None +# Arguments: +# Path to resolve +# Returns: +# None +############################################################################### +realpath () { + echo $(cd $(dirname "$1"); pwd)/$(basename "$1") +} + +# Main +echo -e "${BGreen}" +art +echo -e "${RST}" +detect_python || return 1 + +# Directories +current_dir=$(realpath "$(pwd)") +pype_root=$(dirname $(realpath $(dirname $(dirname "${BASH_SOURCE[0]}")))) +pushd "$pype_root" > /dev/null + +echo -e "${BIGreen}>>>${RST} Entering venv ..." +source "$pype_root/venv/bin/activate" + +echo -e "${BIGreen}>>>${RST} Generating zip from current sources ..." +python "$pype_root/start.py" settings --dev + +echo -e "${BIGreen}>>>${RST} Deactivating venv ..." +deactivate diff --git a/tools/run_tests.sh b/tools/run_tests.sh new file mode 100755 index 0000000000..eae47ab4b6 --- /dev/null +++ b/tools/run_tests.sh @@ -0,0 +1,130 @@ +#!/usr/bin/env bash + +# Run tests for Pype + + +art () { + cat <<-EOF + ____________ + /\\ ___ \\ + \\ \\ \\/_\\ \\ + \\ \\ _____/ ______ ___ ___ ___ + \\ \\ \\___/ /\\ \\ \\ \\\\ \\\\ \\ + \\ \\____\\ \\ \\_____\\ \\__\\\\__\\\\__\\ + \\/____/ \\/_____/ . PYPE Club . + +EOF +} + +# Colors for terminal + +RST='\033[0m' # Text Reset + +# Regular Colors +Black='\033[0;30m' # Black +Red='\033[0;31m' # Red +Green='\033[0;32m' # Green +Yellow='\033[0;33m' # Yellow +Blue='\033[0;34m' # Blue +Purple='\033[0;35m' # Purple +Cyan='\033[0;36m' # Cyan +White='\033[0;37m' # White + +# Bold +BBlack='\033[1;30m' # Black +BRed='\033[1;31m' # Red +BGreen='\033[1;32m' # Green +BYellow='\033[1;33m' # Yellow +BBlue='\033[1;34m' # Blue +BPurple='\033[1;35m' # Purple +BCyan='\033[1;36m' # Cyan +BWhite='\033[1;37m' # White + +# Bold High Intensity +BIBlack='\033[1;90m' # Black +BIRed='\033[1;91m' # Red +BIGreen='\033[1;92m' # Green +BIYellow='\033[1;93m' # Yellow +BIBlue='\033[1;94m' # Blue +BIPurple='\033[1;95m' # Purple +BICyan='\033[1;96m' # Cyan +BIWhite='\033[1;97m' # White + + +############################################################################## +# Detect required version of python +# Globals: +# colors +# PYTHON +# Arguments: +# None +# Returns: +# None +############################################################################### +detect_python () { + echo -e "${BIGreen}>>>${RST} Using python \c" + local version_command="import sys;print('{0}.{1}'.format(sys.version_info[0], sys.version_info[1]))" + local python_version="$(python3 <<< ${version_command})" + oIFS="$IFS" + IFS=. + set -- $python_version + IFS="$oIFS" + if [ "$1" -ge "3" ] && [ "$2" -ge "6" ] ; then + echo -e "${BIWhite}[${RST} ${BIGreen}$1.$2${RST} ${BIWhite}]${RST}" + PYTHON="python3" + else + command -v python3 >/dev/null 2>&1 || { echo -e "${BIRed}FAILED${RST} ${BIYellow} Version [${RST}${BICyan}$1.$2${RST}]${BIYellow} is old and unsupported${RST}"; return 1; } + fi +} + +############################################################################## +# Clean pyc files in specified directory +# Globals: +# None +# Arguments: +# Optional path to clean +# Returns: +# None +############################################################################### +clean_pyc () { + path=${1:-$pype_root} + echo -e "${IGreen}>>>${RST} Cleaning pyc at [ ${BIWhite}$path${RST} ] ... \c" + find "$path" -regex '^.*\(__pycache__\|\.py[co]\)$' -delete + echo -e "${BIGreen}DONE${RST}" +} + +############################################################################## +# Return absolute path +# Globals: +# None +# Arguments: +# Path to resolve +# Returns: +# None +############################################################################### +realpath () { + echo $(cd $(dirname "$1"); pwd)/$(basename "$1") +} + +# Main +echo -e "${BGreen}" +art +echo -e "${RST}" +detect_python || return 1 + +# Directories +current_dir=$(realpath "$(pwd)") +pype_root=$(dirname $(realpath $(dirname $(dirname "${BASH_SOURCE[0]}")))) +pushd "$pype_root" > /dev/null + +echo -e "${BIGreen}>>>${RST} Entering venv ..." +source "$pype_root/venv/bin/activate" + +echo -e "${BIGreen}>>>${RST} Testing Pype ..." +original_pythonpath=$PYTHONPATH +export PYTHONPATH="$pype_root:$PYTHONPATH" +pytest -x --capture=sys --print -W ignore::DeprecationWarning "$pype_root/tests" +$env:PYTHONPATH = $original_pythonpath + +echo -e "${BIGreen}>>>${RST} Deactivating venv ..." +deactivate diff --git a/tools/run_tray.sh b/tools/run_tray.sh new file mode 100755 index 0000000000..b4979b578a --- /dev/null +++ b/tools/run_tray.sh @@ -0,0 +1,127 @@ +#!/usr/bin/env bash + +# Run Pype Tray + + +art () { + cat <<-EOF + ____________ + /\\ ___ \\ + \\ \\ \\/_\\ \\ + \\ \\ _____/ ______ ___ ___ ___ + \\ \\ \\___/ /\\ \\ \\ \\\\ \\\\ \\ + \\ \\____\\ \\ \\_____\\ \\__\\\\__\\\\__\\ + \\/____/ \\/_____/ . PYPE Club . + +EOF +} + +# Colors for terminal + +RST='\033[0m' # Text Reset + +# Regular Colors +Black='\033[0;30m' # Black +Red='\033[0;31m' # Red +Green='\033[0;32m' # Green +Yellow='\033[0;33m' # Yellow +Blue='\033[0;34m' # Blue +Purple='\033[0;35m' # Purple +Cyan='\033[0;36m' # Cyan +White='\033[0;37m' # White + +# Bold +BBlack='\033[1;30m' # Black +BRed='\033[1;31m' # Red +BGreen='\033[1;32m' # Green +BYellow='\033[1;33m' # Yellow +BBlue='\033[1;34m' # Blue +BPurple='\033[1;35m' # Purple +BCyan='\033[1;36m' # Cyan +BWhite='\033[1;37m' # White + +# Bold High Intensity +BIBlack='\033[1;90m' # Black +BIRed='\033[1;91m' # Red +BIGreen='\033[1;92m' # Green +BIYellow='\033[1;93m' # Yellow +BIBlue='\033[1;94m' # Blue +BIPurple='\033[1;95m' # Purple +BICyan='\033[1;96m' # Cyan +BIWhite='\033[1;97m' # White + + +############################################################################## +# Detect required version of python +# Globals: +# colors +# PYTHON +# Arguments: +# None +# Returns: +# None +############################################################################### +detect_python () { + echo -e "${BIGreen}>>>${RST} Using python \c" + local version_command="import sys;print('{0}.{1}'.format(sys.version_info[0], sys.version_info[1]))" + local python_version="$(python3 <<< ${version_command})" + oIFS="$IFS" + IFS=. + set -- $python_version + IFS="$oIFS" + if [ "$1" -ge "3" ] && [ "$2" -ge "6" ] ; then + echo -e "${BIWhite}[${RST} ${BIGreen}$1.$2${RST} ${BIWhite}]${RST}" + PYTHON="python3" + else + command -v python3 >/dev/null 2>&1 || { echo -e "${BIRed}FAILED${RST} ${BIYellow} Version [${RST}${BICyan}$1.$2${RST}]${BIYellow} is old and unsupported${RST}"; return 1; } + fi +} + +############################################################################## +# Clean pyc files in specified directory +# Globals: +# None +# Arguments: +# Optional path to clean +# Returns: +# None +############################################################################### +clean_pyc () { + path=${1:-$pype_root} + echo -e "${IGreen}>>>${RST} Cleaning pyc at [ ${BIWhite}$path${RST} ] ... \c" + find "$path" -regex '^.*\(__pycache__\|\.py[co]\)$' -delete + echo -e "${BIGreen}DONE${RST}" +} + +############################################################################## +# Return absolute path +# Globals: +# None +# Arguments: +# Path to resolve +# Returns: +# None +############################################################################### +realpath () { + echo $(cd $(dirname "$1"); pwd)/$(basename "$1") +} + +# Main +echo -e "${BGreen}" +art +echo -e "${RST}" +detect_python || return 1 + +# Directories +current_dir=$(realpath "$(pwd)") +pype_root=$(dirname $(realpath $(dirname $(dirname "${BASH_SOURCE[0]}")))) +pushd "$pype_root" > /dev/null + +echo -e "${BIGreen}>>>${RST} Entering venv ..." +source "$pype_root/venv/bin/activate" + +echo -e "${BIGreen}>>>${RST} Running Pype Tray with debug option ..." +python "$pype_root/start.py" tray --debug + +echo -e "${BIGreen}>>>${RST} Deactivating venv ..." +deactivate