Skip to content

Commit 03648f3

Browse files
author
Cerem Cem ASLAN
committed
cleanup virtual environment creation and usage procedure
1 parent c5dfe29 commit 03648f3

File tree

5 files changed

+31
-33
lines changed

5 files changed

+31
-33
lines changed

Makefile

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
11
DIR:=$(strip $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))))
22

3-
include $(DIR)/venv-version.txt
4-
VENV_NAME := $(VENV_NAME)
5-
$(eval VENV_PATH := $(shell echo "$$$(VENV_VERSION)"))
63
APP := main
7-
CONFIG := ../dcs-modules.txt
8-
9-
__test_variables:
10-
@echo $(VENV_VERSION) path is set to $(VENV_PATH)
4+
CONFIG := $(DIR)../dcs-modules.txt
115

126
.PHONY: test-es6-compat update-deps update-app-version
137

@@ -63,13 +57,25 @@ freeze-venv: __c
6357
freeze ./requirements.txt
6458

6559
create-venv:
66-
$(if $(VENV_PATH),$(error $(VENV_VERSION) variable is set, use it instead: $(VENV_PATH)))
60+
ifndef SCADAJS_VENV_PATH
61+
$(error SCADAJS_VENV_PATH can not be empty. Please provide an installation path to create a venv.)
62+
endif
63+
ifneq ($(wildcard $(SCADAJS_VENV_PATH)/.*),)
64+
$(error SCADAJS_VENV_PATH is already created, use that instead: $(SCADAJS_VENV_PATH)))
65+
endif
66+
$(eval VENV_NAME := $(shell basename $(SCADAJS_VENV_PATH)))
6767
$(eval NODE_VERSION := $(shell echo `grep "^#node@" nodeenv.txt | cut -d@ -f2` | sed 's/^$$/system/'))
68-
nodeenv --requirement=./nodeenv.txt --node=$(NODE_VERSION) --prompt="($(VENV_NAME))" --jobs=4 nodeenv
68+
nodeenv --requirement=./nodeenv.txt --node=$(NODE_VERSION) --prompt="($(VENV_NAME))" --jobs=4 $(SCADAJS_VENV_PATH)
6969

7070
use-venv:
7171
./venv
7272

73+
update-venv:
74+
@echo "Virtual environment should not be updated. Create a new virtual environment"
75+
@echo "with the new dependency versions and use that venv instead. If there is no "
76+
@echo "breaking changes, simply backup the old venv and replace the new venv with "
77+
@echo "the old one. This is the safest path to follow."
78+
7379
__prepare_release_dir:
7480
@( if [ ! -d release/$(APP) ]; then \
7581
mkdir -p release; \

doc/using-virtual-environment.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
3. Create the virtual environment and activate it:
1919

2020
$ cd ./scada.js
21-
$ make create-venv
21+
$ make create-venv SCADAJS_VENV_PATH=/path/to/somewhere/scadajs1
2222
$ ./venv
2323
(scadajs1) $
2424

nodeenv.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#node@12.18.2
1+
#node@16.15.1
22
es-check@5.1.0
33
gulp@4.0.2
44
livescript@1.6.0

venv

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,46 +11,42 @@ set -e -o pipefail
1111
safe_source () { [[ ! -z ${1:-} ]] && source $1; _dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"; _sdir=$(dirname "$(readlink -f "$0")"); }; safe_source
1212
_sdir=$(dirname $(realpath ${BASH_SOURCE[0]}))
1313

14-
source $_sdir/venv-version.txt
15-
16-
ENV_VERSION="$VENV_VERSION"
17-
VENV_PATH=
1814
LOCAL_VENV="$_sdir/nodeenv"
1915

20-
[[ -d "$LOCAL_VENV" ]] && VENV_PATH=$LOCAL_VENV
16+
[[ -d "$LOCAL_VENV" ]] && SCADAJS_VENV_PATH=$LOCAL_VENV
2117

2218
_sourced=
2319
if [[ "${BASH_SOURCE[0]}" != "${0}" ]]; then
2420
#echo "script ${BASH_SOURCE[0]} is being sourced ..."
2521
_sourced="yes"
2622
else
27-
[[ -n ${1:-} ]] && VENV_PATH=$1
23+
[[ -n ${1:-} ]] && SCADAJS_VENV_PATH="$1"
2824
fi
2925

30-
SCADAJS_VENV=${VENV_PATH:-$(eval echo "\$$ENV_VERSION")}
31-
32-
if [[ ! -d "$SCADAJS_VENV" ]]; then
33-
if [[ -n $SCADAJS_VENV ]]; then
34-
echo "$ENV_VERSION variable is set but it's not a valid directory."
35-
echo "Please check $SCADAJS_VENV is a valid virtual environment"
26+
if [[ ! -d "$SCADAJS_VENV_PATH" ]]; then
27+
if [[ -n $SCADAJS_VENV_PATH ]]; then
28+
echo "$SCADAJS_VENV_PATH variable is set but it's not a valid directory."
29+
echo "Please ensure that $SCADAJS_VENV_PATH is a valid virtual environment"
3630
else
3731
cat <<EOL
3832
39-
Please set $ENV_VERSION variable (in your .bashrc file)
33+
ERROR: We need a virtual environment to work.
4034
41-
or
35+
Please do one of the followings:
4236
43-
Pass the virtual environment path as the first argument
37+
1. Create a virtual environment in THIS directory and name it "nodeenv".
38+
2. Set \$SCADAJS_VENV_PATH variable in your startup script.
39+
3. Pass the virtual environment path as the first argument to this script.
4440
4541
EOL
4642
fi
4743
exit 1
4844
fi
4945

50-
echo "Using nodeenv at ${SCADAJS_VENV}"
46+
echo "Using nodeenv at ${SCADAJS_VENV_PATH}"
5147
if [[ -z $_sourced ]]; then
52-
bash --rcfile <(echo ". ~/.bashrc; . ${SCADAJS_VENV}/bin/activate")
48+
bash --rcfile <(echo ". ~/.bashrc; . ${SCADAJS_VENV_PATH}/bin/activate")
5349
else
54-
. ${SCADAJS_VENV}/bin/activate
50+
. ${SCADAJS_VENV_PATH}/bin/activate
5551
fi
5652

venv-version.txt

Lines changed: 0 additions & 4 deletions
This file was deleted.

0 commit comments

Comments
 (0)