Skip to content

Instantly share code, notes, and snippets.

@unbracketed
Created July 9, 2010 20:13
Show Gist options
  • Save unbracketed/469998 to your computer and use it in GitHub Desktop.
Save unbracketed/469998 to your computer and use it in GitHub Desktop.
My bashrc
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
source ~/.mybash/django_bash_completion.sh
#load Firefox with a development profile
alias ffdev="firefox -no-remote -P dev"
#Commands that can be handy when working in Python environments
#-----------
#recursively remove .pyc files
function rmpyc(){
find . -name "*.pyc" -exec rm -rf {} \;
}
#launch a local SMTP echo server
function pysmtp(){
python -m smtpd -n -c DebuggingServer localhost:1025
}
#Git
alias gs='git status'
alias ga='git add'
alias gp='git push'
#alias gb='git branch -a -v'
alias gb='git checkout -b'
alias gs='git status'
alias gd='git diff'
# gc => git checkout master
# gc bugs => git checkout bugs
function gc {
if [ -z "$1" ]; then
git checkout master
else
git checkout $1
fi
}
alias gl='git log --graph --pretty=format:"%Cred%h%Creset — %s %Cgreen(%cr)%Creset" --abbrev-commit --date=relative'
alias bashrc='vi ~/.bashrc && source ~/.bashrc'
# #########################################################################
# This bash script adds tab-completion feature to django-admin.py and
# manage.py.
#
# Testing it out without installing
# =================================
#
# To test out the completion without "installing" this, just run this file
# directly, like so:
#
# . ~/path/to/django_bash_completion
#
# Note: There's a dot ('.') at the beginning of that command.
#
# After you do that, tab completion will immediately be made available in your
# current Bash shell. But it won't be available next time you log in.
#
# Installing
# ==========
#
# To install this, point to this file from your .bash_profile, like so:
#
# . ~/path/to/django_bash_completion
#
# Do the same in your .bashrc if .bashrc doesn't invoke .bash_profile.
#
# Settings will take effect the next time you log in.
#
# Uninstalling
# ============
#
# To uninstall, just remove the line from your .bash_profile and .bashrc.
_django_completion()
{
COMPREPLY=( $( COMP_WORDS="${COMP_WORDS[*]}" \
COMP_CWORD=$COMP_CWORD \
DJANGO_AUTO_COMPLETE=1 $1 ) )
}
complete -F _django_completion -o default django-admin.py manage.py django-admin
_python_django_completion()
{
if [[ ${COMP_CWORD} -ge 2 ]]; then
PYTHON_EXE=$( basename -- ${COMP_WORDS[0]} )
echo $PYTHON_EXE | egrep "python([2-9]\.[0-9])?" >/dev/null 2>&1
if [[ $? == 0 ]]; then
PYTHON_SCRIPT=$( basename -- ${COMP_WORDS[1]} )
echo $PYTHON_SCRIPT | egrep "manage\.py|django-admin(\.py)?" >/dev/null 2>&1
if [[ $? == 0 ]]; then
COMPREPLY=( $( COMP_WORDS="${COMP_WORDS[*]:1}" \
COMP_CWORD=$(( COMP_CWORD-1 )) \
DJANGO_AUTO_COMPLETE=1 ${COMP_WORDS[*]} ) )
fi
fi
fi
}
# Support for multiple interpreters.
unset pythons
if command -v whereis &>/dev/null; then
python_interpreters=$(whereis python | cut -d " " -f 2-)
for python in $python_interpreters; do
pythons="${pythons} $(basename -- $python)"
done
pythons=$(echo $pythons | tr " " "\n" | sort -u | tr "\n" " ")
else
pythons=python
fi
complete -F _python_django_completion -o default $pythons
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment