/ env / nodez.theme.bash
nodez.theme.bash
 1  # Author: Michael Bradley (https://github.com/michaelsbradleyjr)
 2  # Based on the zork theme:
 3  # https://github.com/Bash-it/bash-it/blob/master/themes/zork/zork.theme.bash
 4  
 5  SCM_THEME_PROMPT_PREFIX=""
 6  SCM_THEME_PROMPT_SUFFIX=""
 7  
 8  SCM_THEME_PROMPT_DIRTY=" ${bold_red}✗${normal}"
 9  SCM_THEME_PROMPT_CLEAN=" ${bold_green}✓${normal}"
10  SCM_GIT_CHAR="${bold_green}±${normal}"
11  SCM_SVN_CHAR="${bold_cyan}⑆${normal}"
12  SCM_HG_CHAR="${bold_red}☿${normal}"
13  
14  __nodez_char_node="${bold_green}🄽 ${normal}"
15  __nodez_char_npm=📦
16  
17  __nodez_ne() {
18      local env=
19      if [[ -v NVM_DIR ]]; then
20          env="nvm"
21      fi
22      if [[ -v NODE_VIRTUAL_ENV ]]; then
23          env="${NODE_VIRTUAL_ENV##*/}"
24      fi
25      if [[ "$env" != "" ]]; then
26          env="[${bold_yellow}$env${normal}"
27          if [[ ! -v NODE_VERSION ]]; then
28              env+="]"
29          fi
30          echo "$env"
31      fi
32  }
33  
34  __nodez_nv() {
35      if [[ -v NODE_VERSION ]]; then
36          local nv="=${__nodez_char_node}${NODE_VERSION}"
37          local npm_version=$(npm --version)
38          if [[ "$npm_version" != "$NPM_VERSION" ]]; then
39              export NPM_VERSION=$npm_version
40          fi
41          nv+="${__nodez_char_npm}${NPM_VERSION}]"
42          echo "$nv"
43      fi
44  }
45  
46  __nodez_scm_prompt() {
47      [[ $(scm_char) != $SCM_NONE_CHAR ]] \
48          && echo "[$(scm_char)][$(scm_prompt_info)]"
49  }
50  
51  case $TERM in
52      xterm*)
53          __nodez_title="\[\033]0;\w\007\]" ;;
54      *)
55          __nodez_title="" ;;
56  esac
57  
58  __nodez_ve(){
59      [[ -n "$VIRTUAL_ENV" ]] \
60          && echo "(${bold_purple}${VIRTUAL_ENV##*/}${normal})"
61  }
62  
63  prompt() {
64      local host="${green}\h${normal}";
65      PS1="${__nodez_title}┌─"
66      PS1+="$(__nodez_ve)"
67      PS1+="[$host]"
68      PS1+="$(__nodez_ne)$(__nodez_nv)"
69      PS1+="$(__nodez_scm_prompt)"
70      PS1+="[${cyan}\\w${normal}]"
71      PS1+="
72  └─▪ "
73  }
74  
75  PS2="└─▪ "
76  PS3=">> "
77  
78  safe_append_prompt_command prompt