Add resources directory with baseline common file/templates
This commit is contained in:
76
resources/bash/pyenv.sh
Normal file
76
resources/bash/pyenv.sh
Normal file
@@ -0,0 +1,76 @@
|
||||
#!/env/bash
|
||||
|
||||
function pyenv () {
|
||||
usage="Custom Python virtualenv manager
|
||||
sivenv [list, delete, load, new] [VENV]
|
||||
Commands:
|
||||
list List existing virtualenvs (alias: 'ls')
|
||||
load VENV Activate the virtualenv named VENV (alias: 'source')
|
||||
new VENV [VERSION] Create and load a new virtualenv named VENV. Optionally VERSION
|
||||
can be a python version to use for creating the venv. Note that
|
||||
only python3 versions are supported.
|
||||
delete VENV Delete the virtualenv named VENV (alias: 'rm')";
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "Error: no command specified" >&2;
|
||||
echo "$usage";
|
||||
return 1;
|
||||
fi;
|
||||
|
||||
case $1 in
|
||||
"-h"| "--help")
|
||||
echo "$usage";
|
||||
return 0;;
|
||||
"ls"| "list")
|
||||
lsvenv "$VIRTUALENV_DIR";;
|
||||
"rm"| "delete")
|
||||
if [ $# -ne 2 ]; then
|
||||
echo "Error: no virtualenv specified" >&2;
|
||||
return 1;
|
||||
fi;
|
||||
rm --recursive --force "${VIRTUALENV_DIR:?}/$2";;
|
||||
"source" | "load")
|
||||
if [ $# -ne 2 ]; then
|
||||
echo "Error: no virtualenv specified" >&2;
|
||||
return 1;
|
||||
fi;
|
||||
# shellcheck source=/dev/null
|
||||
source "$VIRTUALENV_DIR/$2/bin/activate";;
|
||||
"new")
|
||||
if [ $# -lt 2 ]; then
|
||||
echo "Error: no virtualenv specified" >&2;
|
||||
return 1;
|
||||
fi;
|
||||
if [ $# -eq 3 ]; then
|
||||
version="$3";
|
||||
else
|
||||
version="3";
|
||||
fi
|
||||
if ! command -v "python$version" &>/dev/null; then
|
||||
echo "Error: no interpreter found for python version '$version'" >&2;
|
||||
return 2;
|
||||
fi
|
||||
|
||||
if python$version -m venv "$VIRTUALENV_DIR/$2"; then
|
||||
echo "New virtualenv '$2' created using $(command -v python$version)" >&2;
|
||||
# shellcheck source=/dev/null
|
||||
source "$VIRTUALENV_DIR/$2/bin/activate"
|
||||
else
|
||||
return $?;
|
||||
fi;;
|
||||
*)
|
||||
echo "Error: unknown command '$1'" >&2;
|
||||
echo "$usage";
|
||||
return 1;;
|
||||
esac
|
||||
}
|
||||
|
||||
function lsvenv () {
|
||||
venvs=()
|
||||
for item in /usr/bin/ls -d "$1"/*/; do
|
||||
if stat "${item}/bin/activate" &>/dev/null; then
|
||||
venvs+=("$(basename "$item")");
|
||||
fi
|
||||
done
|
||||
echo "${venvs[*]}"
|
||||
}
|
Reference in New Issue
Block a user