view .bash_overrides @ 473:da087c5724d4

python/hgrc.py
author Jeff Hammel <jhammel@mozilla.com>
date Sat, 10 Aug 2013 19:11:11 -0700
parents 32b202653753
children ed193fcaa0dc
line wrap: on
line source

#!/bin/bash

### command overrides too elaborate for aliases

cd() {

    ENV=""
    if [ -n "${VIRTUAL_ENV}" ]
    then
	ENV="${VIRTUAL_ENV}"
    fi


    if [ -d "$@" ]
    then
	command cd "$@"
    else
	if [ -e "$@" ]
	then
	    command cd `dirname "$@"`
	else
	    if [[ "$@" == "^"  &&  -n "${ENV}" ]]
	    then
		command cd "${ENV}"
	    else
		command cd "$@"
	    fi
	fi
    fi

    # handle ENVs
    if [ -e "bin/activate" ]
    then
	if [ -n "${ENV}" ]
        then
	    if [ "${ENV}" != "${PWD}" ]
	    then
		if [[ -n "`type -t deactivate`" ]]
		then
		    deactivate
		fi
	    else
		return
	    fi
	fi
	source "bin/activate"
    fi

    ENV=""
    if [ -n "${VIRTUAL_ENV}" ]
    then
	ENV="${VIRTUAL_ENV}"
    fi

    if [ -n "${ENV}" ]
    then
	FULLPWD=$(python -c 'import os; print os.getcwd()')
	if (( ! `expr match "${FULLPWD}" "${ENV}"` ))
	then
	    if [[ -n "`type -t deactivate`" ]]
	    then
		deactivate
	    fi
	fi
    fi
    unset ENV
}

function emacsclient() {
    command emacsclient $@ > /dev/null &
}

function find {

    if (( ! $# ))
    then
	command find
        return
    fi

    if [ -d $1 ]
    then
	DIR="$1"
	shift
    else
	DIR="$PWD"
    fi

    if [ "$#" == "1" ]
    then
	`which find` -L "$PWD" -not -path '*.svn*' -iname "$1"
	return 0
    fi

    COMMAND="`which find` -L \"$DIR\" -not -path '*.svn*' $@"
#echo $COMMAND # for debugging
    `which find` -L "$DIR" -not -path '*.svn*' "$@"
}

# make hg safer since $HOME is versioned
function hg {
    if [[ "$(command hg root)" == "${HOME}" ]]
    then
        if [[ "$*" == st* ]]
        then
            command hg st -q
            return
        fi
        if [[ "$*" == res* ]] || [[ "$*" == pur* ]]
        then
            echo "Aborting \'hg $*\'; hg root is ${HOME}!"
            return 1
        fi
    fi
    command hg "$@"
}

function lsdiff {
    # TODO: extract this general pattern as a bash "decorator"
    if expr "$1" : 'http[s]\?://.*' &> /dev/null
    then
        curl --location "$1" 2> /dev/null | command lsdiff
    else
        command lsdiff "$@"
    fi

}

function unlink {
    command unlink `echo $@ | sed 's/\/$//g'`
}