| 
									
										
										
										
											2016-01-02 11:14:49 +01:00
										 |  |  | #!/bin/sh
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-05 09:33:43 +02:00
										 |  |  | BASE_DIR=$(dirname "`readlink -f "$0"`") | 
					
						
							| 
									
										
										
										
											2016-01-02 11:14:49 +01:00
										 |  |  | PYTHONPATH=$BASE_DIR | 
					
						
							|  |  |  | SEARX_DIR="$BASE_DIR/searx" | 
					
						
							|  |  |  | ACTION=$1 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-16 18:14:07 +02:00
										 |  |  | cd "$BASE_DIR" | 
					
						
							| 
									
										
										
										
											2017-08-13 12:17:26 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-02 11:14:49 +01:00
										 |  |  | update_packages() { | 
					
						
							| 
									
										
										
										
											2017-07-20 20:51:39 +02:00
										 |  |  |     pip install --upgrade pip | 
					
						
							|  |  |  |     pip install --upgrade setuptools | 
					
						
							| 
									
										
										
										
											2017-01-26 23:30:57 +01:00
										 |  |  |     pip install -r "$BASE_DIR/requirements.txt" | 
					
						
							| 
									
										
										
										
											2016-01-02 11:14:49 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | update_dev_packages() { | 
					
						
							| 
									
										
										
										
											2016-01-07 19:56:59 +01:00
										 |  |  |     update_packages | 
					
						
							| 
									
										
										
										
											2017-01-26 23:30:57 +01:00
										 |  |  |     pip install -r "$BASE_DIR/requirements-dev.txt" | 
					
						
							| 
									
										
										
										
											2016-01-02 11:14:49 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-13 12:17:26 +02:00
										 |  |  | install_geckodriver() { | 
					
						
							| 
									
										
										
										
											2017-01-03 19:25:04 +01:00
										 |  |  |     echo '[!] Checking geckodriver' | 
					
						
							| 
									
										
										
										
											2017-08-16 18:14:07 +02:00
										 |  |  |     # TODO : check the current geckodriver version | 
					
						
							| 
									
										
										
										
											2017-01-03 19:25:04 +01:00
										 |  |  |     set -e | 
					
						
							|  |  |  |     geckodriver -V 2>1 > /dev/null || NOTFOUND=1 | 
					
						
							|  |  |  |     set +e | 
					
						
							|  |  |  |     if [ -z $NOTFOUND ]; then | 
					
						
							|  |  |  | 	return | 
					
						
							|  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2017-08-13 09:33:12 +02:00
										 |  |  |     GECKODRIVER_VERSION="v0.18.0" | 
					
						
							| 
									
										
										
										
											2017-08-13 13:45:02 +02:00
										 |  |  |     PLATFORM=`python -c "import six; import platform; six.print_(platform.system().lower(), platform.architecture()[0])"` | 
					
						
							| 
									
										
										
										
											2017-01-03 19:25:04 +01:00
										 |  |  |     case $PLATFORM in | 
					
						
							|  |  |  | 	"linux 32bit" | "linux2 32bit") ARCH="linux32";; | 
					
						
							|  |  |  | 	"linux 64bit" | "linux2 64bit") ARCH="linux64";; | 
					
						
							|  |  |  | 	"windows 32 bit") ARCH="win32";; | 
					
						
							|  |  |  | 	"windows 64 bit") ARCH="win64";; | 
					
						
							|  |  |  | 	"mac 64bit") ARCH="macos";; | 
					
						
							|  |  |  |     esac | 
					
						
							|  |  |  |     GECKODRIVER_URL="https://github.com/mozilla/geckodriver/releases/download/$GECKODRIVER_VERSION/geckodriver-$GECKODRIVER_VERSION-$ARCH.tar.gz"; | 
					
						
							| 
									
										
										
										
											2017-08-13 13:45:02 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-16 18:14:07 +02:00
										 |  |  |     if [ -z "$1" ]; then | 
					
						
							| 
									
										
										
										
											2017-08-13 13:45:02 +02:00
										 |  |  | 	if [ -z "$VIRTUAL_ENV" ]; then | 
					
						
							|  |  |  | 	    echo "geckodriver can't be installed because VIRTUAL_ENV is not set, you should download it from\n  $GECKODRIVER_URL" | 
					
						
							|  |  |  | 	    exit     | 
					
						
							|  |  |  | 	else | 
					
						
							| 
									
										
										
										
											2017-08-16 18:14:07 +02:00
										 |  |  | 	    GECKODRIVER_DIR="$VIRTUAL_ENV/bin" | 
					
						
							| 
									
										
										
										
											2017-08-13 13:45:02 +02:00
										 |  |  | 	fi | 
					
						
							| 
									
										
										
										
											2017-01-03 19:25:04 +01:00
										 |  |  |     else | 
					
						
							| 
									
										
										
										
											2017-08-16 18:14:07 +02:00
										 |  |  | 	GECKODRIVER_DIR="$1" | 
					
						
							|  |  |  | 	mkdir -p "$GECKODRIVER_DIR" | 
					
						
							| 
									
										
										
										
											2017-01-03 19:25:04 +01:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2017-08-13 13:45:02 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-16 18:14:07 +02:00
										 |  |  |     echo "Installing $GECKODRIVER_DIR/geckodriver from\n  $GECKODRIVER_URL" | 
					
						
							| 
									
										
										
										
											2017-08-13 13:45:02 +02:00
										 |  |  |      | 
					
						
							|  |  |  |     FILE=`mktemp` | 
					
						
							| 
									
										
										
										
											2017-08-16 18:14:07 +02:00
										 |  |  |     wget "$GECKODRIVER_URL" -qO $FILE && tar xz -C "$GECKODRIVER_DIR" -f $FILE geckodriver | 
					
						
							| 
									
										
										
										
											2017-08-13 13:45:02 +02:00
										 |  |  |     rm $FILE | 
					
						
							| 
									
										
										
										
											2017-08-16 18:14:07 +02:00
										 |  |  |     chmod 777 "$GECKODRIVER_DIR/geckodriver" | 
					
						
							| 
									
										
										
										
											2017-01-03 19:25:04 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-02 11:14:49 +01:00
										 |  |  | pep8_check() { | 
					
						
							|  |  |  |     echo '[!] Running pep8 check' | 
					
						
							| 
									
										
										
										
											2016-01-18 12:47:31 +01:00
										 |  |  |     # ignored rules: | 
					
						
							|  |  |  |     #  E402 module level import not at top of file | 
					
						
							|  |  |  |     #  W503 line break before binary operator | 
					
						
							| 
									
										
										
										
											2017-02-12 15:06:01 +01:00
										 |  |  |     pep8 --exclude=searx/static --max-line-length=120 --ignore "E402,W503" "$SEARX_DIR" "$BASE_DIR/tests" | 
					
						
							| 
									
										
										
										
											2016-01-02 11:14:49 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | unit_tests() { | 
					
						
							|  |  |  |     echo '[!] Running unit tests' | 
					
						
							|  |  |  |     python -m nose2 -s "$BASE_DIR/tests/unit" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | py_test_coverage() { | 
					
						
							|  |  |  |     echo '[!] Running python test coverage' | 
					
						
							|  |  |  |     PYTHONPATH=`pwd` python -m nose2 -C --coverage "$SEARX_DIR" -s "$BASE_DIR/tests/unit" | 
					
						
							|  |  |  |     coverage report | 
					
						
							|  |  |  |     coverage html | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | robot_tests() { | 
					
						
							|  |  |  |     echo '[!] Running robot tests' | 
					
						
							| 
									
										
										
										
											2016-01-02 12:15:47 +01:00
										 |  |  |     PYTHONPATH=`pwd` python "$SEARX_DIR/testing.py" robot | 
					
						
							| 
									
										
										
										
											2016-01-02 11:14:49 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | tests() { | 
					
						
							|  |  |  |     set -e | 
					
						
							|  |  |  |     pep8_check | 
					
						
							|  |  |  |     unit_tests | 
					
						
							| 
									
										
										
										
											2017-08-13 12:17:26 +02:00
										 |  |  |     install_geckodriver | 
					
						
							| 
									
										
										
										
											2016-01-02 11:14:49 +01:00
										 |  |  |     robot_tests | 
					
						
							|  |  |  |     set +e | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | build_style() { | 
					
						
							| 
									
										
										
										
											2017-02-12 15:06:01 +01:00
										 |  |  |     lessc --clean-css="--s1 --advanced --compatibility=ie9" "$BASE_DIR/searx/static/$1" "$BASE_DIR/searx/static/$2" | 
					
						
							| 
									
										
										
										
											2016-01-02 11:14:49 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | styles() { | 
					
						
							|  |  |  |     echo '[!] Building styles' | 
					
						
							| 
									
										
										
										
											2017-08-13 12:17:26 +02:00
										 |  |  |     build_style themes/legacy/less/style.less themes/legacy/css/style.css | 
					
						
							|  |  |  |     build_style themes/legacy/less/style-rtl.less themes/legacy/css/style-rtl.css | 
					
						
							|  |  |  |     build_style themes/courgette/less/style.less themes/courgette/css/style.css | 
					
						
							|  |  |  |     build_style themes/courgette/less/style-rtl.less themes/courgette/css/style-rtl.css | 
					
						
							|  |  |  |     build_style less/bootstrap/bootstrap.less css/bootstrap.min.css | 
					
						
							|  |  |  |     build_style themes/pix-art/less/style.less themes/pix-art/css/style.css | 
					
						
							| 
									
										
										
										
											2017-08-13 13:45:02 +02:00
										 |  |  |     # built using grunt | 
					
						
							|  |  |  |     #build_style themes/oscar/less/pointhi/oscar.less themes/oscar/css/pointhi.min.css | 
					
						
							|  |  |  |     #build_style themes/oscar/less/logicodev/oscar.less themes/oscar/css/logicodev.min.css | 
					
						
							|  |  |  |     #build_style themes/simple/less/style.less themes/simple/css/searx.min.css | 
					
						
							|  |  |  |     #build_style themes/simple/less/style-rtl.less themes/simple/css/searx-rtl.min.css | 
					
						
							| 
									
										
										
										
											2017-08-13 12:17:26 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-13 13:45:02 +02:00
										 |  |  | npm_packages() { | 
					
						
							|  |  |  |     echo '[!] install NPM packages for oscar theme' | 
					
						
							| 
									
										
										
										
											2017-08-13 12:17:26 +02:00
										 |  |  |     cd $BASE_DIR/searx/static/themes/oscar | 
					
						
							|  |  |  |     npm install | 
					
						
							| 
									
										
										
										
											2017-08-13 13:45:02 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     echo '[!] install NPM packages for simple theme'     | 
					
						
							| 
									
										
										
										
											2017-08-13 12:17:26 +02:00
										 |  |  |     cd $BASE_DIR/searx/static/themes/simple | 
					
						
							|  |  |  |     npm install | 
					
						
							| 
									
										
										
										
											2016-01-02 11:14:49 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-02 12:21:40 +01:00
										 |  |  | grunt_build() { | 
					
						
							| 
									
										
										
										
											2017-08-13 12:17:26 +02:00
										 |  |  |     echo '[!] Grunt build : oscar theme' | 
					
						
							|  |  |  |     grunt --gruntfile "$SEARX_DIR/static/themes/oscar/gruntfile.js" | 
					
						
							|  |  |  |     echo '[!] Grunt build : simple theme'     | 
					
						
							|  |  |  |     grunt --gruntfile "$SEARX_DIR/static/themes/simple/gruntfile.js" | 
					
						
							| 
									
										
										
										
											2016-01-02 11:14:49 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | locales() { | 
					
						
							| 
									
										
										
										
											2017-08-13 12:17:26 +02:00
										 |  |  |     pybabel compile -d "$SEARX_DIR/translations" | 
					
						
							| 
									
										
										
										
											2016-01-02 11:14:49 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-02 16:04:32 +01:00
										 |  |  | help() { | 
					
						
							| 
									
										
										
										
											2016-03-17 21:31:45 +01:00
										 |  |  |     [ -z "$1" ] || printf "Error: $1\n" | 
					
						
							| 
									
										
										
										
											2016-01-02 16:04:32 +01:00
										 |  |  |     echo "Searx manage.sh help
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Commands | 
					
						
							|  |  |  | ======== | 
					
						
							| 
									
										
										
										
											2017-08-13 13:45:02 +02:00
										 |  |  |     npm_packages         - Download & install dependencies | 
					
						
							| 
									
										
										
										
											2016-01-02 16:04:32 +01:00
										 |  |  |     grunt_build          - Build js files | 
					
						
							|  |  |  |     help                 - This text | 
					
						
							|  |  |  |     locales              - Compile locales | 
					
						
							|  |  |  |     pep8_check           - Pep8 validation | 
					
						
							|  |  |  |     py_test_coverage     - Unit test coverage | 
					
						
							|  |  |  |     robot_tests          - Run selenium tests | 
					
						
							|  |  |  |     styles               - Build less files | 
					
						
							|  |  |  |     tests                - Run all python tests (pep8, unit, robot) | 
					
						
							|  |  |  |     unit_tests           - Run unit tests | 
					
						
							| 
									
										
										
										
											2016-01-10 20:29:07 +01:00
										 |  |  |     update_dev_packages  - Check & update development and production dependency changes | 
					
						
							| 
									
										
										
										
											2016-01-02 16:04:32 +01:00
										 |  |  |     update_packages      - Check & update dependency changes | 
					
						
							| 
									
										
										
										
											2017-08-13 12:17:26 +02:00
										 |  |  |     install_geckodriver  - Download & install geckodriver if not already installed (required for robot_tests) | 
					
						
							| 
									
										
										
										
											2016-01-02 16:04:32 +01:00
										 |  |  | "
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-17 21:43:31 +01:00
										 |  |  | [ "$(command -V "$ACTION" | grep ' function$')" = "" ] \
 | 
					
						
							|  |  |  |     && help "action not found" \
 | 
					
						
							| 
									
										
										
										
											2017-08-16 18:14:07 +02:00
										 |  |  |     || $ACTION "$2" |