# POSIX -*- sh -*-
#

LS_OPTIONS=
for lsopt in -B --color=auto -F -N; do
    ls $lsopt > /dev/null 2>&1 && LS_OPTIONS="$LS_OPTIONS $lsopt"
done

if [ `uname -s` = "FreeBSD" ] && alias | grep -q "ls="; then
    unalias ls
fi

findcommand() {
    while [ "$#" -ge 1 ]; do
        P="$PATH"
        while [ "$P" ]; do 
            D=${P%%:*}
            P=${P#*:}
            if [ "$D" = "$P" ]; then
                P=
            fi
            if [ -z "$D" ]; then
                D=.
            fi
            if [ -x "$D/$1" ]; then
                echo "$D/$1"
                return 0
            fi
        done
        shift
    done
    return 1
}

_setlocale() {
    # Sets LANG to $2 if $1 matches locale -a's output.
    if [ -n "$LANG" ]; then
	return
    fi
    if ! findcommand locale >/dev/null; then
	return 1
    fi
    if [ "$#" != 2 ]; then
	echo "_setlocale pattern LANG-value"
    fi
    pattern="$1"
    _lang="$2"
    if LANG= locale -a | grep -q "$pattern" ; then
        export LANG="$_lang"
    fi
}

nod () {
    NOD="$HOME/Desktop/NoD.txt"
    if ! [ -f "$NOD" ]; then 
        echo "No ~/Desktop/NoD.txt"
        exit 1
    fi
    if ! grep -q $(date -I) ${NOD}; then
        printf "\n%s:\n\n- Mail, IRC, etc\n" $(date -I) >> ${NOD}
    fi
    printf "- %s" "$@">> ${NOD}
    vim + ${NOD}
}

meetingdate () {
    TIME=$1
    TZMEETING=$2
    TZ=${TZ:=$3}
    date -d "$(TZ=$TZMEETING date --rfc-822 -d "$TIME")"
}

blog () {
    pushd $(pwd)
    if [ ! -d "$HOME/blog" ]; then
        echo "You don't have your blog checked out here.  Can't blog."
        return 1
    fi
    if [ "$1" ]; then
        CAT="$1"
    else
        CAT="/"
    fi

    if [ "$2" ]; then
        SUBJ="$(echo $2 | tr ' ' '_')"
    else
        SUBJ="blank_subject"
    fi
    DIR=$HOME/blog/$CAT/
    FILE=$(date +"%Y-%m-%d-%H-%M")_$SUBJ.txt
    cd $DIR
    $EDITOR $FILE
    if [ "$OFFLINE" != "1" ]; then
        svn add $FILE
        svn ci -m"Initial commit" $FILE
    fi
    popd
}

is_debian () {
    if [ -f /etc/debian_version ]; then
        return 0
    fi
    return 1
}

removepathelem () {
    PATH=$(echo "$PATH" | sed -e "s,::*$1:,:,g" -e "s,::,:,g")
}

setpathifdir () {
    if [ -d "$1" ]; then
        removepathelem "$1"
        PATH="$1:$PATH"
    fi
}

appendpathifdir () {
    if [ -d "$1" ]; then
        removepathelem "$1"
        PATH="$PATH:$1"
    fi
}

if is_debian; then
    appendpathifdir /store/gnu/bin
    appendpathifdir /store/bin
else
    setpathifdir /store/gnu/bin
    setpathifdir /store/bin
fi
setpathifdir /usr/local/bin
# Brew is silly.
setpathifdir /usr/local/share/python
setpathifdir "$HOME/.cargo/bin"
setpathifdir $HOME/usr/bin
setpathifdir $HOME/bin
appendpathifdir /usr/local/sbin
appendpathifdir /usr/sbin
appendpathifdir /sbin

if [ `id -u` = "0" ]; then 
    setpathifdir /sbin
    setpathifdir /usr/sbin
    setpathifdir /usr/local/sbin
    setpathifdir /local/sbin
fi

CVSROOT=~/data/cvs
EDITOR=emacs
TZ=Europe/Oslo
WWW_HOME=http://localhost/~tfheen/services.html
test -x "$HOME/bin/lesspipe.sh" && LESSOPEN="|$HOME/bin/lesspipe.sh '%s'"
test -x "$HOME/bin/lesspipe" && LESSOPEN="|$HOME/bin/lesspipe '%s'"
LESS="-mR"
RSYNC_RSH=ssh
CVS_RSH=ssh
#MAIL=/var/spool/mail/tfheen
DEBEMAIL=tfheen@debian.org
DEBFULLNAME="Tollef Fog Heen"
CVSEDITOR="emacs -nw"
SVN_EDITOR="emacs -nw"
XTERM=$(findcommand gnome-terminal pterm Eterm xterm)
PAGER=less
GNUSTEP_USER_ROOT="$HOME/.GNUstep"
OOO_DISABLE_RECOVERY=True
GTK_IM_MODULE=uim
QT_IM_MODULE=uim
XMODIFIERS=@im=uim

MOSH_ESCAPE_KEY='^'

CHROOT=""
if [ -f /etc/debian_chroot ]; then
    CHROOT="($(cat /etc/debian_chroot | tr -d '\n'))"
fi

case `uname -s` in
    *BSD|SunOS)
        HOSTNAME=`hostname`
        DOMAINNAME=`hostname | cut -d. -f 2-`
        ;;
    Linux)
        HOSTNAME=`hostname -f`
        DOMAINNAME=`hostname -f | cut -d. -f 2-`
        ;;
