summaryrefslogtreecommitdiff
path: root/plugins/branch/branch.plugin.zsh
blob: dd5871fdc3b3ff7c7d037bdb67c2e79fecdec9e6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# Branch: displays the current Git or Mercurial branch fast.
# Victor Torres <vpaivatorres@gmail.com>
# Oct 2, 2015

function branch_prompt_info() {
  # Start checking in current working directory
  local branch="" dir="$PWD"
  while [[ "$dir" != '/' ]]; do
    # Found .git directory
    if [[ -d "${dir}/.git" ]]; then
      branch="${"$(<"${dir}/.git/HEAD")"##*/}"
      echo '±' "${branch:gs/%/%%}"
      return
    fi

    # Found .hg directory
    if [[ -d "${dir}/.hg" ]]; then
      if [[ -f "${dir}/.hg/branch" ]]; then
        branch="$(<"${dir}/.hg/branch")"
      else
        branch="default"
      fi

      if [[ -f "${dir}/.hg/bookmarks.current" ]]; then
        branch="${branch}/$(<"${dir}/.hg/bookmarks.current")"
      fi

      echo '☿' "${branch:gs/%/%%}"
      return
    fi

    # Check parent directory
    dir="${dir:h}"
  done
}