|
# Lines configured by zsh-newuser-install |
|
HISTFILE=~/.histfile |
|
HISTSIZE=1000 |
|
SAVEHIST=1000 |
|
bindkey -e |
|
# End of lines configured by zsh-newuser-install |
|
# The following lines were added by compinstall |
|
zstyle :compinstall filename '/home/dhowell/.zshrc' |
|
|
|
autoload -Uz compinit |
|
compinit |
|
# End of lines added by compinstall |
|
|
|
#pyenv |
|
export PYENV_ROOT="$HOME/.pyenv" |
|
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" |
|
eval "$(pyenv init -)" |
|
|
|
# change colours and default for ls |
|
export CLICOLOR=1 |
|
export LSCOLORS=ExFxBxDxCxegedabagacad |
|
alias ls='ls -Fhla' |
|
|
|
|
|
function mkvenv() { |
|
if [[ -z "$1" ]]; then |
|
echo "usage: mkvenv [--force] [--path VENV_PATH] [PYTHON_VERSION]" |
|
return 1 |
|
fi |
|
|
|
local cyan='\033[0;36m' |
|
local red='\033[0;31m' |
|
local nocolor='\033[0m' |
|
local grey='\033[0;90m' |
|
|
|
local force="" |
|
local venvdir=".venv" |
|
local version="" |
|
if [[ -f .python-version ]]; then |
|
version="$(cat .python-version)" |
|
fi |
|
|
|
while [[ -n "$1" ]]; do case $1 in |
|
-p | --path ) |
|
shift; venvdir=$1 |
|
;; |
|
-f | --force ) |
|
force=1 |
|
;; |
|
*) |
|
version="$1" |
|
;; |
|
esac; shift; done |
|
|
|
hash pyenv 2>/dev/null || { echo -e "${red}pyenv not found; try 'brew install pyenv'${nocolor}"; return 1; } |
|
hash direnv 2>/dev/null || { echo -e "${red}direnv not found; try 'brew install direnv'${nocolor}"; return 1; } |
|
|
|
if [[ -f .python-version ]]; then |
|
local existing="$(cat .python-version)" |
|
if [[ -z "$force" && "$existing" != "$version" ]]; then |
|
echo -e "${red}${version} does not match .python-version (${existing})${nocolor}" |
|
return 1 |
|
fi |
|
fi |
|
pyenv local "$version" || return 1 |
|
|
|
if [[ -d "$venvdir" ]]; then |
|
if [[ -z "$force" ]]; then |
|
echo -e "${red}${venvdir} already exists! use -f to overwrite it${nocolor}" |
|
return 1 |
|
elif [[ -n "$venvdir" && "$venvdir" != "/" && "$venvdir" != "" ]]; then |
|
rm -r "$venvdir" |
|
fi |
|
fi |
|
|
|
printf "$grey" |
|
python -m venv "$venvdir" || return 1 |
|
printf "$nocolor" |
|
|
|
touch .envrc |
|
sed -i '/^source ".*bin\/activate"$/d' .envrc \ |
|
&& echo "source \"$venvdir/bin/activate\"" >> .envrc |
|
sed -i '/^unset PS1$/d' .envrc \ |
|
&& echo "unset PS1" >> .envrc |
|
|
|
direnv allow |
|
|
|
echo -e "${cyan}Created Python virtual environment in $(cd "$venvdir" 2> /dev/null ; pwd) ${nocolor}" |
|
} |
|
|
|
|
|
# git & right prompt |
|
autoload -Uz compinit && compinit |
|
autoload -Uz vcs_info |
|
precmd_vcs_info() { vcs_info } |
|
precmd_functions+=( precmd_vcs_info ) |
|
setopt prompt_subst |
|
|
|
PROMPT=\$vcs_info_msg_0_'%B%F{6}%~%f%b% %* %(?.%F{green}√.%F{red}?%?)%f |
|
%B%F{13}∫%f%b ' |
|
zstyle ':vcs_info:git:*' formats '%F{3}(%b)%r%f' |
|
zstyle ':vcs_info:*' enable git |
|
|
|
|
|
|
|
show_virtual_env() { |
|
if [[ -n "$VIRTUAL_ENV" && -n "$DIRENV_DIR" ]]; then |
|
echo "($(basename $VIRTUAL_ENV))" |
|
fi |
|
} |
|
|
|
# bash only |
|
# export -f show_virtual_env |
|
|
|
PS1='$(show_virtual_env)'$PS1 |
|
|
|
|
|
# terraform autocomplete |
|
autoload -U +X bashcompinit && bashcompinit |
|
complete -o nospace -C /usr/local/bin/terraform terraform |
|
|
|
|
|
# direnv - needs to be last |
|
eval "$(direnv hook zsh)" |