ASR_BASE

Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/scripts/env_tools/git_prompt.bash b/scripts/env_tools/git_prompt.bash
new file mode 100755
index 0000000..bef8cb9
--- /dev/null
+++ b/scripts/env_tools/git_prompt.bash
@@ -0,0 +1,251 @@
+#!/bin/bash
+###############################################################################
+# IDENTIFICATION OF LOCAL HOST: CHANGE TO YOUR COMPUTER NAME
+###############################################################################
+
+
+PRIMARYHOST="localhost"
+
+###############################################################################
+# PROMPT
+###############################################################################
+
+###############################################################################
+# Terminal Title
+
+set_terminal_title() {
+    if [[ -z $@ ]]
+    then
+        TERMINAL_TITLE=$(pwd -P)
+    else
+        TERMINAL_TITLE=$@
+    fi
+}
+alias stt='set_terminal_title'
+alarm()  { perl -e 'alarm shift; exec @ARGV' "$@"; }
+
+STANDARD_PROMPT_COMMAND='history -a ; echo -ne "\033]0;${TERMINAL_TITLE}\007"'
+PROMPT_COMMAND=$STANDARD_PROMPT_COMMAND
+
+###############################################################################
+# Parses Git info for prompt
+
+function _set_git_envar_info {
+    GIT_BRANCH=""
+    GIT_HEAD=""
+    GIT_STATE=""
+    GIT_LEADER=""
+    GIT_ROOT=""
+    GIT_REPO=""
+    GIT_ACTION=""
+
+    if [[ $(which git 2>/dev/null) ]]
+    then
+
+        local IS_GIT
+	IS_GIT=$(\git rev-parse --show-toplevel 2>/dev/null)
+        if [[ -z $IS_GIT ]]
+        then
+            return
+        fi
+
+        GIT_ROOT=./$(\git rev-parse --show-cdup 2>/dev/null)
+	GIT_GIT=$(\git rev-parse --git-dir 2>/dev/null)
+
+        local STATUS
+        # STATUS=$(\git status 2>/dev/null)
+	STATUS=$(alarm 3 \git status 2>/dev/null)
+        if [[ -z $STATUS ]]
+        then
+            STATUS="alarmed"
+        fi
+
+        GIT_LEADER=":"
+        GIT_BRANCH="$(\git branch --no-color 2>/dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/')"
+        GIT_HEAD=":$(\git log -n1 --pretty=format:%h 2>/dev/null)"
+        GIT_REPO="$(\git rev-parse --show-toplevel 2>/dev/null | awk -F/ '{print $NF}')"
+
+        if [[ "$STATUS" == *'working directory clean'* ]]
+        then
+            GIT_STATE=""
+        else
+            GIT_HEAD=$GIT_HEAD":"
+            GIT_STATE=""
+            if [[ "$STATUS" == *'Changes to be committed:'* ]]
+            then
+                GIT_STATE=$GIT_STATE'+I' # Index has files staged for commit
+            fi
+            if [[ "$STATUS" == *'Changed but not updated:'* || "$STATUS" == *'Changes not staged for commit'* ]]
+            then
+                GIT_STATE=$GIT_STATE"+M" # Working tree has files modified but unstaged
+            fi
+            if [[ "$STATUS" == *'Untracked files:'* ]]
+            then
+                GIT_STATE=$GIT_STATE'+U' # Working tree has untracked files
+            fi
+            if [[ "$STATUS" == *'alarmed'* ]]
+            then
+                GIT_STATE=$GIT_STATE'*' # too much time to proceed status
+            fi
+            GIT_STATE=$GIT_STATE''
+        fi
+
+        if [ -f "$GIT_GIT/rebase-merge/interactive" ]; then
+            GIT_ACTION="REBASE-i"
+        elif [ -d "$GIT_GIT/rebase-merge" ]; then
+            GIT_ACTION="REBASE-m"
+        else
+            if [ -d "$GIT_GIT/rebase-apply" ]; then
+                if [ -f "$GIT_GIT/rebase-apply/rebasing" ]; then
+                    GIT_ACTION="REBASE"
+                elif [ -f "$GIT_GIT/rebase-apply/applying" ]; then
+                    GIT_ACTION="AM"
+                else
+                    GIT_ACTION="AM/REBASE"
+                fi
+            elif [ -f "$GIT_GIT/MERGE_HEAD" ]; then
+                GIT_ACTION="MERGING"
+            elif [ -f "$GIT_GIT/BISECT_LOG" ]; then
+                GIT_ACTION="BISECTING"
+            fi
+	fi
+
+	if [ ! -z "$GIT_ACTION" ]; then
+	    GIT_ACTION="|"$GIT_ACTION
+	fi
+
+    fi
+
+}
+
+###############################################################################
+# Composes prompt.
+function setps1 {
+
+    # Help message.
+#    local USAGE="Usage: setps1 [none] [screen=<0|1>] [user=<0|1>] [dir=<0|1|2>] [git=<0|1>] [wrap=<0|1>] [which-python=<0|1>]"
+
+    if [[ (-z $@) || ($@ == "*-h*") || ($@ == "*--h*") ]]
+    then
+        echo $USAGE
+        return
+    fi
+
+    # Prompt colors.
+    local CLEAR="\[\033[0m\]"
+    local STY_COLOR='\[\033[1;37;41m\]'
+    local PROMPT_COLOR='\[\033[1;94m\]'
+    local USER_HOST_COLOR='\[\033[1;30m\]'
+    local PROMPT_DIR_COLOR='\[\033[1;94m\]'
+    local GIT_LEADER_COLOR='\[\033[1;30m\]'
+    local GIT_BRANCH_COLOR=$CLEAR'\[\033[1;90m\]\[\033[4;90m\]'
+    local GIT_HEAD_COLOR=$CLEAR'\[\033[1;32m\]'
+    local GIT_STATE_COLOR=$CLEAR'\[\033[1;31m\]'
+
+    # Hostname-based colors in prompt.
+    if [[ $HOSTNAME != $PRIMARYHOST ]]
+    then
+        USER_HOST_COLOR=$REMOTE_USER_HOST_COLOR
+    fi
+
+    # Start with empty prompt.
+    local PROMPTSTR=""
+
+    # Set screen session id.
+    if [[ $@ == *screen=1* ]]
+    then
+        ## Decorate prompt with indication of screen session ##
+        if [[ -z "$STY" ]] # if screen session variable is not defined
+        then
+            local SCRTAG=""
+        else
+            local SCRTAG="$STY_COLOR(STY ${STY%%.*})$CLEAR" # get screen session number
+        fi
+    fi
+
+    # Set user@host.
+    # if [[ $@ == *user=1* ]]
+    # then
+    #      PROMPTSTR=$PROMPTSTR"$USER_HOST_COLOR\\u@\\h$CLEAR"
+    # fi
+
+    # Set directory.
+    if [[ -n $PROMPTSTR && ($@ == *dir=1* || $@ == *dir=2*) ]]
+    then
+            PROMPTSTR=$PROMPTSTR"$PROMPT_COLOR:"
+    fi
+
+    if [[ $@ == *dir=1* ]]
+    then
+        #PROMPTSTR=$PROMPTSTR"$PROMPT_DIR_COLOR\W$CLEAR"
+        PROMPTSTR=$PROMPTSTR"$PROMPT_DIR_COLOR\$GIT_REPO$CLEAR"
+    elif [[ $@ == *dir=2* ]]
+    then
+        PROMPTSTR=$PROMPTSTR"$PROMPT_DIR_COLOR\$(pwd -P)$CLEAR"
+    fi
+
+#     if [[ $@ == *dir=1* ]]
+#     then
+#         PROMPTSTR=$PROMPTSTR"$PROMPT_DIR_COLOR\W$CLEAR"
+#     elif [[ $@ == *dir=2* ]]
+#     then
+#         PROMPTSTR=$PROMPTSTR"$PROMPT_DIR_COLOR\w$CLEAR"
+#     fi
+#
+    # Set git.
+    if [[ $@ == *git=1* ]]
+    then
+        PROMPT_COMMAND="$STANDARD_PROMPT_COMMAND && _set_git_envar_info"
+        PROMPTSTR=$PROMPTSTR"$BG_COLOR$GIT_LEADER_COLOR\$GIT_LEADER$GIT_BRANCH_COLOR"
+        PROMPTSTR=$PROMPTSTR"\$GIT_BRANCH$GIT_HEAD_COLOR\$GIT_HEAD$GIT_STATE_COLOR\$GIT_STATE\$GIT_ACTION$CLEAR"
+    else
+        PROMPT_COMMAND=$STANDARD_PROMPT_COMMAND
+    fi
+
+    # Set wrap.
+    if [[ $@ == *wrap=1* ]]
+    then
+        local WRAP="$CLEAR\n"
+    else
+        local WRAP=""
+    fi
+
+    # Set wrap.
+    if [[ $@ == *which-python=1* ]]
+    then
+        local WHICHPYTHON="$CLEAR\n(python is '\$(which python)')$CLEAR\n"
+    else
+        local WHICHPYTHON=""
+    fi
+
+    # Finalize.
+    if [[ -z $PROMPTSTR || $@ == none ]]
+    then
+        PROMPTSTR="\$ "
+    else
+        PROMPTSTR="$TITLEBAR\n$SCRTAG${PROMPT_COLOR}[$CLEAR$PROMPTSTR$PROMPT_COLOR]$WRAP$WHICHPYTHON$PROMPT_COLOR\$$CLEAR "
+    fi
+
+    # Set.
+    PS1="\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]$PROMPTSTR"
+    PS2='> '
+    PS4='+ '
+}
+
+alias setps1-long='setps1 screen=1 user=1 dir=2 git=1 wrap=1'
+alias setps1-short='setps1 screen=1 user=1 dir=1 git=1 wrap=0'
+alias setps1-default='setps1-short'
+alias setps1-plain='setps1 screen=0 user=0 dir=0 git=0 wrap=0'
+alias setps1-nogit='setps1 screen=0 user=1 dir=1 git=0 wrap=0'
+alias setps1-local-long='setps1 screen=1 user=0 dir=2 git=1 wrap=1'
+alias setps1-local-short='setps1 screen=0 user=0 dir=1 git=1 wrap=0'
+alias setps1-local='setps1-local-short'
+alias setps1-dev-short='setps1 screen=0 user=0 dir=1 git=1 wrap=0 which-python=1'
+alias setps1-dev-long='setps1 screen=0 user=1 dir=2 git=1 wrap=0 which-python=1'
+alias setps1-dev-remote='setps1 screen=0 user=1 dir=1 git=1 wrap=0 which-python=1'
+if [[ "$HOSTNAME" = "$PRIMARYHOST" ]]
+then
+    setps1 screen=0 user=0 dir=1 git=1 wrap=0 which-python=0
+else
+    setps1 screen=1 user=1 dir=1 git=1 wrap=0 which-python=0
+fi