esac

SHORT_HOSTNAME=$(echo "$HOSTNAME" | cut -d . -f 1)

if [ "$LC_CTYPE" = "UTF-8" ]; then
    unset LC_CTYPE
fi

LANG=
_setlocale '^nb_NO.utf8$' nb_NO.UTF-8
_setlocale '^en_US.utf8$' en_US.UTF-8
_setlocale '^no_NO.UTF-8$' no_NO.UTF-8
if [ -z "$LANG" ]; then
    export LANG=C
fi

case "$DOMAINNAME" in
    samfundet*)
        mesg y
        EMAIL=tfheen@samfundet.no
        ;;
    *)
        :
        ;;
esac

removepathelem "\\."

if [ -e /usr/local/share/python/virtualenvwrapper.sh ]; then
    export WORKON_HOME=$HOME/.virtualenvs
    source /usr/local/share/python/virtualenvwrapper.sh
    export PIP_VIRTUALENV_BASE=$WORKON_HOME
fi

if [ "$XDG_RUNTIME_DIR" ]; then
    if [ -e "$XDG_RUNTIME_DIR/ssh-agent.env" ]; then
	. "$XDG_RUNTIME_DIR/ssh-agent.env"
	if [ -n "$SSH_AGENT_PID" ]; then
	    if ! kill -0 $SSH_AGENT_PID 2>/dev/null; then
		# agent not running, unset
		unset SSH_AUTH_SOCK
		unset SSH_AGENT_PID
		rm -f $XDG_RUNTIME_DIR/ssh-agent.env
	    fi
	fi
    else # write out settings
	if [ -n "$SSH_AGENT_PID" ]; then
	    if kill -0 $SSH_AGENT_PID; then
		cat > "$XDG_RUNTIME_DIR/ssh-agent.env" <<EOF
SSH_AUTH_SOCK=$SSH_AUTH_SOCK; export SSH_AUTH_SOCK;
SSH_AGENT_PID=$SSH_AGENT_PID; export SSH_AGENT_PID;
EOF
	    else
		unset SSH_AUTH_SOCK
		unset SSH_AGENT_PID
	    fi
	fi
    fi
fi

export CHROMIUM_FLAGS='--enable-remote-extensions'
export WINDOW_MANAGER=$(findcommand openbox metacity twm)
export GIT_SSH=$HOME/.ssh/sshwrapper
export RMADISON_URL_MAP_UBUNTU=https://qa.debian.org/cgi-bin/madison.cgi\?table=ubuntu
export ANSIBLE_NOCOWS=1

export LS_OPTIONS CVSROOT EDITOR TZ WWW_HOME LESSOPEN LESS RSYNC_RSH
export CVS_RSH LANG DEBEMAIL DEBFULLNAME CVSEDITOR HOSTNAME
export DOMAINNAME PATH EMAIL XTERM SVN_EDITOR GNUSTEP_USER_ROOT
export OOO_DISABLE_RECOVERY GTK_IM_MODULE QT_IM_MODULE MOSH_ESCAPE_KEY

if [ -f "$HOME/.gnupg/gpg-agent-info-$HOSTNAME" ]; then
    . "$HOME/.gnupg/gpg-agent-info-$HOSTNAME"
elif [ -f "$HOME/.gnupg/gpg-agent-info-$(hostname)" ]; then
    . "$HOME/.gnupg/gpg-agent-info-$(hostname)"
fi
