]> git.phdru.name Git - dotfiles.git/commitdiff
bash: Move code related to prompt to `admin/prog/bash_prompt`
authorOleg Broytman <phd@phdru.name>
Fri, 12 Jun 2020 18:11:27 +0000 (21:11 +0300)
committerOleg Broytman <phd@phdru.name>
Fri, 12 Jun 2020 18:11:27 +0000 (21:11 +0300)
.bash_prompt [deleted file]
.profile
admin/prog/bash_prompt

diff --git a/.bash_prompt b/.bash_prompt
deleted file mode 100644 (file)
index 609f19f..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-#!/bin/bash
-
-# bash_prompt; adapted from
-# https://github.com/necolas/dotfiles/blob/master/shell/bash_prompt and
-# http://vitus-wagner.livejournal.com/1176589.html?thread=40146189#t40146189
-
-prompt_git() {
-    local s=""
-    local branchName=""
-
-    # check if the current directory is in a git repository
-    if [ $(git rev-parse --is-inside-work-tree &>/dev/null; printf "%s" $?) == 0 ]; then
-
-        # check if the current directory is in .git before running git checks
-        if [ "$(git rev-parse --is-inside-git-dir 2> /dev/null)" == "false" ]; then
-
-            # ensure index is up to date
-            #git update-index --really-refresh -q &>/dev/null
-
-            # check for uncommitted changes in the index
-            if ! $(git diff --quiet --ignore-submodules --cached); then
-                s="$s+";
-            fi
-
-            # check for unstaged changes
-            if ! $(git diff-files --quiet --ignore-submodules --); then
-                s="$s!";
-            fi
-
-            # check for untracked files
-            if [ -n "$(git ls-files --others --exclude-standard)" ]; then
-                s="$s?";
-            fi
-
-            # check for stashed files
-            if $(git rev-parse --verify refs/stash &>/dev/null); then
-                s="$s$";
-            fi
-
-        fi
-
-        # get the short symbolic ref
-        # if HEAD isn't a symbolic ref, get the short SHA
-        # otherwise, just give up
-        branchName="$(git symbolic-ref --quiet --short HEAD 2> /dev/null || \
-                      git rev-parse --short HEAD 2> /dev/null || \
-                      printf "(unknown)")"
-
-        [ -n "$s" ] && s=" [$s]"
-
-        printf "%s" "$1$branchName$s"
-    else
-        return
-    fi
-}
-
-set_prompts() {
-    local black=""
-    local blue=""
-    local bold=""
-    local cyan=""
-    local dim=""
-    local green=""
-    local orange=""
-    local magenta=""
-    local red=""
-    local reset=""
-    local white=""
-    local yellow=""
-
-    local dim_black=""
-    local dim_blue=""
-    local dim_bold=""
-    local dim_cyan=""
-    local dim_green=""
-    local dim_orange=""
-    local dim_magenta=""
-    local dim_red=""
-    local dim_white=""
-    local dim_yellow=""
-
-    local charStyle=""
-    local gitStyle=""
-    local hostStyle=""
-    local userStyle=""
-    local wdirStyle=""
-
-    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
-        tput sgr0 # reset colors
-
-        bold=$(tput bold)
-        dim=$(tput dim)
-        reset=$(tput sgr0)
-
-        black=$(tput setaf 0)
-        blue=$(tput setaf 4)
-        cyan=$(tput setaf 6)
-        green=$(tput setaf 2)
-        orange=$(tput setaf 3)
-        magenta=$(tput setaf 5)
-        red=$(tput setaf 1)
-        white=$bold$(tput setaf 7)
-        yellow=$(tput setaf 3)
-
-        dim_black=$dim$black
-        dim_blue=$dim$blue
-        dim_cyan=$dim$cyan
-        dim_green=$dim$green
-        dim_orange=$dim$orange
-        dim_magenta=$dim$magenta
-        dim_red=$dim$red
-        dim_white=$dim$white
-        dim_yellow=$dim$yellow
-    else
-        bold=""
-        dim=""
-        reset="\e[0m"
-
-        black="\e[0;30m"
-        blue="\e[0;34m"
-        cyan="\e[0;36m"
-        green="\e[0;32m"
-        orange="\e[0;33m"
-        magenta="\e[0;35m"
-        red="\e[0;31m"
-        white="\e[0;37m"
-        yellow="\e[0;33m"
-
-        dim_black="\e[1;30m"
-        dim_blue="\e[1;34m"
-        dim_cyan="\e[1;36m"
-        dim_green="\e[1;32m"
-        dim_orange="\e[1;33m"
-        dim_magenta="\e[1;35m"
-        dim_red="\e[1;31m"
-        dim_white="\e[1;37m"
-        dim_yellow="\e[1;33m"
-    fi
-
-    charStyle="$reset$bold$black"
-    gitStyle="\[$white\]on \[$magenta\]"
-    case "$BACKGROUND" in
-       DARK|dark)
-          hostStyle="$reset$cyan"
-       ;;
-       LIGHT|light)
-          hostStyle="$reset$blue"
-       ;;
-    esac
-    wdirStyle="$reset$green"
-
-
-    # logged in as root
-    if [[ "$USER" == "root" ]]; then
-        userStyle="$bold$red"
-    else
-        userStyle="$orange"
-    fi
-
-    # build the prompt
-    # display the user, host and current working directory in the terminal title
-    case "$TERM" in
-       *rxvt*|screen*|*term*|vt100)
-          PS1="\[\033]0;\u@\h:\w\007\]"
-          case "$TERM" in
-             screen*)
-                PS1+="\[\033k\u@\h:\w\033\\\]" # Set screen/tmux caption
-             ;;
-          esac
-       ;;
-
-       *)
-          PS1=""
-       ;;
-    esac
-
-    #PS1+="\n" # newline
-    PS1+="\[$userStyle\]\u" # username
-    PS1+="\[$charStyle\]@"
-    PS1+="\[$hostStyle\]\h " # host
-    #PS1+="\[$charStyle\]: "
-    PS1+="\[$wdirStyle\]\W " # working directory
-    PS1+='`erco=$?; [ $erco == 0 ] && echo -n ":)" || echo -n '"\"\[$red\]:(\[$reset\] $\""'?=$erco` '
-    PS1+="\$(prompt_git \"$gitStyle\")" # git repository details
-    #PS1+="\n"
-    PS1+="\[$charStyle\]\$ \[$reset\]" # $ (and reset color)
-
-    export PS1
-}
-
-set_prompts
-unset set_prompts
index 008efd533d064cc23923f435759964ff65c572ac..69491d008216d3d0b20d0a37d316b529e96382bd 100644 (file)
--- a/.profile
+++ b/.profile
@@ -175,30 +175,15 @@ if [ -t 0 ] ; then
    fi
 
    if test -n "$BASH_VERSION"; then
