1
0
mirror of https://git.decapod.one/brethil/dotfiles synced 2024-11-22 03:21:30 +01:00

zsh: python: add -f flag to mkvenv

- improve mkvenv with getopts option parsing
- add -f flag to force recreation of venv

Usage:
```bash
mkvenv [-sf] [venv_name]
```
This commit is contained in:
bretello 2023-11-11 18:54:40 +01:00
parent aaea49ecf8
commit 1537ddcc64
Signed by: brethil
GPG Key ID: 876AAC6290170FE7

View File

@ -1,25 +1,44 @@
mkvenv(){ mkvenv(){
local source_venv local source_venv force_create venv_name
if [[ $1 == "-s" ]]; then while getopts "sf" opt; do
source_venv=y case $opt in
s|source) source_venv=y ;;
f|force) force_create=y ;;
*) echo "Unknown option: $opt"; return 1 ;;
esac
done
echo "force=$force_create"
return
shift $(($OPTIND-1))
if [[ -n $1 ]]; then
venv_name=$1
shift shift
fi fi
# any arguments are passed on to the `venv` module as flags/arguments # any other arguments are passed on to the `venv` module as flags/arguments
if [[ -e .venv ]]; then echo ${venv_name}
echo "$(color $RED Error:) $(color $BOLD .venv) already exists." >&2 if [[ -e ${venv_name} ]]; then
return 1 if [[ -n ${force_create} ]]; then
if [[ -n $VIRTUAL_ENV ]]; then # deactivate venv if enabled
deactivate && info "Deactivated existing virtualenv" || red "Could not run deactivate";
fi
rm -rf ${venv_name} && info "Deleted existing virtualenv"
else
echo "$(color $RED Error:) $(color $BOLD .venv) already exists. Run with -f to recreate it." >&2
return 1
fi
fi fi
echo -n "Creating venv..." && python -m virtualenv $@ .venv || echo -e "Failed to create virtualenv. Is virtualenv installed? Try:\n $ pip install virtualenv" info "Creating virtualenv ${venv_name}... " && python -m virtualenv $@ ${venv_name}|| echo -e "Failed to create virtualenv. Is virtualenv installed? Try:\n $ pip install virtualenv"
if [[ -z ${source_venv} ]]; then if [[ -z ${source_venv} ]]; then
echo -n " done. Enable? [Y/n]" echo -n " done. Enable? [Y/n] "
read source_venv read source_venv
else else
echo "" echo ""
fi fi
if [[ $source_venv != "n" ]]; then if [[ $source_venv != "n" ]]; then
source .venv/bin/activate && echo -e "$(color $BOLD Enabled!) 🐍 $(color $BOLD$PURPLE $(python --version | cut -d " " -f2 )) ($(color $BOLD$GREEN $(pip --version | cut -d " " -f -2)))" source ${venv_name}/bin/activate && echo -e "$(color $BOLD Enabled!) 🐍 $(color $BOLD$PURPLE $(python --version | cut -d " " -f2 )) ($(color $BOLD$GREEN $(pip --version | cut -d " " -f -2)))"
fi fi
} }