-      # display the user, host and current working directory
-      # in the terminal title
-      case "$TERM" in
-         *rxvt*|screen*|*term*|vt100)
-            OPS1="\[\033]0;${debian_chroot:+($debian_chroot)}\u@\h:\w\007\]"
-            case "$TERM" in
-               screen*)
-                  OPS1=${OPS1}"\[\033k${debian_chroot:+($debian_chroot)}\u@\h:\w\033\\\\\]" # Set screen/tmux caption
-               ;;
-            esac
-         ;;
-
-         *)
-            OPS1=""
-         ;;
-      esac
+      . "$ENV"
 
       if [ -r "$HOME"/admin/prog/bash_prompt ]; then
          . "$HOME"/admin/prog/bash_prompt
-         OPS1=${OPS1}"${debian_chroot:+($debian_chroot)}\u@\${HOSTNAME::5}:\`short_curdir\` \\$"
+         set_prompts
+         unset set_prompts
       else
-         OPS1=${OPS1}"${debian_chroot:+($debian_chroot)}\u@\h:\W \\$"
+         OPS1="${debian_chroot:+($debian_chroot)}\u@\h:\W \\$"
       fi
-      . "$ENV"
 
    else
       OPS1="${debian_chroot:+($debian_chroot)}`/usr/bin/whoami`@`/bin/hostname -s` >"
index 315543d1d7507fee16757060f63ee7084ba36503..a262e5e4bd32ce65a1a155ac9e6c7c2ff01ac0f5 100644 (file)
@@ -1,3 +1,11 @@
+cgmem_which_prompt() {
+   local _cgmem_which
+   _cgmem_which="`cgmem_which 2>/dev/null`"
+   if [ -n "$_cgmem_which" ]; then
+      echo "[$_cgmem_which] "
+   fi
+}
+
 short_curdir() {
    if [ "$PWD" = / ]; then
       echo /
@@ -14,3 +22,83 @@ short_curdir() {
    fi
    echo "${_short_curdir}"
 }
+
+# bash_prompt; adapted from
+# https://github.com/necolas/dotfiles/blob/master/shell/bash_prompt and
+# http://vitus-wagner.livejournal.com/1176589.html?thread=40146189#t40146189
+
+prompt_git() {
+    local s=""
+    local branchName=""
+
+    # check if the current directory is in a git repository
+    if git rev-parse --is-inside-work-tree &>/dev/null; then
+
+        # check if the current directory is in .git before running git checks
+        if [ "$(git rev-parse --is-inside-git-dir 2> /dev/null)" == "false" ]; then
+
+            # ensure index is up to date
+            #git update-index --really-refresh -q &>/dev/null
+
+            # check for uncommitted changes in the index
+            if ! $(git diff --quiet --ignore-submodules --cached); then
+                s="$s+";
+            fi
+
+            # check for unstaged changes
+            if [ -n "$(git ls-files --modified)" ]; then
+                s="$s!";
+            fi
+
+            # check for untracked files
+            if [ -n "$(git ls-files --others --exclude-standard)" ]; then
+                s="$s?";
+            fi
+
+            # check for stashed files
+            if $(git rev-parse --verify refs/stash &>/dev/null); then
+                s="$s$";
+            fi
+
+        fi
+
+        # get the short symbolic ref
+        # if HEAD isn't a symbolic ref, get the short SHA
+        # otherwise, just give up
+        branchName="$(git symbolic-ref --quiet --short HEAD 2> /dev/null || \
+                      git rev-parse --short HEAD 2> /dev/null || \
+                      printf "(unknown)")"
+
+        [ -n "$s" ] && s=" [$s]"
+        printf "%s" "$branchName$s "
+    fi
+}
+
+set_prompts() {
+      OPS1=''
+      # display the user, host and current working directory
+      # in the terminal title
+      case "$TERM" in
+         *rxvt*|screen*|*term*|vt100)
+            OPS1+="\[\033]0;${debian_chroot:+($debian_chroot)}\u@\h:\w\007\]"
+            case "$TERM" in
+               screen*)
+                  OPS1+="\[\033k${debian_chroot:+($debian_chroot)}"
+                  OPS1+="\u@\h:\w\033\\\\\]" # Set screen/tmux caption
+               ;;
+            esac
+         ;;
+
+         *)
+            OPS1=""
+         ;;
+      esac
+
+   OPS1+="${debian_chroot:+($debian_chroot)}"
+   OPS1+="\`cgmem_which_prompt\`\u@\${HOSTNAME::5}:\`short_curdir\` "
+   OPS1+="\$(prompt_git)"
+   OPS1+="\\$"
+}
+
+#set_prompts
+#unset set_prompts